마이크로서비스: 마이크로서비스의 정의 및 이점 이해하기
2013년경까지만 해도 기업에서 보통 대규모 코드베이스, 모놀리식 아키텍처를 가진 단일 단위로 애플리케이션을 구축하여 엔터프라이즈 소프트웨어를 만들었습니다. 그러나 소프트웨어가 복잡해지고 클라우드 컴퓨팅이 인기를 얻으면서 이 접근 방식은 실용성이 떨어졌습니다.
서비스형 소프트웨어 제품(클라우드 제공 애플리케이션)의 출현으로 기업은 Amazon Web Services와 같은 공급자를 통해 빠르게 새 서버를 만들고 이중화를 추가할 수 있게 되었습니다. 이렇게 하여 업그레이드 중에도 서비스를 온라인 상태로 유지할 수 있었습니다. 또한 속도와 민첩성의 새 시대가 열렸습니다. 사용자는 빠른 업그레이드와 개선을 기대하기 시작했고 기업은 개발 프로세스를 바꾸었습니다.
기업은 애플리케이션을 더 작고 독립적인 서비스 또는 마이크로서비스로 나누기 시작했습니다. 예를 들어 메시지 수신함을 모놀리식 전자 상거래 플랫폼의 일부로 포함하는 대신 이 기능을 위한 별도의 마이크로서비스를 만들었습니다.
동시에 개발자는 더 작고 전문화된 그룹에서 일하기 시작했고 애플리케이션 전체에 위험을 초래하지 않으면서 개별 서비스를 수정하고 개선했습니다. 이 그룹은 종종 코드 운영에 대한 책임도 맡았습니다. DevOps라는 모델이었습니다. 이 변화를 지원하기 위해 프로젝트 매니저는 프로젝트를 더 작고 자주 릴리스하는 것으로 나누는 애자일과 같은 새로운 방법론을 개발하기 시작했습니다.
마이크로서비스 기반 애플리케이션의 구조에 대해 자세히 알아보려면 계속 읽어보세요. 또한 Atlassian의 Compass가 어떻게 복잡성은 줄이면서 개발자가 이 아키텍처 모델의 이점을 누릴 수 있도록 했는지 확인해 보세요.
무료로 Compass 사용해 보기
개발자 경험을 개선하고 모든 서비스를 카탈로그화하고 소프트웨어 상태를 향상하세요.
마이크로서비스란 무엇입니까?
마이크로서비스는 로직의 한 부분을 담당하는 기능입니다(아래 설명되어 있는 도메인 마이크로서비스 제외). Jira Software처럼 여러 마이크로서비스가 결합되어 분산 애플리케이션을 만듭니다.
마이크로서비스에는 세 가지 유형이 있습니다.
- 도메인 마이크로서비스는 서비스와 관련 기능을 느슨하게 결합합니다.
- 통합 마이크로서비스는 관련 없는 애플리케이션 간의 상호 작용을 지원합니다.
- 작업 단위 마이크로서비스는 단일 기능을 처리합니다.
마이크로서비스는 API(애플리케이션 프로그래밍 인터페이스)를 사용하여 서로 상호 작용을 합니다. 개별 서비스에 대한 작업을 하는 개발자는 다른 마이크로서비스의 내부 작업을 배울 수 있으며 이것은 모놀리식 아키텍처와 다른 또 하나의 장점입니다.
마이크로서비스 기반 아키텍처에는 많은 장점이 있지만 복잡성도 높아집니다. 그래서 Atlassian은 기업이 확장하면서 단순화할 수 있도록 Compass를 개발했습니다. Compass는 엔지니어링 결과물에 대한 모든 정보와 팀 차원의 공동 작업을 검색 가능한 중앙 집중식 위치로 모으는 개발자 경험 플랫폼입니다.
마이크로서비스의 주요 원칙
마이크로서비스 기반 아키텍처에는 몇 가지 구별되는 특징이 있습니다. 개발자는 컴포넌트에 맞는 언어 및 기술을 사용하여 서비스를 독립적으로 개발하고 배포할 수 있습니다.
마이크로서비스 간 통신은 API 기반이므로 수정 없이 다양한 소스의 데이터에 액세스할 수 있습니다. 수요에 따라 개별 서비스를 확장할 수 있으므로 비용을 절감하고 가용성을 보장할 수 있습니다.
이 특성을 가진 마이크로서비스 기반 분산 애플리케이션은 유연하며 유지 관리가 쉽습니다.
마이크로서비스의 이점
마이크로서비스는 많은 이점을 제공합니다. 개발 및 프로젝트 관리를 단순화합니다. 개발자가 자신이 구축한 마이크로서비스의 운영을 처리할 수 있기 때문에 별도의 운영 팀이 필요하지 않은 경우도 생깁니다.
마이크로서비스의 기타 이점은 다음과 같습니다.
복원력 및 결함 격리
모놀리식 아키텍처에서는 오류 하나가 애플리케이션 전체에 영향을 미칩니다. 하지만 마이크로서비스는 독립적입니다. 하나의 장애가 애플리케이션의 다른 부분에 영향을 주지 않습니다.
민첩성
애플리케이션을 작은 조각으로 나누면 개발 속도가 빨라집니다. 따라서 팀은 더 빠르게 소프트웨어를 만들고 테스트하고 배포할 수 있습니다.
기술 다양성
개발자는 마이크로서비스를 통해 작업에 적합한 도구와 기술을 선택할 수 있습니다. 이것을 통해 효율성 및 생산성을 높일 수 있습니다.
유지 관리 개선
개별 컴포넌트를 테스트할 수 있어 애플리케이션 전체를 오프라인으로 전환하지 않고도 쉽게 버그를 찾고 수정할 수 있습니다.
마이크로서비스의 도전 과제
마이크로서비스 기반 아키텍처에는 많은 이점이 있지만 문제점도 있습니다.
마이크로서비스의 한 가지 문제점은 독립된 서비스가 자체 로그를 생성한다는 점입니다. 개발자 및 운영 팀에 단일 정보 출처를 제공하는 모놀리스의 중앙 집중식 로그와 비교한다면 단점이라 할 수 있습니다. 움직이는 부분이 많으므로 모니터링 및 인프라 관리도 더 복잡합니다. 모놀리스와 달리 IDE(통합 개발 환경)가 없으므로 테스트 및 디버깅하기가 어렵습니다.
Atlassian의 Compass라면 이 모든 문제를 해결할 수 있습니다. Compass는 공동 작업을 지원하고 기업이 확장 시 분산 아키텍처의 복잡성을 관리할 수 있도록 해 줍니다. 연결이 끊긴 정보를 검색 가능한 중앙 집중식 위치로 모아 이 작업을 수행합니다.
마이크로서비스 아키텍처는 어디에 사용됩니까?
대규모 소비자 웹 사이트는 종종 수백 또는 수천 개의 마이크로서비스를 사용합니다. 마이크로서비스는 다음과 같은 사용 사례 및 산업에서 특히 유용합니다.
- eBay와 같은 전자 상거래 사이트는 쇼핑 카트, 모바일 앱 및 메시징을 위해 별도의 마이크로서비스를 사용합니다.
- Bank of America와 같은 금융 기관은 외부 서비스와 통신하기 위해 마이크로서비스를 사용합니다. 또한 사용자 인증 및 거래 표시와 같은 기능을 처리할 때도 마이크로서비스를 사용합니다.
Instagram 및 Facebook과 같은 소셜 미디어 플랫폼은 사용자의 뉴스 피드, 메시지, 알림 및 친구 네트워크를 표시하기 위해 마이크로서비스를 사용합니다.
마이크로서비스 관리 모범 사례
지난 몇 년간 개발자들은 마이크로서비스 개발을 위해 수십 개의 필수 모범 사례를 만들었습니다. 아래 몇 가지 예를 살펴보세요.
- SRP(단일 책임 원칙)에서는 각 모듈 또는 마이크로서비스가 하나의 기능만 가져야 한다고 명시하고 있습니다. SRP CI(지속적 통합)는 프로젝트에 통합하기 전 코드 품질 검사를 자동화한다는 소스 코드 제어 방법론으로, 별도의 QA 프로세스가 필요하지 않아 속도를 높일 수 있습니다. 이 DevOps 모범 사례는 속도를 높이는 데 도움이 됩니다. CI는 자동화된 구축 도구를 실행하여 소프트웨어 배포 준비를 한다는 CD(지속적 제공)보다 우선시됩니다.
- API 게이트웨이는 마이크로서비스 간 통신을 간소화하고 인증 및 권한 부여를 관리하며 보안을 강화합니다.
- 마이크로서비스 간 비동기 통신은 자율성을 유지해 애플리케이션 기능 속도를 저하시킬 수 있는 종속성을 줄여 줍니다.
-
전체 작업 제거와 같이 문제를 일으키는 변경 사항을 개발자가 구현할 때에는 마이크로서비스 버전 관리가 중요합니다. 이 방법을 따르면 전환을 원활하게 하고 서비스 중단 가능성을 최소화할 수 있습니다.
Jira Software로 구동되는 Atlassian의 Open DevOps를 사용하면 팀이 Atlassian과 파트너 도구를 쉽게 자동으로 통합할 수 있으므로 소프트웨어 구축 및 운영에 집중할 수 있습니다.
Compass를 통한 향상된 마이크로서비스 아키텍처 관리
Atlassian의 Compass는 분산 소프트웨어 아키텍처와 팀 공동 작업을 한곳에서 제공하는 개발자 경험 플랫폼입니다. 팀이 작업하는 모든 컴포넌트 및 서비스에 대한 편리한 개요를 제공합니다. 개발자가 원하는 것을 쉽게 찾을 수 있도록 도와주는 소프트웨어 컴포넌트 카탈로그도 포함되어 있습니다.
Compass를 사용하면 쉽게 컴포넌트를 관리하고 소유권을 추적하고 관계를 모니터링할 수 있습니다. 또한 변경 사항도 실시간으로 추적할 수 있습니다.
UI 사용자 지정이 가능하고 내부 및 타사 도구와의 호환성을 갖추고 있어 Compass를 쉽게 개발 환경에 통합할 수 있습니다. Compass로 마이크로서비스 아키텍처를 관리하는 방법과 연결이 끊긴 정보를 통합된 중앙 집중식 위치로 모으는 방법을 알아보세요.
마이크로서비스: 자주 묻는 질문
마이크로서비스에서 일반적으로 사용되는 도구는 무엇입니까?
비즈니스에서는 종종 Kubernetes 및 Docker와 같은 컨테이너화 도구를 사용합니다. 마이크로서비스와 클라이언트 사이에서 API 게이트웨이를 자주 사용하기도 합니다. 이 게이트웨이는 인증, 액세스 제어 및 로드 밸런싱과 같은 API 트래픽 기능을 수행합니다.
마이크로서비스는 모놀리식 아키텍처와 어떻게 다릅니까?
모놀리스는 하나의 시스템으로 작동하는 대규모 코드베이스입니다. 업데이트 및 디버깅을 하려면 시스템 가동 중지 시간이 필요합니다. 마이크로서비스 아키텍처는 작고 독립적인 기능 조각으로 이루어진 분산 애플리케이션입니다. 개발자는 애플리케이션 전체를 오프라인으로 전환하지 않고도 이 모듈을 업그레이드하고 개선하고 디버그할 수 있습니다. 이렇게 하면 확장이 단순해지고 개발 속도가 빨라집니다.
마이크로서비스가 DevOps에 어떤 영향을 미칩니까?
DevOps를 이해하고 있는 사용자라면 지속적 통합 및 지속적 제공(DevOps CI/CD 파이프라인)이 DevOps 방법론의 핵심이라는 것을 알고 있습니다. 마이크로서비스의 모듈식 특성은 이 접근 방식과 완벽하게 일치합니다. 마이크로서비스는 개발자가 작고 빈번한 릴리스를 빠르게 만들고 테스트하고 배포할 수 있도록 도와줍니다.
Atlassian 커뮤니티에 가입하여 더 많은 마이크로서비스 문서를 살펴보고 논의에 참여해 보세요.