플랫폼 엔지니어링이란 무엇입니까?

플랫폼 엔지니어링은 소프트웨어 엔지니어링 회사가 셀프서비스 기능을 활용할 수 있도록 지원하는 도구 체인 및 워크플로를 설계하고 만드는 프로세스입니다. 여기에는 개발 프로세스를 간소화하고 비즈니스 복잡성을 제거하기 위해 중앙 집중식 도구, 서비스 및 자동화된 워크플로를 갖춘 내부 개발자 플랫폼(IDP)을 만드는 것도 포함됩니다.

플랫폼 엔지니어는 이러한 플랫폼의 설계, 구현 및 유지 관리를 담당합니다. 업데이트를 제공하고 인프라를 모니터링하고 플랫폼 및 애플리케이션을 지원하며 셀프서비스 기능 및 워크플로 자동화를 적용합니다.

이 문서에서는 플랫폼 엔지니어링의 핵심 개념, 플랫폼 엔지니어의 핵심 책임 및 샘플 플랫폼 엔지니어링 워크플로를 살펴봅니다. 또한 플랫폼 엔지니어링의 이점 및 도전 과제, 사용하는 도구 및 기술에 대해서도 알아봅니다.

플랫폼 엔지니어링의 핵심 개념

플랫폼 엔지니어링은 소프트웨어 개발 프로세스에서 DevOps 원칙 및 IDP와 상호 연결됩니다. 이 핵심 개념에 대한 정의는 다음과 같습니다.

DevOps는 개발(Dev)과 운영(Ops)을 통합하고 공동 작업, 자동화 및 지속적 개선을 강조하는 일련의 관행 및 도구입니다. 이 접근 방식은 효율적인 소프트웨어 제공을 지원하기 위해 지속적 통합, 지속적 배포(CI/CD) 및 코드형 인프라(IaC)를 권장합니다.

Compass와 같은 IDP는 이 DevOps 접근 방식을 활용하여 개발자가 도구에 액세스하고 CI/CD 파이프라인을 자동화하고 환경을 관리하며 성능을 모니터링할 수 있는 통합 인터페이스를 제공합니다.

플랫폼 엔지니어링은 IDP의 설계, 구축 및 유지 관리를 담당합니다. 또한 조직의 복잡성 한계를 높이는 데에도 필수적입니다. 복잡성 한계는 직무 만족도, 소프트웨어 품질 및 소프트웨어 개발 효율성에 영향을 미치기 전까지 팀이 감당할 수 있는 복잡성의 정도입니다.

플랫폼 엔지니어의 핵심 책임

플랫폼 엔지니어링 팀은 개발자가 개발 및 배포에 사용하는 내부 도구 및 환경의 구축을 담당합니다. 개발자 경험을 개선하는 동시에 플랫폼이 조직의 구체적인 요구 사항에 부합하도록 보장해야 합니다. 플랫폼 엔지니어는 자동화, 보안 및 확장성에 중점을 두고 사용자 친화적이고 안전하고 효율적인 플랫폼을 만듭니다.

또한 플랫폼 엔지니어링 팀은 일상 업무에서 조직의 복잡성을 추상화하여 소프트웨어 팀의 인지 부하를 줄이기 위해 노력합니다. 플랫폼 엔지니어링을 올바르게 구현하면 팀이 소프트웨어 개발에 더 많은 시간을 집중하게 됩니다.

