Close

마이크로서비스: 마이크로서비스의 정의 및 이점 이해하기

2013년경까지만 해도 기업에서 보통 대규모 코드베이스, 모놀리식 아키텍처를 가진 단일 단위로 애플리케이션을 구축하여 엔터프라이즈 소프트웨어를 만들었습니다. 그러나 소프트웨어가 복잡해지고 클라우드 컴퓨팅이 인기를 얻으면서 이 접근 방식은 실용성이 떨어졌습니다.

서비스형 소프트웨어 제품(클라우드 제공 애플리케이션)의 출현으로 기업은 Amazon Web Services와 같은 공급자를 통해 빠르게 새 서버를 만들고 이중화를 추가할 수 있게 되었습니다. 이렇게 하여 업그레이드 중에도 서비스를 온라인 상태로 유지할 수 있었습니다. 또한 속도와 민첩성의 새 시대가 열렸습니다. 사용자는 빠른 업그레이드와 개선을 기대하기 시작했고 기업은 개발 프로세스를 바꾸었습니다.

기업은 애플리케이션을 더 작고 독립적인 서비스 또는 마이크로서비스로 나누기 시작했습니다. 예를 들어 메시지 수신함을 모놀리식 전자 상거래 플랫폼의 일부로 포함하는 대신 이 기능을 위한 별도의 마이크로서비스를 만들었습니다.

동시에 개발자는 더 작고 전문화된 그룹에서 일하기 시작했고 애플리케이션 전체에 위험을 초래하지 않으면서 개별 서비스를 수정하고 개선했습니다. 이 그룹은 종종 코드 운영에 대한 책임도 맡았습니다. DevOps라는 모델이었습니다. 이 변화를 지원하기 위해 프로젝트 매니저는 프로젝트를 더 작고 자주 릴리스하는 것으로 나누는 애자일과 같은 새로운 방법론을 개발하기 시작했습니다.

마이크로서비스 기반 애플리케이션의 구조에 대해 자세히 알아보려면 계속 읽어보세요. 또한 Atlassian의 Compass가 어떻게 복잡성은 줄이면서 개발자가 이 아키텍처 모델의 이점을 누릴 수 있도록 했는지 확인해 보세요.

마이크로서비스는 크고 복잡한 애플리케이션을 지속적으로 제공하고 배포하는 소규모 유닛의 모음입니다.

Compass 로고.

무료로 Compass 사용해 보기

개발자 경험을 개선하고 모든 서비스를 카탈로그화하고 소프트웨어 상태를 향상하세요.

마이크로서비스란 무엇입니까?


마이크로서비스는 로직의 한 부분을 담당하는 기능입니다(아래 설명되어 있는 도메인 마이크로서비스 제외). Jira Software처럼 여러 마이크로서비스가 결합되어 분산 애플리케이션을 만듭니다.

마이크로서비스 일러스트레이션

마이크로서비스에는 세 가지 유형이 있습니다.

  1. 도메인 마이크로서비스는 서비스와 관련 기능을 느슨하게 결합합니다.
  2. 통합 마이크로서비스는 관련 없는 애플리케이션 간의 상호 작용을 지원합니다.
  3. 작업 단위 마이크로서비스는 단일 기능을 처리합니다.

마이크로서비스는 API(애플리케이션 프로그래밍 인터페이스)를 사용하여 서로 상호 작용을 합니다. 개별 서비스에 대한 작업을 하는 개발자는 다른 마이크로서비스의 내부 작업을 배울 수 있으며 이것은 모놀리식 아키텍처와 다른 또 하나의 장점입니다.

마이크로서비스 기반 아키텍처에는 많은 장점이 있지만 복잡성도 높아집니다. 그래서 Atlassian은 기업이 확장하면서 단순화할 수 있도록 Compass를 개발했습니다. Compass는 엔지니어링 결과물에 대한 모든 정보와 팀 차원의 공동 작업을 검색 가능한 중앙 집중식 위치로 모으는 개발자 경험 플랫폼입니다.

마이크로서비스의 주요 원칙


마이크로서비스 기반 아키텍처에는 몇 가지 구별되는 특징이 있습니다. 개발자는 컴포넌트에 맞는 언어 및 기술을 사용하여 서비스를 독립적으로 개발하고 배포할 수 있습니다.

마이크로서비스 간 통신은 API 기반이므로 수정 없이 다양한 소스의 데이터에 액세스할 수 있습니다. 수요에 따라 개별 서비스를 확장할 수 있으므로 비용을 절감하고 가용성을 보장할 수 있습니다.

이 특성을 가진 마이크로서비스 기반 분산 애플리케이션은 유연하며 유지 관리가 쉽습니다.

마이크로서비스 아키텍처에서 각 구성 요소는 다른 서비스의 기능이나 애플리케이션의 무결성을 손상시키지 않으면서 개발, 배포, 운영, 변경 및 재배포할 수 있습니다.

마이크로서비스의 이점


마이크로서비스는 많은 이점을 제공합니다. 개발 및 프로젝트 관리를 단순화합니다. 개발자가 자신이 구축한 마이크로서비스의 운영을 처리할 수 있기 때문에 별도의 운영 팀이 필요하지 않은 경우도 생깁니다.

마이크로서비스의 기타 이점은 다음과 같습니다.

저울 일러스트레이션

복원력 및 결함 격리

모놀리식 아키텍처에서는 오류 하나가 애플리케이션 전체에 영향을 미칩니다. 하지만 마이크로서비스는 독립적입니다. 하나의 장애가 애플리케이션의 다른 부분에 영향을 주지 않습니다.

애자일 일러스트레이션

민첩성

