[StudyWithMe] 프로젝트 전체 코드의 품질 향상을 위한 ListCheckUtils 적용
·
프로젝트/StudyWithMe
이번 포스팅에서는 깊은 내용을 다루는 것이 아니라,,,`StudyWithMe`의 코드 작성 간 리스트 안의 값 존재여부 확인 시 너무 많은 중복 코드가 생겨가독성 개선 및 중복 코드 제거를 위해 `ListCheckUtils`를 적용한 내용을 설명하려 한다.ListCheckUtils 도입 전 본래의 `StudyWithMe`에서는 `List` 객체의 `null or empty` 확인을 위해스터디 룸의 `생성`, `수정` 작업에서 아래 코드의 `if문` 형식이 굉장히 많이 반복되었다.  `ListCheckUtils` 도입 전 StudyRoomCommandService@Service@RequiredArgsConstructorpublic class StudyRoomCommandService { ... ..
[StudyWithMe] 스터디 윗 미 프로젝트에서 n8n 사용해보기
·
프로젝트/StudyWithMe
이번 포스팅에서는 `StudyWithMe` 프로젝트에서 `n8n`이 무엇인지. 그리고 사용하계 된 계기에 관해 설명하려고 한다. 같이 프로젝트를 진행하시는 백엔드분이 `n8n`을 소개해주셨는데 말이 안되는 `오픈소스`이다...(진짜 이걸로 못하는게 있을까 싶다..)  n8n이 뭘까? `n8n`은 아주아주 다양한 작업을 자동화할 수 있는 확장 가능한 워크플로우 도구이다. `nodemation`의 줄임말로, 노드 기반의 시각적 인터페이스를 통해 쉽게 워크플로우를 구성하고 실행할 수 있도록 도와준다. 기본적으로 `오픈소스`이지만 경쟁이 될 수 있는 클라우드 서비스를 만드는 것은 금지되어 있다. 그러나, 개인 또는 회사 내부에서 사용이 가능하다. n8n의 주요 특징 시각적 플로우 빌더(가독성이 좋다.) `n8n..
[StudyWithMe] 유저의 사업자 검수 요청을 처리하며 - 2
·
프로젝트/StudyWithMe
이전 포스팅에서는 유저의 사업자 검수 요청 요구사항에 관한 설명과이와 관련된 `ApplicationEventPublisher` 활용에 대해 설명했다. 2025.01.15 - [프로젝트/StudyWithMe] - [StudyWithMe] 유저의 사업자 검수 요청을 처리하며 - 1 [StudyWithMe] 유저의 사업자 검수 요청을 처리하며 - 1이번 포스팅 및 다음 포스팅에서는 유저의 사업자 검수 요청과 관련된`StudyWithMe` 프로젝트에서의 `ApplicationEventPublisher` 사용`ApplicationEventPublisher` 사용과 관련된 테스트 코드에서 `@Transactional`를hdbstn3055.tistory.com  이번 포스팅에서는 `ApplicationEventPub..
[StudyWithMe] 유저의 사업자 검수 요청을 처리하며 - 1
·
프로젝트/StudyWithMe
이번 포스팅 및 다음 포스팅에서는 유저의 사업자 검수 요청과 관련된`StudyWithMe` 프로젝트에서의 `ApplicationEventPublisher` 사용`ApplicationEventPublisher` 사용과 관련된 테스트 코드에서 `@Transactional`를 제거과정에 관해 설명하려고 한다.  ApplicationEventPublihser우선, `ApplicationEventPublisher`가 뭘까? `ApplicationEventPublisher`Spring의 `ApplicationContext`가 상속하는 인터페이스 중 하나디자인 패턴중 하나인 옵저버 패턴(Observer Pattern)의 구현체옵저버 패턴객체의 상태 변화를 관찰하는 옵저버들의 목록을 객체에 등록하고 상태 변화가 있을때..
[StudyWithMe] Async Thread Pool과 CompletableFuture
·
프로젝트/StudyWithMe
이번 포스팅에서는 `StudyWithMe`에서 `@Async`을 통한 비동기 작업과비동기 작업에 관한 `Thread Pool` 및 `CompletableFuture`에 관해 알아본 내용을 정리하려고 한다. 요약@Async 적용 이유CompletableFuture 사용 이유비동기 스레드 풀 1. @Async 적용 이유 처음 이메일 발송 로직을 아래와 같이 `@Async`를 적용하지 않고 동기적으로 작동하도록 작업했다. EmailService@Slf4j@Service@RequiredArgsConstructorpublic class EmailService { private static final String authCodeEmailTitle = "스터디 윗 미 인증코드"; private static..
[StudyWithMe] 스터디 윗 미 dev 무중단 배포
·
프로젝트/StudyWithMe
우선, 이번에 디자이너 1명과 프론트엔드 2명이 들어왔기에 원할한 개발을 위한 `dev`서버가 필요했다.  그렇기에 이번 포스팅에서는 `StudyWithMe`의 `dev` 서버의 무중단 배포에 관해 포스팅 하려고 한다.  무중단 CI/CD 아키텍처설명하기에 앞서 구축한 `CI/CD` 아키텍처는 다음과 같다.   미니PC 환경`StudyWithMe` 서버는 현재 같이 작업하시는 백엔드분의 미니PC에서 동작하고 있다. 현재 미니PC 서버의 동작 컴포넌트들80포트 사용 다용도 NGINXPortainer(웹 UI 기반 컨테이너 관리)내가 쓰는 건 아니고 다른 백엔드 분이 사용하신다.Private Docker Registry(프라이빗 도커 레지스트리)GrafanaPrometheus가 존재한다. 위에서 중점적으로 ..