본문 바로가기

Spring Framework/스프링18

스프링 STOMP 개념, 구조 및 실시간 기능 구현하기 (웹소켓) 안녕하세요, 스코리아입니다.오늘은 STOMP의 개념 및 구조를 알아보고 스프링에서 STOMP를 활용하여 실시간 기능을 구현하는 방법에 대해 알아보겠습니다.STOMP를 접하게 된 계기저는 스프링 STOMP를 대학교 팀 프로젝트 과제를 통해 처음 알게 되었습니다.대학교 2학년 과목 중 '네트워크 및 프로그래밍' 과목이 있는데요. 팀 프로젝트로 실시간 소켓을 이용한 서비스 하나를 만드는 과제가 있었는데, 저희 조는 웹소켓을 이용하여 실시간 플레이리스트를 만들 수 있는 웹사이트를 개발하였습니다.과제의 목적이 '실시간 소켓 통신'이었기 때문에 제가 기존에 공부했던 스프링을 사용하되, DB의 활용 (JPA)은 줄이고, 웹소켓의 비중을 높이는 게 목표였습니다. 처음에는 기본적인 DB 통신은 스프링에서 처리하되 (AP.. 2024. 12. 16.
스프링 AWS SES 이메일 인증 시스템 구축 방법 (+Redis) 안녕하세요, 스코리아입니다.오늘은 스프링 AWS SES와 Redis를 이용하여 이메일 인증 시스템을 구축해 보겠습니다.  AWS SES란? (+사용하게 된 이유)AWS SES는 Sample Email Service의 약자로, AWS의 이메일 전송 서비스입니다. SES는 마케팅, 프로모션, 이메일 인증 등 다양한 목적으로 사용이 되고, 프리티어 기준 매일 2000 통가량을 보낼 수 있습니다. 일일 한도의 경우, 사유와 함께 AWS에 요청을 하면 늘려주고 있습니다. AWS SES는 대량의 메일을 한 번에 전송해도 문제없을 뿐만 아니라 이메일 수와 데이터 전송에 대한 요금만 부과되기 때문에 저렴하고 효율적인 비용으로 이용이 가능합니다. 저의 경우, 현재 진행하고 있는 프로젝트가 추후 크게 확장될 수 있다는 생.. 2024. 9. 3.
스프링 application.yml 파일 dev, prod, secret 환경 설정 분리방법 안녕하세요, 스코리아입니다.오늘은 스프링에서 application.yml 파일을 dev, prod 프로필 환경으로 분리하고 secret 파일을 설정하는 방법에 대해서 자세히 알아보겠습니다. Prod, Dev 분리 이유단 하나의 application.yml 파일로 스프링 개발(Dev)을 진행하고 있다고 생각해 봅시다.만약 Production을 할 때가 왔을 때, application.yml를 Prod에 맞게 수정하고 배포한 후에 추후 다시 Dev 환경에서 개발하고 싶다면, 또 application.yml 파일을 수정해야 할 텐데, 이는 매우 번거로울 것입니다:) 즉, 각 환경(Prod, Dev, Test)에서는 서로 다른 설정값(DB URL, API KEY..)들이 필요로 하는데, 이런 설정값들을 파일을 .. 2024. 8. 26.
스프링 IP주소 Auditing 적용/구현 (Spring Data JPA) 안녕하세요, 스코리아입니다.오늘은 스프링 Data JPA를 이용하여 IP 주소를 Auditing(추적)하는 방법에 대해서 알아보겠습니다. JPA Auditing이 무엇이고, 기본적인 Auditing 세팅 방법 및 '생성일시, 생성자, 수정일시, 수정자'를 Auditing 하는 방법이 궁금하시다면, 아래 포스팅을 꼭 읽어보시기 바랍니다![이전 내용] 스프링 Data JPA: Auditing 적용 방법 : 바로가기 스프링 Data JPA: Auditing 적용 방법 [Kotlin]안녕하세요, 스코리아입니다. 오늘은 스프링 Data JPA의 Auditing을 적용하는 방법에 대해서 알아보겠습니다. 언어는 코틀린(Kotlin)으로 진행하겠습니다. JPA Auditing 소개 어원적인 "Auditing"은 감사,.. 2024. 8. 16.
스프링 MVC 패턴 의미와 구조 [정리] 안녕하세요, 스코리아입니다.오늘은 스프링 MVC 패턴의 의미와 구조에 대해서 살펴보겠습니다. MVC 패턴 의미MVC는 Model View Controller의 줄임말애플리케이션 개발 영역을 Model, View, Controller로 구분해서 역할에 맞게 개발하는 방식MVC 패턴 이전에는 뷰 안에 비즈니스 로직이 있는 등, 한 곳에 모든 것을 짬뽕한 느낌이었다면, MVC 패턴 도입 후에는 UI(뷰) 영역과 비즈니스 로직이 명확하게 구분되어 개발과 유지보수가 편리해짐Model: 뷰에 출력할 데이터를 담아줌View:  뷰는 비즈니스 로직이나 데이터 접근을 몰라도 되며, 모델에 담겨 있는 데이터를 이용하여 화면 렌더링에 집중Controller: HTTP 요청을 받아서 파라미터 검증 -> 비즈니스 로직 실행 -.. 2024. 8. 9.
스프링 AWS S3 이미지/파일 업로드 방법 안녕하세요, 스코리아입니다.오늘은 스프링에서 AWS S3를 이용해서 이미지 업로드 하는 방법에 대해서 알아보겠습니다.  왜 AWS S3를 사용할까? (feat. 도입 이유)현재 제가 진행 중인 프로젝트에 사진 업로드 로직이 존재하였는데, 저장 위치가 로컬이었습니다.이후 CI/CD를 적용하고, 외부 서버에 배포를 진행하면서, 사진이 쌓이면 쌓일수록 빌드파일 크기가 늘어난다는 것을 확인했습니다. (비효율적)또한 나중에 서비스가 커져서 로드밸런싱을 진행해야 할 경우가 생기면, 각 서버마다 저장되어 있는 사진이 다르기 때문에 문제가 될 것 같았습니다. 따라서 파일을 저장할 스토리지가 따로 있으면 유용할 것 같았습니다.Amazon S3는 확장성, 데이터 가용성, 보안과 성능을 제공하는 객체 스토리지 서버스입니다... 2024. 7. 30.
(4) Jenkins 스프링 무중단 CI/CD 배포 구현 - Slack 연동 안녕하세요, 스코리아입니다.오늘은 Jenkins를 이용한 스프링 무중단 CI/CD 배포, 네 번째 시간: Slack 연동에 대한 포스팅입니다.목차(1) Jenkins 소개 및 Docker에 Jenkins 설치 : 바로가기(2) Jenkins에 Github 연동 + credentials 파일(application-prod.yml) 추가 + gradle 설치 : 바로가기(3) Jenkins 빌드 Item 추가 + Docker, Jenkins 설정 파일 작성 + Nginx 로드밸런싱 설정 : 바로가기(4)  Jenkins와 Slack 연동 Slack - 워크페이스 생성1. Slack 앱의 왼쪽 위, 자신의 아이콘을 누르면 보이는 '워크페이스 추가'를 누르고, '새 워크페이스 개설'을 클릭합니다.2. 자신의 S.. 2024. 7. 20.