■ 플랫폼 엔지니어링이란?
플팻폼 엔지니어링이란 단어가 생소하게 들리실 겁니다. 이는 내부 사용자(개발자, 엔지니어 등)에게 셀프서비스 인프라 플랫폼을 제공하여 소프트웨어 및 수명주기를 관리하는 지원분야를 뜻합니다. 본 기술을 통해 디지털전환을 가속화 할 수 있으며, 새로운 트렌드에 맞춰 개발자 생산성 향상 할 수 있습니다.
■ 플랫폼 엔지니어링 특징
◐ DevOps와의 관계
플랫폼 엔지니어링은 DevOps와 유사하지만 각자의 고유한 특성을 갖고 있습니다. 플랫폼 엔지니어링은 DevOps의 발전된 형태인데요. 개발수명 주기의 복잡성을 관리하기 위한 중앙화된 도구와 지원을 제공합니다.
◐ 중앙 집중식 제어와 팀 자율성의 균형
플랫폼 엔지니어링은 중앙 집중식 제어와 팀 자율성 간의 상충하는 요구사항을 조율하는데 도움을 줍니다. 이를 통해 품질과 생산성을 향상시킬 수 있습니다.
◐ 내부 개발자 플랫폼(IDP, Internal Developer Platform)
플랫폼 엔지니어링의 핵심개념으로 개발자들이 셀프서비스로 인프라를 구축하고 애플리케이션을 배포할 수 있는 플랫폼을 의미합니다.
■ 플랫폼 엔지니어링의 주요 기술
◐ Red Hat Enterprise Linux(RHEL)
Red Hat Enterprise Linux를 통해 하이브리드 클라우드를 유지할 수 있으며, 유연하고 안정적인 운영체제를 갖출 수 있습니다. RHEL은 레드햇이 개발한 상용 Linux 운영체제입니다. 18~24개월 마다 새로운 버전이 출시되고 있는데요. 각 버전은 7년간 기술지원이 제공됩니다. RHEL은 서브스크립션 방식으로 판매되고 있는데요. 계약 기간 중 추가비용 없이 업그레이드와 다운그레이드가 가능합니다.
◐ Red Hat OpenShift
Red Hat OpenShift를 통해 애플리케이션 규모에 맞춰 빌드 및 현대화를 기대할 수 있습니다. 주요기능을 살펴보면 컨데이너기반의 애플리케이션을 배포하고 관리를 할 수 있으며, 자동화된 CI/CD 파이프라인을 구축할 수 있습니다. 확장성 있는 클러스터링 및 스케일링이 가능하며 보안 및 규정준수 기능을 제공하고 있습니다.
■ 플랫폼 엔지니어의 주요 역할
◐ 아키텍처 설계
아키텍처 설계는 대규모 시스템의 아키텍처를 설계하고 구축하는 시스템을 의미합니다.. 이를 통해 시스템의 안정성과 확장성, 보안성 등을 유지할 수 있습니다. 아키텍처 설계는 시스템의 품질속성과 구조와 구성 요소 간 관계 등을 결정함으로 매우 중요한 역할을 합니다. 이에 고려사항이 있는데요. 성능과 확장성, 보안, 유지보수성 등 시스템 품질 등의 요구사항을 해결할 수 있어야 합니다. 또한 아키텍처 스타일에 있어 부족함이 없어야 하는데요. 계층형, 마이크로서비스, 이벤트 기반 등의 다양한 아키텍처 스타일 중 적합한 것을 선택해야 원활하게 운영할 수 있습니다. 다음은 클래스 간 관계를 생각해봐야 하는데요. 시스템을 구성하는 클래스 간 의존성과 상속, 합성 등의 관계까지도 고려해야 합니다.
◐ 플랫폼 구축 및 운영
개발자와 엔지니어가 사용할 수 있는 셀프서비스 인프라 플랫폼을 구축할 수 있습니다. 그 과정에 개발자와 협력하여 사용자의 요구사항을 반영해 설계해야 하는데요. 플랫폼 운영관리에 있어 플랫폼의 모니터링 및 장애에 대응할 수 있어야 합니다. 또한 플랫폼 업데이트 및 패치관리에도 부족함이 없어야 합니다. 이를 위해서는 플랫폼 사용자 지원 및 교육 또한 진행이 되어야 합니다.
◐ 자동화 및 표준화
반복적인 작업을 자동화하고 표준화된 프로세스와 도구를 제공할 수 있어야 합니다. 자동화 되어야 하는 것에는 이것만 있는 것은 아닌데요. 인프라 프로비저닝, 배포, 모니터링 등의 자동화 또한 이루어져야 합니다. 그리고 개발자 셀프서비스 기능도 제공이 되어야겠습니다.
◐ 모니터링 및 지원
다음으로 플랫폼 모니터링에 대해 알아보겠습니다. 플랫폼 모니터링의 구성요로 3가지를 들 수 있는데요. 인프로와 애플리케이션, 네트워크 입니다. 이와 같은 요소를 상태점검과 모니터링 하는 것이 주요사항이 되는데요. 로그 및 메트릭 수집, 분석을 통해 이상징후를 감지하는 것도 이에 대한 방안이라 할 수 있습니다. 결과에 있어 모니터링 대시보드 및 알람설정 등으로 장애에 대한 신속한 대응이 가능해집니다.
■ 플랫폼 엔지니어링의 실사례
◐ Netflix
그렇다면 플랫폼 엔지니어링 기술이 기업에 있어 어떻게 활용되는지 실사례로 알아보겠습니다. Netflix는 자사의 클라우드 플랫폼 ‘Titus’를 개발하여 운영하고 있습니다. 여기서 Titus란 컨데이너 관리 및 스케줄링, 모니터링 등의 기능을 제공하여 개발자의 생산성을 향상하는 시스템을 의미합니다. 이를 통해 자동화된 배포와 운영프로세스의 신속한 업데이트가 가능해졌습니다.
◐ Spotify
음악 어플리케이션 Spotify에 대해 알고 계실겁니다. Spotify는 자사의 플랫폼 “Backstage”를 개발하였습니다. Backstage는 마이크로서비스 관리 및 문서화, 배포자동화의 기능을 제공하는데요. 개발자가 자신의 서비스를 쉽게 등록하고 관리할 수 있도록 도움을 주고 있습니다.
◐ Uber
다음은 Uber 입니다. Uber는 자사의 플랫폼 ‘Hailstorm’을 개발하였습니다. 이를 통해 인프라 관리자동화가 이루어 졌는데요. Hailstorm은 클라우드 리소스 프로비저닝, 모니터링, 배포 자동화 등의 기능을 갖고 있습니다. 또한 개발자가 애플리케이션 개발에 집중할 수 있도록 도움을 줄 수 있습니다.