메인 콘텐츠로 건너뛰기
블로그개발자 도구클라우드에서의 이식성: 마이크로서비스 아키텍처

클라우드에서의 이동성: 마이크로서비스 아키텍처

클라우드에서의 이동성: 마이크로서비스 아키텍처

마이크로서비스는 확장 가능하고 단일 책임에 집중할 수 있어야 합니다. 각각의 독립된 모듈식 유닛은 더 큰 시스템 내에서 특정 기능을 처리합니다. 대규모 애플리케이션은 컨테이너 또는 서버리스 컴퓨팅과 같은 모듈식 구성 요소 또는 서비스로부터 구축됩니다. 

마이크로서비스를 다양한 부서, 예산, 요구 사항으로 구성된 하나의 비즈니스라고 생각하세요. 이러한 요구 사항은 매년 회사의 필요에 따라 변경됩니다. 애플리케이션도 시간이 지나면서 동일한 수준의 수요에 직면하지는 않습니다. 더 많은 수요가 필요한 측면과 더 많은 주의를 기울여야 하는 측면이 있을 수 있습니다. 또한 애플리케이션 내에서 다양한 수준의 확장이 이루어져야 합니다. 마이크로서비스를 사용하면 다른 영역에 영향을 주지 않고 다양한 영역에서 확장 및 성장할 수 있습니다. 또한 독립적으로 확장할 수 있습니다.

우리 모두는 프로그래밍에서 단일 책임 원칙을 기억합니다. 마이크로서비스도 다르지 않습니다. 마이크로서비스는 한 가지 일만 하고 한 가지 일만 잘해야 합니다. 또한 더 나은 복원력과 내결함성이라는 본질적인 이점도 얻을 수 있습니다. 마이크로서비스 아키텍처는 장애를 개별 서비스로 분산하여 시스템 전체의 장애를 방지하는 것을 목표로 합니다. 특정 장애가 발생하면 그 위치를 파악하여 다른 서비스에 영향을 주지 않고 해결할 수 있습니다.

검색 가능한 측면도 있습니다. 해시코프의 Consul과 같은 서비스 네트워킹 솔루션을 사용하면 새로운 서비스가 언제 온라인 상태가 되는지 알 수 있고, 해당 서비스의 기능과 통신 방법을 정의하는 서비스 디렉토리가 되는 하나의 중앙 집중식 시스템을 갖게 됩니다.

마이크로서비스를 고려해야 하는 이유

  • 시장 출시 시간 단축: 마이크로서비스를 사용하면 개별 구성 요소의 병렬 개발 및 배포가 가능하므로 전체 개발 프로세스가 빨라지고 새로운 기능을 제공하는 데 걸리는 시간이 단축됩니다.
  • 확장성 향상: 마이크로서비스를 독립적으로 확장할 수 있으므로 기업은 리소스를 보다 효율적으로 할당하고 다양한 워크로드 또는 트래픽 패턴을 보다 효과적으로 처리할 수 있습니다.
  • 복원력 향상: 마이크로서비스의 분산된 특성은 시스템 전체의 장애 위험을 줄여 지속적인 서비스 가용성을 보장하고 전반적인 시스템 안정성을 향상시킵니다.
  • 유연성과 적응성: 마이크로서비스를 통해 기업은 다양한 구성 요소에 대해 다양한 기술과 프레임워크를 활용할 수 있으므로 변화하는 요구 사항에 쉽게 적응하거나 새로운 기술을 통합할 수 있습니다.
  • 손쉬운 유지 관리 및 업데이트: 마이크로서비스의 모듈식 설계는 전체 시스템에 영향을 주지 않고 개별 구성 요소를 업그레이드하거나 교체할 수 있으므로 시스템 유지 관리 및 업데이트를 간소화합니다.

마이크로서비스 모범 사례

마이크로서비스를 작고 집중적으로 유지하며 단일 비즈니스 기능에 책임지는 것이 중요합니다. 이 접근 방식을 사용하면 추가 기능을 추가하고 무분별한 확장을 방지할 수 있습니다. 하지만 특정 애플리케이션과 요구 사항에 따라 달라질 수 있으므로 이상적인 규모에 대한 확고한 규칙은 없습니다.

