Close

마이너스 속도: 복잡성 한계를 높이는 방법


엔지니어링 조직의 가장 일반적인 목표는 높은 품질의 소프트웨어를 빠르게 제공하는 것입니다.

CIO 또는 CTO의 비전 선언문을 살펴보세요. 아마 그들은 이 목표의 어떤 순열을 추적하고 있을 것입니다. 공동의 목표이긴 하지만 천국에 도달하는 팀과 소프트웨어 제공의 지옥에 갇히는 팀 사이에는 넓은 스펙트럼이 있습니다. 인시던트가 거의 발생하지 않거나 고객에 부정적인 영향을 미치지 않으면서 지속해서 새 코드를 프로덕션에 전달하는 팀도 있고 분기별 릴리스에 대한 어려움을 겪는 팀도 있습니다.

엔지니어링 조직의 가장 일반적인 목표는 높은 품질의 소프트웨어를 빠르게 제공하는 것입니다.

CIO 또는 CTO의 비전 선언문을 살펴보세요. 아마 그들은 이 목표의 어떤 순열을 추적하고 있을 것입니다. 공동의 목표이긴 하지만 천국에 도달하는 팀과 소프트웨어 제공의 지옥에 갇히는 팀 사이에는 넓은 스펙트럼이 있습니다. 인시던트가 거의 발생하지 않거나 고객에 부정적인 영향을 미치지 않으면서 지속해서 새 코드를 프로덕션에 전달하는 팀도 있고 분기별 릴리스에 대한 어려움을 겪는 팀도 있습니다.

성능 불일치의 원인은 무엇입니까?


소프트웨어 전송의 복잡성은 높은 품질의 소프트웨어를 빠르게 제공하는 것과 그러지 못하는 것 사이의 차이입니다. 매주 릴리스한 후 승리의 종을 울리는 팀과 몇 달 동안 최신 릴리스를 개발했지만 여섯 개의 새로운 버그와 롤백이 발생해서 좌절한 소프트웨어 제공 팀 간의 차이입니다.

스타트업이 신제품 및 새로운 기능을 제공하는 속도 및 품질을 기존 대규모 조직과 비교해 보세요. 예를 들어 금융 업계에서 핀테크 스타트업은 지난 10년간 기존 대형 은행의 시장 점유율을 떨어뜨렸습니다. 대형 은행은 핀테크 스타트업의 경우 보통 규제 감시가 덜하고 관리할 레거시 방식의 모놀리식 애플리케이션 자산 없이 운영하므로 유리한 점이 있어 불공평하다고 언급합니다. 팀 규모가 작을수록 애질리티와 고객 요구에 따라 방향을 전환하는 능력이 높아질 수 있습니다. 기본적으로 핀테크는 기존 은행처럼 복잡하지 않으므로 더 적은 위험으로 더 빠르게 움직일 수 있습니다. 복잡성은 소프트웨어 팀의 속도를 늦출 수 있지만 복잡성이 항상 나쁜 것만은 아닙니다.

글로벌 네트워크
관련 자료

소프트웨어의 무작위 확장을 관리

세 개의 고리 아이콘
솔루션 보기

Compass를 사용하여 구성 요소 관리

소프트웨어 제공의 복잡성


복잡성은 좋은 것일 수 있습니다. 까다로운 문제를 해결하면 엄청난 보람이 있죠. 팀이 도전에 맞서고 어려운 문제를 해결하고 업계를 정반대로 뒤집어 놓도록 동기를 부여합니다. 반대로 복잡성이 더 이상 어려운 문제 해결에 대한 것이 아니라 소프트웨어 팀에 부정적인 영향을 미치는 시점도 있습니다.

조직의 복잡성은 소프트웨어 팀의 효율성을 줄이는 데 핵심 역할을 합니다. 콜린스 영어 사전에서는 복잡성“여러 부분이 복잡하게 연결되거나 관련된 상태”라고 정의합니다. 실질적으로 말하자면 조직 차원의 복잡성은 소프트웨어 팀이 나머지 조직과 인터페이스할 때 탐색해야 하는 정보, 종속성, 변경, 다른 팀, 도구, 요청의 총합입니다.

