Home
marshmel.log
Cancel

[Effective Java] 예외를 예외답게 사용하기

예외 처리 개발을 하다보면 예외처리에 대한 고민을 많이 하게된다. 어느 부분에서는 예외를 명시해서 던지기만 하고 어느 부분에서는 예외를 원하는 방식으로 처리한다. 프로그램의 가독성과 유지보수성, 신뢰성을 위한 올바른 예외처리를 알아본다. 예외처리에 대해 Effective java 책을 보고 정리한 내용이다. 예외는 진짜 예외 상황에만 사용하라 예...

kafka의 동작을 알아보자

업무 중 kafka consumer를 사용해서 데이터를 처리하는 부분이 필요했다. 팀원들과의 고민은 consumer 구현 위치를 어떤 repository에 둘 것인가에 대한 것이었다. 여러 선택지와 각각의 장단점을 고려해보면서 이번 기회에 kafka를 제대로 정리하면 좋겠다고 생각했다. Kafka의 구조 전체적인 kafka의 구조이다. produ...

[MSA 4] Maven Repository로 MSA 환경에서 DTO 공유하기(maven central)

maven central은 여러가지 dependency를 저장해 놓은 패키지 저장소이다. 프로젝트에 필요한 의존성을 import 하여 사용할 수 있다. MSA 환경에서 Maven repository의 필요성 MSA 환경에서는 DTO(Data Transfer Object)를 공유하게 되는 경우가 발생한다. 마이크로 서비스 간의 통신이나 이벤트 발생 ...

[MSA 3] Custom annotation과 AOP를 이용한 멱등성을 보장하는 알림 전송하기

알림 시스템 구조 [MSA 2] AWS SQS를 이용한 알림 시스템 설계 및 구현 알림 시스템은 위와 같이 구성되어 있다. 여러 micro service에서 이벤트가 발생하게 되면 SNS나 SQS에 메세지를 publish하게 된다. Notification service는 SQS에 담겨 있는 메세지를 polling 받아 알림을 전송하고 알...

[MSA 2] AWS SQS를 이용한 알림 시스템 설계 및 구현

프로젝트를 설계할 때는 알림 시스템을 간단하게 생각하고 설계했었다. 하지만 알림을 구현하기 시작하면서 재 설계의 필요성을 느꼈다. 알림 시스템의 요구사항 알림 템플릿 먼저 알림 시스템의 템플릿을 알아보자. 배송이 시작되었습니다. [알림 메세지] https://mypage [연관된 페이지] 알림 형태 수신자 ...

[MSA 1] spring cloud로 프로젝트 초기 세팅하기

MSA 아키텍처로 설계하기 아키텍처에는 대표적으로 monolithic, micro service architecture 가 있다. 클라이언트와 서버가 합쳐진 하나의 거대한 아키텍처이고, msa는 작고 독립된 서비스들로 구성된 아키텍처로 독립적인 배포와 서비스별로 다른 기술을 사용해도 되는 장점을 가지고 있다. 독립적 배포와 장애 확산을 줄일 수 있...

Vite 사용해보기

Vite 란?? Vite(프랑스어로 “빠르다(Quick)”를 의미하며, 발음은 “veet”와 비슷한 /vit/ 입니다.)는 빠르고 간결한 모던 웹 프로젝트 개발 경험에 초점을 맞춰 탄생한 빌드 도구이며, 두 가지 컨셉을 중심으로 하고 있습니다. 개발 시 네이티브 ES Module을 넘어 더욱 다양한 기능을 제공합니다. 가령, Ho...

AOP with java

AOP란?? AOP는 Aspect Oriented Programming으로 관점 지향 프로그래밍으로, Cross cutting concern(횡단 관심사)의 분리를 허용하여 모듈성을 증가시키는 것이 목적인 프로그래밍 방법론, 패러다임이다. 위키백과 Cross cutting concern (횡단 관심 모듈) 서비스의 비즈니스 로직을 포함하는...

[Effective Java] Generic에 대하여…

최근 JDBC를 이용해 정말 간단한 이커머스 CRUD를 개발하면서 팀원들과 제네릭 사용에 대해 많이 고민했다. 제네릭을 따로 정의해서 사용해본 경험이 거의 없었기 때문에 정확히 왜 사용하고 어떤 점에서 타입 안정성이 보장된다고 하는지 알고 싶어 Effective Java에 제네릭 부분을 읽고 정리하게 되었다. Generic이란? Java 5 부터 ...

[Effective Java] 싱글턴과 빌더 패턴

Effective Java를 읽으며 정리한 내용입니다. Builder 패턴 Builder는 spring boot에서 @Builder 어노테이션으로 많이 사용했었다. 이번 글에서는 lombok에서 제공되는 어노테이션이 아닌 직접 빌더 패턴을 만들어 본다. 생성자에 매개변수가 많다면 빌더를 고려하라 - item2 점층적 생성자 패턴 ...