스프링 | 서비스 개발 아키텍처와 TDD

Salt·2023년 5월 31일
post-thumbnail

3 Tier Architecture 스프링에서 가장 일반적으로 쓰이는 아키텍처
비즈니스로직 / DB 분리하기 때문에 확장성과 유지보수성이 좋다.

💡 ControllerServiceRepositoryquery 호출


TDD를 쓰는 이유

개발하기 전 설계 단계에서 테스트코드를 먼저 짜는 것이 좋다. 이유는 구현하고 싶은 어떤 기능이 되는지, 안되는지 단위 테스트를 먼저 해봐야 바로 그 기능 위주로 단순하게 바꾸면 된다, 로 가기 때문에 빠르고 효율적으로 진행되기 때문임. 만약 개발을 하나하나 먼저 해놓고서 테스트를 했는데 안되면 계속 안될때마다 수정하는게 더 번거롭기 때문이다.

대략적인 서비스 설계 순서

  1. entity 속성 정의
  2. 데이터 관리, 영속화를 위해 repository 생성 (인터페이스, 구현체로 또 쪼갠다)
  3. 트랜잭션 관리하고 여러 엔티티를 짬뽕할거니까 service 생성
  4. API 제공, 유저인풋, 전체 다 컨트롤해야되니까 controller 생성

서비스 개발 아키텍처

모놀리식 : 모든 서비스가 하나의 프로젝트 파일 안에 다 들어있는 개발 형태 ex. 다 똑같은 언어로 개발함

마이크로서비스 아키텍처(MSA) : 개별적인 서비스 하나하나 마다 다른 프로젝트, 다른 언어로 두고, 프로젝트 별로 서버를 다 따로 둔 후 중간에 gateway 라는 걸 둬서 통신함


AWS 무중단 배포

서버 두 대를 두고, 둘 다 돌리다가 한 서버에서 패치하는 동안 B 서버를 가동하고, B 서버 패치하면 A 서버 가동하는 즉, 서버 다운이나 패치 중에도 서버가 중간에 중단되지 않게 하는 매커니즘

0개의 댓글