다음을 통해 공유


마이크로 서비스 아키텍처

팁 (조언)

이 콘텐츠는 .NET Docs 또는 오프라인으로 읽을 수 있는 다운로드 가능한 무료 PDF로 제공되는 컨테이너화된 .NET 애플리케이션용 .NET 마이크로 서비스 아키텍처인 eBook에서 발췌한 내용입니다.

컨테이너화된 .NET 애플리케이션을 위한 .NET 마이크로서비스 아키텍처 eBook의 표지 썸네일.

이름에서 알 수 있듯이 마이크로 서비스 아키텍처는 서버 애플리케이션을 작은 서비스 집합으로 빌드하는 방법입니다. 즉, 마이크로 서비스 아키텍처는 주로 백 엔드를 지향하지만 이 접근 방식은 프런트 엔드에도 사용됩니다. 각 서비스는 자체 프로세스에서 실행되며 HTTP/HTTPS, WebSocket 또는 AMQP와 같은 프로토콜을 사용하여 다른 프로세스와 통신합니다. 각 마이크로 서비스는 특정 컨텍스트 경계 내에서 특정 엔드 투 엔드 도메인 또는 비즈니스 기능을 구현하며, 각각은 자율적으로 개발되어야 하며 독립적으로 배포할 수 있어야 합니다. 마지막으로, 각 마이크로 서비스는 관련 도메인 데이터 모델 및 도메인 논리(주권 및 분산 데이터 관리)를 소유해야 하며 다양한 데이터 스토리지 기술(SQL, NoSQL) 및 다양한 프로그래밍 언어를 기반으로 할 수 있습니다.

마이크로 서비스는 어떤 크기여야 하나요? 마이크로 서비스를 개발할 때 크기가 중요한 지점이 되어서는 안 됩니다. 대신 각 서비스에 대해 개발, 배포 및 규모에 대한 자율성을 갖도록 느슨하게 결합된 서비스를 만드는 것이 중요합니다. 물론 마이크로 서비스를 식별하고 디자인할 때는 다른 마이크로 서비스와의 직접 종속성이 너무 많지 않은 한 가능한 한 작게 만들어야 합니다. 마이크로 서비스의 크기보다 더 중요한 것은 마이크로 서비스의 내부 응집력과 다른 서비스와의 독립성입니다.

마이크로 서비스 아키텍처를 사용하는 이유는 무엇인가요? 즉, 장기적인 민첩성을 제공합니다. 마이크로 서비스를 사용하면 각각 세분화되고 자율적인 수명 주기가 있는 많은 독립적으로 배포 가능한 서비스를 기반으로 애플리케이션을 만들 수 있으므로 복잡하고 크고 확장성이 뛰어난 시스템에서 더 나은 유지 관리 기능을 사용할 수 있습니다.

추가적인 이점으로 마이크로 서비스는 독립적으로 확장할 수 있습니다. 단일 모놀리식 애플리케이션을 하나의 단위로 스케일 아웃해야 하는 대신 특정 마이크로 서비스를 스케일 아웃할 수 있습니다. 이렇게 하면 확장할 필요가 없는 애플리케이션의 다른 영역을 확장하는 대신 수요를 지원하기 위해 더 많은 처리 능력 또는 네트워크 대역폭이 필요한 기능 영역만 확장할 수 있습니다. 즉, 하드웨어를 적게 사용하기 때문에 비용이 절감됩니다.

두 배포 방법 간의 차이점 다이어그램.

그림 4-6. 모놀리식 배포와 마이크로 서비스 접근 방식 비교

그림 4-6에서 볼 수 있듯이 기존의 모놀리식 접근 방식에서 애플리케이션은 여러 서버/VM에서 전체 앱을 복제하여 크기를 조정합니다. 마이크로 서비스 접근 방식에서 기능은 더 작은 서비스에서 분리되므로 각 서비스가 독립적으로 확장될 수 있습니다. 마이크로 서비스 접근 방식을 사용하면 복잡하고 크고 확장 가능한 애플리케이션의 특정하고 작은 영역을 변경할 수 있으므로 각 마이크로 서비스의 민첩한 변경 및 신속한 반복이 가능합니다.

세분화된 마이크로 서비스 기반 애플리케이션을 구축하는 작업은 연속 통합 및 지속적인 업데이트 사례를 사용합니다. 또한 애플리케이션이 새 기능을 사용하도록 가속화합니다. 또한 애플리케이션의 세분화된 컴퍼지션을 사용하면 마이크로 서비스를 격리된 상태로 실행하고 테스트하고 자율적으로 진화하면서 명확한 계약을 유지할 수 있습니다. 인터페이스 또는 계약을 변경하지 않으면 다른 마이크로 서비스를 중단하지 않고 마이크로 서비스의 내부 구현을 변경하거나 새 기능을 추가할 수 있습니다.

다음은 마이크로 서비스 기반 시스템을 사용하여 프로덕션 환경에 성공적으로 진입할 수 있도록 하는 중요한 측면입니다.

  • 서비스 및 인프라의 모니터링 및 상태 검사

  • 서비스에 대한 확장 가능한 인프라(즉, 클라우드 및 오케스트레이터)입니다.

  • 인증, 권한 부여, 비밀 관리, 보안 통신 등 여러 수준에서 보안 디자인 및 구현

  • 빠른 애플리케이션 제공, 일반적으로 서로 다른 마이크로 서비스에 초점을 맞춘 다른 팀과 함께.

  • DevOps 및 CI/CD 사례 및 인프라.

이 중 처음 3개만 이 가이드에서 다루거나 소개됩니다. 애플리케이션 수명 주기와 관련된 마지막 두 지점은 Microsoft Platform and Tools 전자책을 사용하여 컨테이너화된 추가 Docker 애플리케이션 수명 주기 에서 다룹니다.

추가 리소스