플랫폼 엔지니어의 핵심 책임은 다음과 같습니다.

  • 인프라 설계 및 구현: 플랫폼 엔지니어는 IaC 도구를 사용하여 확장 가능하고 안정적이며 자동화된 인프라를 설계하고 구현합니다. 설계 및 구현을 통해 일관되고 반복 가능한 인프라 관리를 보장하고 수동 오류를 줄이며 배포 프로세스를 가속화합니다.

  • CI/CD 파이프라인 구축: 엔지니어는 CI/CD 파이프라인을 구축 및 유지 관리하여 소프트웨어 제공을 자동화합니다. 이 프로세스에는 코드 변경 사항 적용, 자동화된 테스트 실행 및 원활한 업데이트 배포가 포함되며, 이를 통해 빠르고 안정적인 소프트웨어 릴리스가 보장됩니다.

  • 플랫폼 유지 관리 및 확장: 플랫폼 엔지니어는 조직의 증가하는 요구 사항을 충족하기 위해 플랫폼을 유지 관리하고 확장합니다. 이 프로세스에는 고가용성 및 최적화된 성능을 보장하는 오케스트레이션 도구를 사용하여 컨테이너화된 애플리케이션을 관리하는 작업이 포함됩니다. 플랫폼 엔지니어는 사용자 지정 도구 및 새로운 서비스를 추가하거나 기존 워크플로를 수정하여 변화하는 요구 사항에 맞게 플랫폼을 조정합니다.

  • 보안 조치 구현: 엔지니어는 강력한 보안 조치 및 표준을 구현하여 인프라 및 애플리케이션을 보호합니다. 이 구현에는 보안 검사 자동화, 규정 준수 정책 적용 및 액세스 제어 관리가 포함됩니다. 이를 통해 취약성을 방지하고 규정 준수를 보장합니다.

  • 공동 작업 및 지원: 플랫폼 엔지니어는 개발 및 운영 팀과 공동 작업하여 지원을 제공하고 원활한 플랫폼 운영을 보장합니다. 이러한 팀과의 긴밀한 협력을 통해 요구 사항을 파악하고 문제를 해결하며 지속적으로 플랫폼을 개선하여 개발자 생산성 및 운영 효율성을 높입니다. 플랫폼 엔지니어는 워크플로 관리 도구를 사용하여 원활하게 공동 작업할 수 있습니다.

플랫폼 엔지니어링 워크플로

플랫폼 엔지니어링 워크플로는 강력하고 확장 가능하며 안전한 플랫폼을 구축하고 유지 관리하기 위한 체계적인 접근 방식을 보장합니다.

  1. 요구 사항 수집: 플랫폼 엔지니어는 이해 관계자와 공동 작업하여 개발 및 운영 팀의 필요 및 요구 사항을 파악합니다. 이 단계에서는 회사의 목표를 지원하는 데 필요한 도구, 기술 및 프로세스를 파악합니다. 대개 플랫폼의 구성 요소 및 상호 작용을 시각화하기 위해 순서도를 만드는 작업이 포함됩니다.

  2. 설계 및 아키텍처: 엔지니어는 수집된 요구 사항을 기반으로 인프라 및 아키텍처를 설계합니다. 이 프로세스에는 확장성, 안정성 및 보안을 보장하기 위해 적합한 기술을 선택하고 시스템 구성 요소를 정의하며 상세한 아키텍처 다이어그램을 작성하는 작업이 포함됩니다.

  3. 구현 및 개발: 플랫폼 엔지니어는 IaC 및 기타 자동화 도구를 사용하여 인프라 및 플랫폼 구성 요소를 구현합니다. 엔지니어는 CI/CD 파이프라인을 개발하고 컨테이너 오케스트레이션을 구성하고 필요한 서비스를 통합하여 응집력 있는 플랫폼을 구축합니다.

  4. 테스트 및 유효성 검사: 개발 환경의 모든 변경 사항을 프로덕션 환경에 적용하기 전에 포괄적인 테스트를 통해 플랫폼 기능, 성능 및 보안의 유효성을 검사합니다. 이 단계에는 플랫폼이 모든 요구 사항 및 표준을 충족하는지 확인하기 위한 자동화된 테스트, 로드 테스트 및 보안 평가가 포함됩니다.

  5. 배포 및 유지 관리: 엔지니어는 플랫폼을 프로덕션 환경에 배포합니다. 지속적인 유지 관리는 안정성 및 성능을 보장합니다. 이 단계에는 필요에 따라 모니터링, 확장, 업데이트 또는 패치 적용이 포함됩니다.

  6. 피드백 및 반복: 사용자 및 이해 관계자의 지속적인 피드백을 통해 개선 영역을 파악합니다. 엔지니어는 회사의 변화하는 요구 사항을 더 효과적으로 충족하는 데 필요한 조정 및 개선을 수행하면서 플랫폼을 반복적으로 개선합니다. 스크럼 또는 칸반과 같은 애자일 방법론을 사용하여 이러한 반복을 관리할 수 있습니다.

플랫폼 엔지니어링의 이점

플랫폼 엔지니어링은 조직의 소프트웨어 개발 및 제공 프로세스를 크게 향상할 수 있는 다양한 이점을 제공합니다. 주요 이점은 다음과 같습니다.

개발자 생산성 향상

