1980년대 이후, 서비스의 규모가 점점 커지면서 Software Architecture 방식의 필요성이 대두되었습니다.
Software Architecture방식은 소프트웨어의 설계 방식을 말하며, 이 글에서는 모놀리식 아키텍처(Monolithic Architecture)방식과
마이크로 서비스 아키텍처(Microservice Archetecture)방식에 대해서 설명하려 합니다.
웹개발을 할 때, 프로그램을 개발하기 위해서 모듈별로 개발하고, 개발이 완료되면 각각의 모듈을 하나로 묶어 배포하는 형태를 발합니다.
- 프로그램의 규모가 크지 않은 경우 개발, 빌드, 배포가 하나의 서비스로 이루어 지기 때문에 간편합니다.
- 서비스의 규모가 커질수록 추가적인 모듈을 개발하여 서비스에 패키징하며 복잡도가 상승합니다.
- 모듈의 업데이트, 추가적인 기능 탑재를 위해서는 전체 서비스를 중단해야 합니다.
- 서비스에 장애가 발생할 경우 서비스 전체가 중단됩니다.
Microservice는 각 서비스를 느슨히 결합하는 방식을 사용한 소프트웨어 개발 방식으로 서비스의 규모가 커질 경우 유용합니다.
각각의 모듈은 각각의 서버를 가지며, 각 서비스가 분산됩니다.
- 서비스 장애가 발생하여도 장애가 발생한 모듈이외에는 서비스가 정상적으로 작동합니다.
- 서비스의 추가와 삭제가 모듈단위로 이루어져 간편합니다.
- Monolithic Architecture에서는 존재하지 않는 Proxy Server가 존재합니다. Proxy Server는 서버로 들어오는 요청을 해당되는 API로 전달해줍니다.