조직이 복잡하면 까다로운 문제를 해결하는 것보다 조직을 탐색하는 데 더 많은 시간을 소비하게 되므로 당연히 고품질 소프트웨어를 빠른 속도로 제공하기가 더 어렵습니다. 성장하는 조직은 복잡성 한계에 곧 소프트웨어 팀이 도달한다는 사실을 알게 됩니다. 복잡성 한계는 복잡성이 업무 만족도와 만들어지는 소프트웨어의 품질 및 속도에 영향을 미치기 전에 팀이 헤쳐나갈 수 있는 복잡성의 양입니다. 그렇다면 조직의 복잡성을 줄이면 팀이 까다로운 문제를 해결하고 소프트웨어를 더 빠르게, 더 높은 품질로 제공하는 데 집중할 수 있다는 것이 논리적으로 보일 것입니다. 항상 그렇지는 않은 이유를 알아보겠습니다.

복잡성 한계에 가까워지는지 확인하는 방법


복잡성 한계에 도달하는 것은 어쩔 수 없다고 느껴질 수도 있지만 팀이 한계에 가까워지고 있다는 몇 가지 지표가 있습니다. 설명하기에 앞서 복잡성 한계에 얼마나 가까워졌는지 알려주는 절대적 척도는 없다는 것을 알려드립니다. 하지만 이 메트릭을 통해 복잡성 한계에 얼마나 가까워졌는지 파악할 수 있습니다.

팀이 복잡성 한계에 도달했다는 가장 분명한 지표는 집중해야 할 복잡한 문제를 해결하는 것보다 조직의 복잡성을 탐색하는 데 더 많은 시간을 들일 때입니다. 변경(속도)에 대한 DORA 리드 타임 동향과 변경 실패율(품질) 메트릭을 보면 시간이 지나면서 팀의 속도가 느려지거나 빨라지는 것을 알 수 있습니다. 이 메트릭에 영향을 미치는 다른 요인도 있지만 이 메트릭은 팀 효율성을 나타내는 좋은 지표입니다.

개발자 만족도는 소프트웨어 팀이 조직 차원의 복잡성을 얼마나 헤쳐나가고 있는지 보여주는 또 다른 지표입니다. 다른 어떤 역할보다도 개발자는 까다로운 문제를 해결하는 데 시간을 쓰는 것을 좋아하는 동시에 방해가 되는 불필요한 작업도 싫어합니다. 낮은 개발자 만족도는 조직의 복잡성이 소프트웨어 팀에 문제를 유발하고 있다는 것을 보여주는 좋은 증거입니다.

Best for managing microservices: Compass

Compass hero screen.

Compass is an ideal server management tool. It simplifies handling microservices architectures by putting disconnected data about engineering work and teamwork together in one central, searchable location. 

Compass' features include: 

  • Get full visibility into service details with relevant APIs, libraries, documentation, key health metrics, latest deployment activities, on-call schedules, and more.
  • Document and track upstream and downstream dependencies and understand performance impact across teams and services.
  • View all incidents, deployments, and other critical activities for a service and its dependencies in one place.

Best for CI/CD: Bitbucket Pipelines

Bitbucket pipeline screenshot.

CI/CD is an acronym for continuous integration and continuous deployment

Bitbucket Pipelines is a CI tool that automates processes. It works right out of the box with Bitbucket, an Atlassian cloud-based version control system. It can use code to manage pipelines, letting users commit pipeline definitions and start builds fast. Bitbucket Pipelines also has CD features that allow you to deploy projects to live infrastructure.

Part of the CI/CD development process is to build microservices. Bitbucket Pipelines fosters efficiency by simplifying workflows and integrating with Bitbucket's cloud version control system.

Best for ITSM: Jira Service Management

Jira Service Management is an add-on for Jira Software, a microservices-based application that lets you control IT services, such as incident, problem, and change management. Jira Service Management’s ITSM features allow IT teams to provide excellent service. There are several reasons why that is the case: 

  • Flexibility: JSM's collaborative approach can help streamline service delivery processes.
  • Automation: The automation suite can help automate recurring tasks.
  • Integration: JSM integrates seamlessly with other Atlassian tools.
  • Security: It encrypts all data in transit using TLS 1.2+.
  • Scalability: JSM is an agile ITSM product that can scale up to the enterprise level.

Best for documentation: Confluence

Confluence is a collaborative documentation tool. It’s ideal for creating and sharing documentation, critical in microservices architectures. Confluence offers a wide range of Confluence templates for various setups, including those using Kubernetes and Docker, a microservices tool that helps developers build, deploy, and run containers. 

