🗂️ 개인프로젝트/말랑말랑

[개인프로젝트/말랑말랑] 0. 프로젝트 개요

케로⸝⸝◜࿀◝ ⸝⸝ 2024. 6. 28. 10:29

프로젝트명

스프링 부트를 활용한 마이크로서비스 개발 <말랑말랑 두뇌교실>

 

개발 환경

  • Java 11, Java 17, Spring Boot 2, Spring Boot 3, JPA, JPQL
  • MySQL, H2
  • 유레카, 리본, 주울, 하이스트릭스, 큐컴버
  • Gradle, Docker

 

이번 프로젝트에서 다루는 내용

스프링 부트를 이용한 뼈대 만들기

잘 알려진 3계층 구조 패턴*에 따라 애플리케이션을 설계하고 구현하는 방법 알아보기

 

* 3계층 구조 패턴

사용자 인터페이스를 다루는 프레젠테이션 계층, 비즈니스 로직을 다루는 애플리케이션 계층, 데이터를 다루는 데이터 계층으로 나눠진 구조로 각 역할별로 계층을 분리함으로써 각 계층의 영향을 최소화하고 웹 디자이너, 개발자, DB 관리자가 분업하기에 유리하다.

 

테스트 주도 개발

  • 사전 요구사항을 구현하기 위해 TDD(Test-Driven Development)를 사용
  • TDD는 때때로 직장에서 사용할 수 없는 기법이긴 하지만(ㅋㅋㅋ) 코드를 작성하기 전에 테스트 코드를 먼저 작성하는 것이 왜 좋은지 확인해보기
  • AssertJMockito로 유용한 테스트를 효과적으로 작성해보기

 

마이크로서비스 연결하기

첫 번째 애플리케이션이 준비되면 기존 기능과 상호작용하는 두 번째 애플리케이션을 만든다. 그때부터 마이크로서비스 아키텍처가 된다! 애플리케이션 하나로 마이크로서비스의 장점을 이해할 수는 없다. 실제 시나리오는 항상 각 서비스가 기능 단위로 분리된 분산 시스템이다. 마이크로서비스로 전환하는 것이 사용자의 요구에 얼마나 적합한지 실습으로 확인한다!

 

다만, 이 프로젝트는 시스템을 분리하는 이유뿐 아니라 분리한 경우의 단점도 다룬다. 그리고 서비스의 디스커버리, API 게이트웨이, 로드 밸런싱 등 분리된 시스템이 아니라 전체로써 동작할 수 있게 도와주는 도구를 알아본다.

 

이벤트 중심 시스템

이벤트 중심 아키텍처는 추가적인 개념으로 마이크로서비스에 항상 포함되는 것은 아니다. 이 프로젝트에서는 이 아키텍처가 마이크로서비스에 매우 잘 맞기 때문에 사용할 것이고, 비동기적인 사고 방식을 통해 새로운 스타일의 코드를 설계할 수 있다. RabbitMQ를 사용한다.

 

엔드투엔드 테스트

일체형 애플리케이션은 엔드포인트가 하나만 존재하지만 마이크로서비스 애플리케이션은 서비스마다 엔드포인트를 갖기 때문에 엔드투엔드 테스트가 어렵다. 따라서, 마이크로서비스 아키텍처에서 가장 다루기 힘든 문제인 엔드투엔드 테스트를 어떻게 다루는지 알아보자. 많은 프로젝트에 완벽하게 적용할 수 있고, 비즈니스 요구사항과 테스트 환경의 차이를 메울 수 있는 큐컴버를 사용한다. 테스트 기반을 잘 만드는 것이 왜 중요한지 확인해보자!

 

 

스프링 부트를 활용한 마이크로 서비스 개발 | 모이세스 메이세로 - 교보문고

스프링 부트를 활용한 마이크로 서비스 개발 | 작은 일체형부터 여러 서비스를 결합한 이벤트 중심 아키텍처까지 스프링 부트 애플리케이션을 조금씩 발전시켜 나가면서 마이크로서비스 아키

product.kyobobook.co.kr

 

 

GitHub - wikibook/springboot-microservices: 《스프링 부트를 활용한 마이크로서비스 개발》 예제 코드

《스프링 부트를 활용한 마이크로서비스 개발》 예제 코드. Contribute to wikibook/springboot-microservices development by creating an account on GitHub.

github.com

반응형