STOVE DEVCAMP 3기/알림 서비스
-
[알림 서비스] 테스트 코드 작성STOVE DEVCAMP 3기/알림 서비스 2023. 3. 10. 04:20
테스트 코드 작성 규칙을 세워 알림 서비스 구현 시 단위 테스트 코드 작성을 수행함 📌 어느 부분을 작성했는지 알림 서비스 구현 시 클린 아키텍처를 도입하여 아래와 같이 구성함 - 참고) 클린 아키텍처 도입 따라서 패키지 구조는 다음과 같음 헥사고날 아키텍처를 기반으로 비즈니스 로직을 포함한 내부 영역과 외부 영역을 분리하였고, 이를 기반으로 단위 테스트 코드 작성 부분은 아래의 3가지로 설정함 adapter/in 패키지의 Web Adatper adapter/out 패키지의 Persistence Adapter application 패키지의 Service 📌 어떤 방식으로 작성했는지 공통 Given-When-Then 패턴 사용 테스트 코드를 작성하는 표현 방식 중 하나임 Given : 테스트 하기 위해 기..
-
[알림 서비스] 클린 아키텍처STOVE DEVCAMP 3기/알림 서비스 2023. 3. 10. 03:35
1) '좋은 아키텍처란 무엇일까?' 에 대해 고민하게 된 배경 코드의 가독성을 높이고 싶다. 백엔드 팀원들, 멘토님 등 해당 서비스 구현에 참여하지 않은 사람이 봤을 때 쉽게 구조를 파악할 수 있도록 하기 위함 확장성 있는 구조 및 코드를 작성 하고 싶다. 이번 데브캠프 기간동안의 개인 목표 중 하나로 '기존 선택 및 구현이 최선인지 고민하여 점진적으로 개선해나가는 태도 갖추기'를 선정함 이를 실현하기 위한 방안 중 하나가 현재 시스템 설계의 단점을 보완하고 확장 가능한 포인트를 찾아 이후 개선을 수행하는 것이라고 생각했음 이러한 점을 고려하면, 데이터베이스 등과 같은 외부 시스템에 의존하지 않고 쉽게 기능 및 구성을 확장할 수 있는 구조가 필요하다고 생각함 테스트코드 작성이 편리했으면 좋겠다. 이번 데..
-
[개념] Kafka 컨슈머STOVE DEVCAMP 3기/알림 서비스 2023. 3. 10. 03:17
Kafka 카프카는 처리량을 늘리기 위해 파티션 개수와 컨슈머 개수를 늘려서 운영할 수 있음 이때, 파티션과 컨슈머의 개수를 동일하게 맞추는 것이 좋은 카프카 운영법임 파티션의 데이터를 처리하는 방법으로 멀티 프로세스나 멀티 스레드 방식이 있음 데이터를 처리하는 주체는 컨슈머이므로, 컨슈머 쪽에서 해당 방식을 구현해야 함 컨슈머가 멀티 스레드 방식으로 데이터를 처리하는 2가지 방식이 존재함 1) 컨슈머 스레드 1개만 실행, 데이터 처리 담당 워크 스레드 여러 개 실행 2) 컨슈머에서 poll()을 호출하는 스레드를 여러 개 띄워 실행 메시지 브로커로부터 전달받은 레코드들을 병렬로 처리함 Java의 ExecutorService 라이브러리를 사용해 멀티 스레드를 효율적으로 생성하고 관리할 수 있음 하나의 파..
-
[개념] Kafka 리밸런싱STOVE DEVCAMP 3기/알림 서비스 2023. 3. 10. 03:17
## 컨슈머 그룹 카프카 프로듀서가 전송한 메시지는 토픽의 파티션에 나눠서 저장됨 파티션에 저장된 메시지들은 컨슈머들에 의해 읽혀짐 하나 이상의 카프카 컨슈머들은 '컨슈머 그룹'을 형성함 ## 카프카 리밸런싱 상황 프로듀서에서 생산하는 메시지를 하나의 컨슈머가 모두 처리하는 구조 컨슈머 쪽이 병목이 되어 카프카 파티션에 처리되지 않은 메시지가 쌓일 수 있음 이러한 지연은 데이터 파이프라인의 실시간성을 떨어뜨리고 결국 장애를 발생시킬 수 있음 개선 위와 같은 문제를 해결하기 위해 데이터 읽어가는 컨슈머 쪽의 스케일 아웃이 필요함 즉, 컨슈머 그룹의 컨슈머를 추가하여 데이터 처리량을 늘리는 작업임 컨슈머 그룹에 컨슈머가 추가되면, 컨슈머 그룹에 속한 컨슈머들이 토픽의 파티션들의 소유권을 나눠가지게 됨 이러한..