보통 혼자서 연습용으로 개발하거나 규모가 작은 개발은 로그인, 파일 업로드, 결제 등 역할별로 개발하고, 개발이 완료되면 한 곳에 묶어서 배포합니다. 단순하고 편리하지만 기능들이 같이 있기 때문에 하나의 기능이 망가지면 다른 부분에도 영향을 미치게 됩니다. 서비스가 점점 커지면 하나의 프로젝트로 묶는 것이 점점 어려워지고 복잡해지게 됩니다. 그래서 나온 것이 마이크로서비스 아키텍처 입니다.
nestjs로 이해하기 쉽게 간단히 예를 들자면
하나의 nestjs 폴더 안에 api들을 3개의 nestjs 폴더(각각 컴퓨터 하나)로 나눔
각각 yarn start:dev로 실행 => 각각 db를 갖게 됨
브라우저에서 이제 어느 api로 갈지 정해주기 위해 중간부분에 api게이트웨이 nestjs 폴더 하나 추가 ( reverse proxy ), 이 api는 주소를 보고 판단 후 api로 보냄
예시만 봐도 컴퓨터가 7대가 필요하게 되는데 장점이 무엇일까요?
ㄴ API중에 하나를 수정하려면 다 끄고 다시 다 켜야하는 불편함 해결
ㄴ 특정 API가 바뀌면 특정 API만 다시 빌드/배포 하면 됨
ㄴ 특정 API가 죽어도 나머지 API는 정상 작동
ㄴ 각각의 API를 다른 언어로 만들 수 있게 됨
ㄴ 유능한 다른 언어를 쓰는 개발자도 뽑을 수 있게 됨
단점.
전체적인 기술 복잡도 증가 ( 여러개의 언어, 등 )