Microservice Architecture는 소프트웨어 아키텍처 패턴의 하나로, 단일 애플리케이션을 여러 개의 작은 서비스로 분할하는 방법입니다. 각 서비스는 자체적으로 독립적인 기능을 제공하며, 다른 서비스와 느슨하게 결합됩니다.
Microservice Architecture의 주요 특징은 다음과 같습니다.
-
작은 서비스: 각 서비스는 가능한 작게 유지되어야 합니다. 이를 통해 개발 및 유지보수가 쉬워지며, 개발팀은 더 높은 생산성을 달성할 수 있습니다.
-
독립적인 배포: 각 서비스는 자체적으로 배포될 수 있으며, 다른 서비스와 느슨하게 결합되어 있기 때문에 하나의 서비스를 변경하더라도 다른 서비스에는 영향을 미치지 않습니다.
-
다양한 언어 및 기술: 각 서비스는 자체적으로 선택된 언어와 기술을 사용할 수 있습니다. 이를 통해 최적의 기술을 선택하여 구현할 수 있으며, 각 서비스가 독립적으로 개발될 수 있습니다.
-
확장성: 각 서비스는 필요에 따라 확장될 수 있습니다. 이를 통해 트래픽이 증가하거나 새로운 기능을 추가할 때 쉽게 대응할 수 있습니다.
Microservice Architecture를 사용하면, 다음과 같은 이점을 얻을 수 있습니다.
-
유연성: 서비스 간의 느슨한 결합은 애플리케이션을 더 유연하게 만들어줍니다. 새로운 서비스를 추가하거나 기존 서비스를 변경하는 것이 쉽기 때문입니다.
-
확장성: 각 서비스를 별도로 확장할 수 있기 때문에, 트래픽이 증가하더라도 전체 애플리케이션을 확장할 필요가 없습니다. 즉 스케일 아웃하기 쉽다는말 !
-
개발 생산성: 각 서비스를 작은 단위로 분할하면, 개발팀은 더 높은 생산성을 달성할 수 있습니다. 각 서비스가 독립적으로 개발되므로, 여러 개발팀이 동시에 작업할 수 있습니다.
-
기술 다양성: 각 서비스가 다른 기술을 사용할 수 있기 때문에, 최적의 기술을 선택하여 구현할 수 있습니다. 이를 통해 전체 애플리케이션의 성능을 향상시키고, 유지보수가 용이해집니다.
-
안정성: 각 서비스가 독립적으로 실행되기 때문에, 하나의 서비스에서 문제가 발생해도 전체 애플리케이션이 영향을 받지 않습니다.
-
배포 용이성: 각 서비스는 독립적으로 배포될 수 있으므로, 전체 애플리케이션을 배포하는 것보다 더 빠르고 쉽게 배포할 수 있습니다.
-
높은 가용성: 각 서비스는 별도의 서버에서 실행되기 때문에, 하나의 서버에서 장애가 발생해도 전체 애플리케이션의 가용성이 유지됩니다.
-
재사용성: 각 서비스는 독립적으로 사용될 수 있기 때문에, 다른 애플리케이션에서도 재사용할 수 있습니다.
그럼 이거 말고 반대 되는 개념은 뭐가 있냐면.. Monolithic Architecture 보통의 소규모 서비스들이지 ..~
그러면 프레임워크에 종속적이지 않으면 .. ! 어떻게해..? API를 통해서만 상호작용한다 ! 마이크로 서비스는 서비스의 end-point(접근점)을 API 형태로 외부에 노출하고 실질적 세부 사항은 모두 추상화 ..!