Confluence templates include multiple features and apps to help you capture, distribute, and update your technical documentation. Also, with Confluence, you can centralize all your documentation in one place and grant access to users only to what they need.

Best for bug tracking: Jira Software

JSW issues screenshot.

Jira Software excels at bug tracking and project management. It provides a platform to track, prioritize, and resolve bugs effectively through an easily navigable interface. Jira Software's bug-tracking features contribute significantly to successful microservices management. They also address the potential for software sprawl.

With Jira Service Management, Jira's capabilities extend to streamline IT service management, including incident, problem, and change management within microservices and monolithic architecture.

Best for monitoring and logging: Prometheus

Prometheus is an open-source tool developers use to manage microservices. It collects extensive metrics, including counters, gauges, histograms, and summaries, that comprehensively view the application's performance. Prometheus also assists in real-time troubleshooting by providing a comprehensive monitoring and alerting system that enables developers and IT teams to identify and resolve issues promptly.

Best for testing microservices APIs: Postman

The distributed nature of microservices architectures significantly hamper traditional testing methodologies. Testing the entire system becomes complex and time-consuming because each microservice is an independent component. This is where a specific microservices testing tool like Postman comes in handy.

Postman simplifies the process of testing microservices APIs. Developers love that it can automate testing, enabling faster and more accurate results.

Some of the ways Postman simplifies the process of testing microservices APIs include: 

  • Visual request builder: Postman's visual request builder makes it easy to construct HTTP requests without writing code. 
  • Request collections: Postman allows you to organize your API requests into collections, making it easy to group related requests and share them with other team members.
  • Predefined tests: Postman provides a library of predefined tests that you can use to validate the responses from your API requests. 
  • Test scripts: Postman allows you to write test scripts using JavaScript, giving you more control over your tests and enabling you to automate complex testing scenarios.

복잡성 한계에 가까워지는지 확인하는 방법


복잡성 한계에 도달하는 것은 어쩔 수 없다고 느껴질 수도 있지만 팀이 한계에 가까워지고 있다는 몇 가지 지표가 있습니다. 설명하기에 앞서 복잡성 한계에 얼마나 가까워졌는지 알려주는 절대적 척도는 없다는 것을 알려드립니다. 하지만 이 메트릭을 통해 복잡성 한계에 얼마나 가까워졌는지 파악할 수 있습니다.

팀이 복잡성 한계에 도달했다는 가장 분명한 지표는 집중해야 할 복잡한 문제를 해결하는 것보다 조직의 복잡성을 탐색하는 데 더 많은 시간을 들일 때입니다. 변경(속도)에 대한 DORA 리드 타임 동향과 변경 실패율(품질) 메트릭을 보면 시간이 지나면서 팀의 속도가 느려지거나 빨라지는 것을 알 수 있습니다. 이 메트릭에 영향을 미치는 다른 요인도 있지만 이 메트릭은 팀 효율성을 나타내는 좋은 지표입니다.

개발자 만족도는 소프트웨어 팀이 조직 차원의 복잡성을 얼마나 헤쳐나가고 있는지 보여주는 또 다른 지표입니다. 다른 어떤 역할보다도 개발자는 까다로운 문제를 해결하는 데 시간을 쓰는 것을 좋아하는 동시에 방해가 되는 불필요한 작업도 싫어합니다. 낮은 개발자 만족도는 조직의 복잡성이 소프트웨어 팀에 문제를 유발하고 있다는 것을 보여주는 좋은 증거입니다.

복잡성 한계 높이기


Why is monitoring and testing important in microservices architecture?

소프트웨어 팀 효율성에 대한 이야기로 돌아가자면 조직은 복잡성 한계를 높여야 합니다. 복잡성 한계를 높인다는 것은 기본적으로 복잡성이 업무 만족도와 팀이 소프트웨어를 제공하는 품질 및 속도에 영향을 미치기 전에 각 팀이 헤쳐나갈 수 있는 조직 차원의 복잡성을 높이는 것을 의미합니다.

