지금까지 개발해왔던 서비스는 여러 작고 중요한 모듈들이 합쳐진 하나의 거대한 프로젝트인데요. 로그인, 파일 업로드, 결제 등 필요한 역할별로 개발을 하고, 개발이 완료되면 하나로 묶어서 배포했었습니다. 이런 방식을 모놀리식 아키텍처(Monolithic Architecture)
라고 부릅니다.
이처럼 하나의 프로젝트를 개발하고 테스트하고 빌드하기 때문에 단순합니다. 하지만, 여러 모듈들이 함께 있기 때문에 모든 기능이 엉켜버리는 것과 같이 작은 부분에 문제가 생겨도 다른 부분에 영향을 줄 수가 있는데요.
서비스가 점점 커질경우 하나의 프로젝트로 함께 묶는것이 점점 버거워지고 복잡해지게 됩니다. 이를 해결하기 위해 나온 것이 마이크로서비스 아키텍처(Microservice Architecture)
입니다.
마이크로서비스 아키텍처(Microservice Architecture)
는 한 프로젝트를 여러 작은 서비스로 분리하여 개발하고 운영, 배포하는 방법입니다. 여러 모듈로 분리했기 때문에 팀별로 독립적으로 개발할 수 있게 됩니다. 그리고 서비스 운영 시, 만나게 되는 장애로부터 조금은 더 자유로워 질 수 있습니다. 기존 모놀리식 구조에서는 장애 발생시 서버가 죽게 되면 모든 API가 사용 불가능했지만, 마이크로서비스로 분리하게 되면 어떠한 기능에 장애가 생겨도 해당 API만 사용이 불가능하고, 다른 기능에는 문제없이 서비스를 운영할 수 있게 됩니다.
✅ 그렇다면, 모든 서비스에 마이크로서비스를 적용하는 것이 좋을까요? 🤔
마이크로서비스 아키텍쳐를 적용했을 때에는 기술 복잡도가 증가할 수 있으므로 상황에 따라 잘
판단하여 서비스의 구조를 결정해야 합니다.