플랫폼 엔지니어링은 다양한 작업 및 프로세스를 간소화하고 자동화하여 개발자가 코드 작성 및 기능 제공에 더 집중할 수 있도록 지원하는 것을 목표로 합니다. 셀프서비스 플랫폼, 자동화된 워크플로 및 재사용 가능한 구성 요소를 활용하면 개발자는 반복적인 수작업에 소요되는 시간을 줄이고 가치 창출 활동에 더 많은 시간을 집중할 수 있습니다.

애플리케이션 시장 출시 기간 단축

회사는 플랫폼 엔지니어링을 활용하여 자동화, 표준화 및 간소화된 프로세스를 통해 소프트웨어 제공 수명 주기를 가속화할 수 있습니다. CI/CD 파이프라인, 자동화된 테스트 및 IaC 관행은 더 빠르고 빈번한 릴리스를 지원하고 새로운 애플리케이션 및 기능의 시장 출시 기간을 단축합니다.

애플리케이션 확장성 및 안정성 향상

플랫폼 엔지니어링은 컨테이너화 및 오케스트레이션 도구와 같은 클라우드 네이티브 기술의 도입을 촉진합니다. 이 기술은 확장성이 뛰어나고 복원력이 강하며 내결함성을 갖춘 애플리케이션을 구현하여 과부하 또는 시스템 장애가 발생하더라도 일관된 성능을 보장합니다.

운영 비용 절감

플랫폼 엔지니어링은 인프라 프로비전, 구성 관리 및 배포 프로세스를 자동화하여 회사가 리소스 활용을 최적화하고 운영 비용을 절감할 수 있도록 지원합니다. 또한 표준화된 플랫폼 및 재사용 가능한 구성 요소는 중복 작업 및 기술 부채를 최소화하여 비용 절감에 기여합니다.

개발자 경험 향상

플랫폼 엔지니어링은 개발자에게 도구, 리소스 및 환경에 대한 셀프서비스 기능을 제공하여 원활하고 효율적인 개발 경험을 만드는 것을 목표로 합니다. 워크플로 관리 솔루션 및 프로젝트 계획 도구가 이 경험에 도움이 됩니다. 개발자는 마찰 및 병목 상태를 줄여 더 자율적으로 작업하고 혁신 및 공동 작업의 문화를 누릴 수 있습니다. 개발자 경험이 향상되면 직무 만족도가 높아져 핵심 인재를 유치하고 유지하는 데 도움이 됩니다.

플랫폼 엔지니어링의 도전 과제

플랫폼 엔지니어링에는 효율적이고 안정적인 시스템을 유지하기 위해 여러 복잡한 도전 과제를 해결하는 작업이 포함됩니다.

혁신과 안정성의 균형 유지

플랫폼 엔지니어는 안정성 및 신뢰성을 보장하는 동시에 시스템 개선을 위한 혁신을 실천해야 합니다. 그러나 급격한 변화는 위험을 초래할 수 있습니다. 새로운 기술 도입과 안정적인 환경 유지 사이에서 적절한 균형을 찾는 것은 매우 중요하며, 신중한 프로젝트 계획 및 프로젝트 로드맵을 통해 그 목표를 달성할 수 있습니다.

기술 부채 관리

회사가 빠른 수정 또는 차선책을 통해 당면한 요구 사항을 충족하려고 하면 기술 부채가 쌓입니다. 플랫폼 엔지니어는 향후 개발에 지장을 주지 않으면서 장기적인 시스템 건전성을 유지할 수 있도록 이 부채를 해결해야 합니다.

발전하는 기술 속도에 맞추기

기술 환경은 끊임없이 발전합니다. 플랫폼 엔지니어는 최신 도구, 프레임워크 및 모범 사례를 지속적으로 파악해야 합니다. 새로운 기술을 효과적으로 통합하려면 지속적인 학습 및 적응이 필요합니다.

플랫폼 보안 보장

엔지니어는 강력한 보안 조치를 구현하여 취약성을 방지하고 규제 표준을 준수해야 합니다. 여기에는 보안 프로토콜에 대한 지속적인 모니터링 및 업데이트가 포함됩니다.

플랫폼 엔지니어링에 사용하는 도구 및 기술

개발 방법론을 결정하는 경우 플랫폼 엔지니어는 종종 어떤 접근 방식이 팀의 요구 사항 및 목표에 가장 적합한지 판단하기 위해 칸반과 스크럼을 비교합니다.