플랫폼 엔지니어링은 조직의 복잡성 한계를 높이는 데 중요한 개념입니다. 강력한 플랫폼 엔지니어링 팀은 일상 업무에서 조직의 복잡성을 추상화하여 소프트웨어 팀의 인지 부하를 줄이는 데 집중합니다. 플랫폼 엔지니어링을 제대로 구현하면 팀이 조직 차원의 복잡성을 헤쳐나가는 데 들이는 시간을 줄이면서 까다로운 문제를 해결하는 데 드는 노력의 균형을 다시 조정할 수 있습니다.

What are some common challenges in monitoring microservices?

Atlassian이 개발자 경험 플랫폼인 Compass를 만든 것도 바로 이 이유 때문입니다. Compass를 통해 소프트웨어 팀이 컴포넌트 카탈로그, 메트릭 및 성과 기록표로 조직의 복잡성을 쉽게 탐색하고 건전한 엔지니어링 문화를 만드는 데 집중할 수 있도록 하여 복잡성 한계를 높일 수 있습니다. 여기서 중요한 점은 Atlassian 내에서는 조직의 복잡성이 줄어들지 않았다는 것입니다. 실제로 점점 더 많은 조직이 마이크로서비스 아키텍처로 전환하면서 복잡성은 계속 높아졌습니다. Atlassian은 소프트웨어 팀이 그 복잡성을 헤쳐나가는 데 들이는 시간을 줄였으며 단순화 프로젝트와 복잡성 한계를 높이는 것 간의 차이를 볼 수 있습니다.

Atlassian은 10,000명이 넘는 직원과 17,000개 이상의 소프트웨어 컴포넌트를 보유하고 있지만 Atlassian의 소프트웨어 팀은 대체로 스타트업처럼 자유롭게 운영하며 높은 품질의 소프트웨어를 빠르게 제공합니다. 성공의 열쇠는 소프트웨어 팀 효율성을 개선하기 위해 복잡성 한계를 높인 것입니다.

복잡성 한계를 높이기 위한 두 가지 작업은 다음과 같습니다.

  • DORA 메트릭을 추적하고 평가합니다. 팀의 DORA 메트릭은 어떻습니까? 아직 이 메트릭을 추적하고 있지 않으시다면 DORA 메트릭은 Compass와 함께 즉시 사용할 수 있도록 제공됩니다.
  • 개발자 만족도를 이해하고 평가합니다. 개발자는 소프트웨어 팀에 대해 어떻게 생각하고 있습니까? 대부분의 조직에서는 직원 만족도 설문조사를 실시합니다. 개발자 만족도에 대한 인사이트를 확보하기 위해 직무 영역별로 분류한 결과를 물어보세요. 주요 질문에는 다음과 같은 문장에 점수를 매기는 것이 포함됩니다.
    • 나는 제품을 자랑스럽게 제공한다
    • 내 일에서 받는 스트레스는 감당할 수 있는 정도이다
    • 나는 내가 하는 일이 회사 목표에 어떻게 기여하는지 이해한다

또는 Compass에서 CheckOps 리추얼 중에 이 정보를 캡처할 수 있습니다. CheckOps 리추얼에서는 팀이 지난주에 대해 어떻게 생각하는지와 어떤 점을 개선할 수 있는지에 대한 세부 정보를 공유합니다.

복잡성 한계를 높이려면 도구, 프로세스, 리추얼을 함께 사용해야 합니다. Compass와 같은 개발자 경험 플랫폼으로 시스템 상태를 이해하고 종속성을 매핑하고 지속적인 계획을 세울 수 있어 복잡성 한계를 높이고 조직 내 소프트웨어 제공 팀의 잠재력을 발휘할 수 있습니다.

지금 Compass를 무료로 사용해 보세요.

What are some best practices for monitoring and testing microservices?

To test and monitor microservices effectively, use monitoring data, set the proper alert levels, automate tests, set up continuous integration and delivery pipelines, and regularly test their performance and security. These methods ensure that your platforms work reliably. 

Join the Atlassian Community for more Microservices articles and discussions.


이 문서 공유
다음 토픽

여러분께 도움을 드릴 자료를 추천합니다.

이러한 리소스에 책갈피를 지정하여 DevOps 팀의 유형에 대해 알아보거나 Atlassian에서 DevOps에 대한 지속적인 업데이트를 확인하세요.

DevOps 일러스트레이션

Compass 커뮤니티

장애물 극복 일러스트레이션

자습서: 컴포넌트 만들기

맵 일러스트레이션

Compass 무료로 시작하기

DevOps 뉴스레터 신청

Thank you for signing up