또한 장애에 대비하여 설계해야 합니다. 내결함성은 기본적으로 여러 서비스 및 마이크로서비스를 실행하는 데 내장되어 있지만, 재시도 메커니즘, 회로 차단기, 격벽과 같은 추가적인 복원력을 추가합니다. 선박에 격벽이 있는 이유를 생각해 보세요. 구조적 무결성을 위해 격벽이 있지만, 문제가 발생하여 격벽이 닫혀도 배가 가라앉지 않도록 하기 위해서도 격벽이 있습니다. 많은 이벤트 기반 아키텍처는 데드 레터 큐라고 하는 것을 사용합니다. 메시지가 전달되지 않으면 특정 대기열로 이동하여 실패 원인을 파악하기 위해 검사할 수 있습니다. 

마이크로서비스는 도메인 중심 설계 원칙에 따라 설계해야 하는데, 이는 비즈니스 기능을 기반으로 서비스를 모델링하고 공통 언어를 사용하여 서비스가 비즈니스 요구사항에 부합하도록 보장하는 것을 의미합니다. 도메인 중심 설계는 비즈니스 도메인에 대한 깊은 이해를 바탕으로 소프트웨어 시스템을 만드는 데 중점을 둡니다. 이 원칙은 설계 프로세스를 안내하고 소프트웨어가 도메인에 부합하고 비즈니스에 가치를 제공할 수 있도록 보장합니다. 이러한 원칙은 비즈니스 도메인에 대한 깊은 이해를 촉진하고 개발이 비즈니스 요구 사항 및 변화하는 요구 사항과 긴밀하게 연계되도록 하는 데 도움이 됩니다.

우선적 접근 방식으로 설계하고 API-우선 접근 방식으로 설계하고 구현 API 게이트웨이는 마이크로서비스와 타사 하위 시스템 간의 통신을 원활하게 하기 위한 중앙 연결 지점을 제공합니다. API 게이트웨이는 권한 부여, 인증, 속도 제한을 처리하는 등 라우팅의 대부분을 처리합니다. API의 디자인 패턴은 마이크로서비스의 모듈성과 재사용성을 위해 필수적입니다. 

다음은 몇 가지 추가 마이크로서비스 모범 사례입니다:

  • 테스트 및 배포 자동화:CI/CD(지속적 통합 및 지속적 배포) 파이프라인과 같은 자동화 도구를 사용하여 마이크로서비스를 테스트하고 배포 하면 오류의 위험을 줄여 서비스를 빠르고 일관되게 배포할 수 있습니다.
  • 컨테이너화를 사용하세요: 컨테이너화는 마이크로서비스를 패키징하고 배포하는 가볍고 휴대 가능한 방법을 제공합니다. 컨테이너화를 사용하면 배포 프로세스를 간소화하고 애플리케이션의 확장성과 이식성을 개선할 수 있습니다.
  • 모니터링하고 관찰하세요: 마이크로서비스가 예상대로 작동하는지 확인하고 문제나 오류를 식별하기 위해 마이크로서비스를 모니터링하고 로그를 기록해야 합니다. 로그 애그리게이터와 애플리케이션 성능 모니터링(APM) 도구가 이를 수행할 수 있습니다. 추적은 분산 시스템을 통한 데이터 흐름에 대한 인사이트를 제공합니다. 이 세 가지 요소는 성능에 대한 엔드투엔드 가시성을 제공하는 데 도움이 됩니다.
  • 서비스 보안: 마이크로서비스는 인증, 권한 부여, 암호화와 같은 모범 사례를 사용하여 보안을 유지해야 하며 컨테이너 보안도 잊지 마세요! 정책은 전체 공격 표면을 줄이기 위해 마이크로서비스가 다른 마이크로서비스와 대화할 수 있는 항목을 적용해야 합니다. 보안은 모든 설계의 일부가 되어야 하며 개발의 모든 단계에서 점검되어야 애플리케이션의 보안이 훨씬 더 강화되고 민감한 데이터를 보호할 수 있습니다. 

내용

댓글 남기기

이메일 주소는 게시되지 않습니다. 필수 필드가 표시됩니다 *