구체적인 도구 선택은 회사의 기술 스택, 클라우드 공급자 및 요구 사항에 따라 달라집니다. 하지만 플랫폼 엔지니어링에 사용하는 필수 도구 및 기술은 다음과 같습니다.

  • IDP는 소프트웨어 팀이 자율적이고 더 빠르게 소프트웨어를 제공할 수 있도록 지원하는 도구, 서비스 및 프로세스로 구성된 내부 제품입니다.

  • 클라우드 플랫폼은 플랫폼 엔지니어링의 기반이 되는 기본 인프라 및 서비스를 제공합니다. Compass와 같은 클라우드 기반 IDP 옵션은 자체 플랫폼을 유지 관리하는 비용 및 오버헤드 없이 간소화된 온보딩 및 확장성을 제공합니다.

  • CI/CD 도구는 자동화된 애플리케이션 빌드, 테스트 및 배포를 지원합니다. IDP 내에 안정적이고 반복 가능한 소프트웨어 제공 파이프라인 및 주요 통합을 구현하는 데 매우 중요합니다. CI/CD 파이프라인은 코드 변경 사항을 원활하게 통합하고 배포하도록 보장합니다. 멀티 클라우드 지속적 제공 플랫폼은 배포 파이프라인 자동화를 통해 릴리스를 프로덕션 환경에 적용하는 시점을 제어하여 빠른 속도 및 높은 신뢰성을 기반으로 소프트웨어 변경 사항을 릴리스할 수 있습니다. 이전 롤아웃이 실패할 경우 다음 롤아웃을 방지하고 롤백을 더 쉽게 수행하도록 도와줍니다.

  • 인시던트 관리 기능을 통해 팀은 이슈에 신속하게 대응하고 해결할 수 있습니다. IDP를 Jira Service Management와 같은 도구에 연결하면 자동화된 알림, 근본 원인 분석 및 인시던트 추적이 가능하므로 팀은 한 곳에서 서비스 상태와 안정성에 영향을 미치는 요소를 확인할 수 있습니다.

  • IaC 도구는 코드를 통해 클라우드 인프라를 정의하고 관리할 수 있게 하여, 일관되고 반복 가능한 인프라 프로비저닝을 지원합니다.

  • 컨테이너 기술은 애플리케이션을 이식 가능하고 격리된 컨테이너로 패키징합니다. 컨테이너 오케스트레이션 플랫폼은 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화합니다.

  • 관측성 및 모니터링 도구는 메트릭, 로그 및 트레이스를 수집하여 애플리케이션과 인프라의 상태 및 성능에 대한 가시성을 확보하는 기능을 제공합니다. IDP에는 애플리케이션 성능 모니터링, 로깅, 오류 추적 및 트레이싱을 포함하여 애플리케이션 성능과 리소스 사용량에 대한 실시간 인사이트를 제공하는 관측성 도구가 통합되어 있습니다. 팀은 플랫폼에서 애플리케이션을 모니터링할 수 있으므로 이슈를 더 빠르고 쉽게 식별하고 해결할 수 있습니다.

  • 보안 및 규정 준수 도구는 보안 스캔, 암호 관리, 정책 시행 및 규정 준수를 지원합니다. 자동화된 취약성 스캔과 같은 연결된 보안 도구는 기본 규정 준수 제어 및 보안 성과 기록표와 결합되어 애플리케이션이 조직의 보안 표준을 충족하도록 보장하며, 개발자가 수동으로 보안을 관리할 필요성을 줄여줍니다.

  • 서비스 메시 도구는 마이크로서비스 아키텍처에서 서비스 간 커뮤니케이션을 관리하기 위한 전용 인프라 계층을 제공합니다. 이 도구는 트래픽 관리, 보안, 관측성 등의 기능을 지원합니다.

Compass로 플랫폼 엔지니어링을 개선하세요

플랫폼 엔지니어링은 소프트웨어 개발에서 복잡하지만 필수적인 분야입니다. 이에는 혁신과 안정성 사이의 섬세한 균형이 필요합니다. 제대로 구현된 플랫폼 엔지니어링은 개발자가 셀프서비스 기능을 활용할 수 있도록 지원하고 소프트웨어 제공을 가속화하며 애플리케이션 안정성을 향상합니다.

Atlassian의 IDP인 Compass는 이미 수천 개의 조직에서 플랫폼 팀이 대규모 개발자 경험과 소프트웨어 개발을 개선할 수 있도록 지원해 왔습니다.