Home
zz9z9
Cancel

MSA 기반의 회사 프로젝트에 단위 테스트 코드 적용하기

들어가기 전 부끄러운 얘기지만 내가 회사에서 경험했던 프로젝트에는 테스트 코드가 없었다. 제작 당시 테스트 코드 작성에 대한 얘기가 아예 나오지 않았던 것은 아니지만, 당시 여론은 ‘제작 기간 맞추기도 쉽지 않은데 언제 그걸 하고 앉아있냐’라는 의견이 주를 이뤘다. 나 또한 테스트 코드의 중요성에 대해 잘 알지 못했고, 빡빡한 제작기간으로 인해 밥...

MSA 환경에서 테스트하기(2) - 통합 테스트

※ 해당 내용은 ‘마이크로서비스 패턴(크리스 리처드슨)’ 10장을 읽고 필요한 부분을 정리한 내용입니다. 서비스가 서로 올바르게 상호 작용하는지에 대해서는 단위 테스트만으로는 확인할 수 없다. 예를 들어, 실제 DB에 저장을 했는지, 커맨드 메세지를 올바른 포맷으로, 올바른 채널에 전송했는지 등에 대한 부분이다. 이를 위해, 서비스를 전부 띄워...

MSA 환경에서 테스트하기(1) - 단위 테스트

※ 해당 내용은 ‘마이크로서비스 패턴(크리스 리처드슨)’ 9장을 읽고 필요한 부분을 정리한 내용입니다. 테스트 개요 자동화 테스트 작성 설정 → 실행 → 확인 → 정리 설정 - SUT(System Under Test, 테스트할 대상)와 그 디펜던시로 구성된 테스트 픽스처(test fixture)를 초기화한다. 실행 - SUT 호...

엔티티에서 데이터베이스 키워드/예약어 사용시 발생하는 문제

상황 주문 테이블에 맵핑되는 엔티티를 만들기 위해 ‘Order’라는 클래스 생성 @Getter @Setter @Entity public class Order { @Id private Long id; private OrderStatus orderStatus; } 스프링 부트 실행하고 h2 db에 테이블 생성되...

엔티티에 있는 enum 타입 필드를 DB 컬럼에 어떻게 맵핑시킬 수 있을까 ?

예를 들어 주문 엔티티의 ‘주문 상태’와 같이 enum 타입으로 선언하기 적합한 필드들이 있다. 문자열, 숫자, 날짜 등도 아닌 enum 타입은 DB에 어떻게 저장시켜야할까 ? @Enumerated 1. EnumType.ORDINAL @Enumerated(EnumType.ORDINAL)을 사용하게되면 JPA는 ENUM 클래스의 ord...

WEB - HTTP의 연결모델

connection management allows considerable boosting of performance in HTTP Short-lived connections HTTP 통신을 한 번 할 때마다 TCP에 의해 연결/종료 된다. 따라서, 매 통신 마다 새로운 연결을 맺어야한다. 초기 통신에서는 작은 사이즈의 ...

Message Broker 비교해보기

‘나만의 웨딩 플래너’라는 MSA 기반의 토이 프로젝트를 진행하는데 필요한 Message Broker를 선택하기 위해 몇 가지 Message Broker에 대해 알아보고 결정하자 RabbitMQ 2007년에 출시되었으며 가장 먼저 만들어진 메시지 브로커 중 하나이다. Erlang으로 개발되었으며, Erlang은 기본적으로 Erla...

WEB - HTTP의 stateless한 특징과 쿠키, 세션

쿠키와 세션을 비교하며 특징을 외우기는 했지만, 정작 나오게된 배경에 대해서는 크게 생각해보지 않았던 것 같다. 이번 포스팅을 통해 쿠키, 세션이 나오게 된 배경인 HTTP의 무상태성과 쿠키, 세션의 특징에 대해 정리해보자. HTTP의 특징 - Stateless HTTP의 대표적인 특징 중 하나는 상태를 갖지 않는다(Stateles...

API Gateway 비교해보기

‘나만의 웨딩 플래너’라는 MSA 기반의 토이 프로젝트를 진행하는데 필요한 API Gateway를 만들기 위해 어떤 프레임워크를 선택해야할지 몇 가지 API Gateway 프레임워크에 대해 알아보고 결정하자 API Gateway 역할 대표적인 역할 몇 가지를 살펴보자 요청 라우팅 요청을 HTTP 메서드, 경로에 따...

간단한 웹 서버 구현하기

들어가기 전 『자바 웹 프로그래밍 Next Step』 4장에 나와있는 웹 서버 요구사항들을 구현해보았다. 구현하기 전, 스스로 아래와 같은 사항을 다짐하고 진행해봤다. 최대한 책에 나온 힌트를 보지 않고 해결해보자. 반드시 테스트 코드를 작성하자. 빠르게 구현하는 것 보다 중요한건 코드 한 줄 한 줄의 의미를 제대로 아는 것. 의...