애플리케이션을 작은 조각으로 나누면 개발 속도가 빨라집니다. 따라서 팀은 더 빠르게 소프트웨어를 만들고 테스트하고 배포할 수 있습니다.

도구 상자 일러스트레이션

기술 다양성

개발자는 마이크로서비스를 통해 작업에 적합한 도구와 기술을 선택할 수 있습니다. 이것을 통해 효율성 및 생산성을 높일 수 있습니다.

쌓여 있는 블록 일러스트레이션

유지 관리 개선

개별 컴포넌트를 테스트할 수 있어 애플리케이션 전체를 오프라인으로 전환하지 않고도 쉽게 버그를 찾고 수정할 수 있습니다.

마이크로서비스의 도전 과제


마이크로서비스 기반 아키텍처에는 많은 이점이 있지만 문제점도 있습니다.

마이크로서비스의 한 가지 문제점은 독립된 서비스가 자체 로그를 생성한다는 점입니다. 개발자 및 운영 팀에 단일 정보 출처를 제공하는 모놀리스의 중앙 집중식 로그와 비교한다면 단점이라 할 수 있습니다. 움직이는 부분이 많으므로 모니터링 및 인프라 관리도 더 복잡합니다. 모놀리스와 달리 IDE(통합 개발 환경)가 없으므로 테스트 및 디버깅하기가 어렵습니다.

Atlassian의 Compass라면 이 모든 문제를 해결할 수 있습니다. Compass는 공동 작업을 지원하고 기업이 확장 시 분산 아키텍처의 복잡성을 관리할 수 있도록 해 줍니다. 연결이 끊긴 정보를 검색 가능한 중앙 집중식 위치로 모아 이 작업을 수행합니다.

무분별한 개발 확장

모놀리스에서 마이크로서비스로의 마이그레이션은 복잡성이 증가함을 의미합니다. 더 많은 장소에 여러 팀이 만든 더 많은 서비스가 있습니다. 따라서 각기 다른 구성 요소가 서로 어떻게 관련되어 있는지, 특정 구성 요소를 누가 소유하고 있는지, 종속 구성 요소에 부정적인 영향을 미치지 않으려면 어떻게 할지 파악하기가 어렵습니다. 무분별한 개발 확장을 관리하지 않으면 개발 속도가 느려지고 운영 성능이 저하되는 결과가 나타납니다. 시스템이 성장함에 따라 아키텍처의 지속적인 재배포와 빈번한 변경을 관리하려면 숙련된 운영 팀이 필요합니다.

명확한 소유권 부족

마이크로서비스 아키텍처는 누가 무엇을 소유하고 있는지 더욱 혼란스럽게 만듭니다. DevOps 팀은 사용자가 애플리케이션을 배포할 수 있도록 API, 구성 요소 라이브러리, 모니터링 도구 및 Docker 이미지의 조합을 실행할 수 있습니다. 소유자, 리소스 및 다른 구성 요소 간의 진화하는 관계를 포함하여 구성 요소의 정보에 대한 인사이트를 갖는 것이 중요합니다. 관련된 모든 직원이 제품을 이해하는 데 필요한 지식을 쉽게 찾을 수 있도록 여러 팀 간에 정확한 커뮤니케이션과 조정이 필요합니다.

기하급수적인 인프라 비용

프로덕션 배포에 추가되는 각각의 새로운 마이크로서비스에는 테스트 도구, 배포 플레이북, 호스팅 인프라, 모니터링 도구 등에 대한 자체적인 비용이 포함됩니다.

조직 오버헤드 추가

마이크로서비스 아키텍처 팀 간의 업데이트와 인터페이스를 조정하려면 또 다른 커뮤니케이션과 공동 작업이 이루어져야 합니다.

디버깅

각각 고유한 로그 집합이 있는 여러 마이크로서비스를 포함하는 애플리케이션을 디버깅하는 것은 어려울 수 있습니다. 여러 시스템에서 하나의 비즈니스 프로세스를 실행할 수 있으므로 디버깅이 더욱 복잡합니다.

인시던트 대응

마이크로서비스 사용자, 마이크로서비스 배포 위치, 마이크로서비스 배포 방법, 문제 발생 시 연락할 대상과 같은 정보를 포함하는 마이크로서비스 인시던트 대응 인텔리전스를 갖추는 것이 중요합니다.

마이크로서비스 아키텍처는 어디에 사용됩니까?


대규모 소비자 웹 사이트는 종종 수백 또는 수천 개의 마이크로서비스를 사용합니다. 마이크로서비스는 다음과 같은 사용 사례 및 산업에서 특히 유용합니다.

  • 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 커뮤니티에 가입하여 더 많은 마이크로서비스 문서를 살펴보고 논의에 참여해 보세요.

Compass를 사용하여 마이크로서비스 탐색

마이크로서비스 아키텍처로 작업할 때 Atlassian의 Compass는 확장 가능한 분산 아키텍처의 복잡성을 관리합니다. Compass는 엔지니어링 결과물에 대한 단절된 정보와 팀 차원의 공동 작업을 검색 가능한 중앙 위치로 모으는 확장 가능한 개발자 경험 플랫폼입니다. Compass는 컴포넌트 카탈로그를 통해 마이크로서비스의 무분별한 확장을 줄이는 데 도움이 될 뿐만 아니라 성과 기록표를 사용하여 모범 사례를 수립하고 소프트웨어 상태를 측정하며, Atlassian Forge 플랫폼에 구축된 확장 기능을 사용하여 DevOps 도구 체인 전반에 걸쳐 데이터와 인사이트를 제공할 수 있습니다.

Compass 마이크로서비스 일러스트레이션