Jump to section

플랫폼 엔지니어링이란?

URL 복사

플랫폼 엔지니어링은 생산성, 애플리케이션 주기, 시장 출시 시간을 개선하는 데 중점을 둔 소프트웨어 개발의 한 분야입니다.

플랫폼 엔지니어링은 기업 문화와 생산성을 개선하고 수익성을 개선하기 위한 종합적인 접근 방식으로 간주되어야 합니다. 비즈니스 관점에서 플랫폼 엔지니어링 프로그램은 애플리케이션의 시장 출시 시간을 단축하고, 운영을 최적화하고, 애플리케이션의 개발, 배포, 유지 및 관리의 효율성을 개선합니다. 문화적 관점에서는 팀 간 협업을 개선하고, 개발자가 가장 중요한 작업에 집중하는 데 필요한 툴과 지원을 제공하여 업무 부담을 완화하는 것을 목표로 합니다.

플랫폼 엔지니어링의 핵심 목표는 개발 팀에 영향을 미치는 고충을 파악하고 내부 개발자 플랫폼(IDP)을 통해 재사용 가능한 공동 툴과 기능을 제공함으로써 그러한 고충을 완화하는 것입니다.

플랫폼 엔지니어링은 특정 직무일 수도 있고 개인들로 구성된 그룹이 하나의 팀 이니셔티브로 수행하는 규칙이나 방법론일 수 있습니다.

플랫폼 엔지니어링은 일관성과 효율성을 높여 조직에 긍정적인 영향을 미칩니다. 또한 팀 간 협업과 효율성을 강화하여 새로운 팀원이 업무에 빠르게 적응할 수 있게 해줍니다.

플랫폼 엔지니어링의 핵심은 개발자 생산성을 저해하고 애플리케이션 라이프사이클의 장애 요소가 될 수 있는 관리 태스크에 소요되는 시간을 줄이는 것입니다. 이를 위해 플랫폼 엔지니어와 플랫폼 엔지니어링 팀은 인프라를 관리하고, 개발자의 요구 사항에 부합하도록 설계된 워크플로우(이른바 ‘최적의 경로’)를 통해 개발자를 지원하는 툴 세트를 개발합니다.

같은 회사 내에서도 개발 팀마다 요구 사항이 다르기 때문에 개발 플랫폼은 제각각 다릅니다. 플랫폼 엔지니어는 이를 이해하고 셀프 서비스 기능과 자동화된 인프라를 통해 조직의 고유한 요구 사항에 맞는 맞춤형 툴과 프로세스 세트를 엄선하여 소프트웨어 개발자를 지원합니다. 이처럼 적응성이 강화되면 개발자는 획일적인 솔루션의 제약 없이 자신의 프로젝트 요구 사항에 가장 적합한 툴로 작업할 수 있습니다. 그 뿐만 아니라, 새로운 기술 역량을 확보하고 불필요한 작업을 수행할 필요가 줄어들기 때문에 개발자는 본래 업무인 코딩에 집중할 수 있습니다.

또한 플랫폼 엔지니어링 팀은 강력한 거버넌스 프레임워크를 마련하여 모든 환경에서 리소스, 보안, 컴플라이언스에 대한 제어 권한을 유지할 수 있습니다. 그러면 성능 모니터링, 비용 추적, 잠재적 위험이나 취약점 식별 등을 더욱 직접적으로 수행하는 장점도 누릴 수 있습니다. 

플랫폼 엔지니어링의 기원

'개발자는 인프라에 신경쓰지 않아야 하며, 하이브리드 및 멀티클라우드 환경에서는 더욱 그렇다'는 기술 분야의 새로운 논의에 대한 대응으로 플랫폼 엔지니어링이 등장했습니다. 

전통적으로, 요구 사항을 해결하기 위한 툴을 찾거나 그러한 툴을 처음부터 개발하는 것이 개발자의 역할이었습니다. 이전에는 기술의 기본 버전(iteration)을 더 많이 사용해 이러한 직무 기대치를 충족할 수 있었으나, 엔터프라이즈급 조직에서 일하는 오늘날 개발자들에게는 비즈니스 성장에 따라 사용자를 지원하고 효과적으로 확장하는 일이 점점 복잡하고 분산된 작업이 되었습니다.

매일 새로운 툴이 출시되고, 언제나 새로운 기능들을 익혀야 하며, 직무에 적합한 툴을 평가하고 선택하는 데 시간을 투자해야 합니다. 이렇게 새로운 툴링 역량을 익히고 새로운 기술을 연구하며 인프라와 애플리케이션 서비스를 요청하고 최신 보안 위협을 파악하는 데 시간을 들이면 정신적인 에너지와 리소스 소모가 많아지므로 판매 중인 제품을 개선하고 비즈니스 우선순위를 실현하는 데 충분한 시간을 투자할 수가 없습니다. 

플랫폼 엔지니어링 영역에서 개발자가 고객이라면 내부 개발자 플랫폼(IDP)은 제품입니다.

IDP는 플랫폼 엔지니어링 팀에서 구성하며, 개발자가 애플리케이션 라이프사이클 전체에서 코드를 개발, 배포, 유지 관리하는 데 필요한 내부 셀프 서비스 툴과 기술의 표준화된 세트로 구성됩니다. IDP에 통합된 툴체인은 개발자에게 더욱 긍정적이고 생산적인 워크플로우를 지원하고 보안 및 확장성과 같은 요소에 초점을 맞춰 궁극적으로 기업이 더 많은 고객 가치를 창출하는 데 도움이 됩니다.

효과적인 IDP를 개발한다는 것은 개발자 경험에서 발생하는 마찰을 적극적으로 찾고 그러한 마찰을 제거하거나 완화할 수 있는 툴과 기술을 엄선한다는 것을 의미합니다. 최소화된 접근 방식으로 시작해 개발 팀에 유익하다고 판단되는 툴만 통합하세요. 그런 다음 개발 팀의 요구 사항에 따라 향상시킬 수 있는 기능을 점진적으로 확장하고, 그 과정에서 피드백을 받아보세요. 

DevOps와 마찬가지로 플랫폼 엔지니어링은 자동화와 협업을 강화하여 개발자와 운영 팀 간 조율을 개선한다는 공통된 목표를 갖고 있습니다. 두 사례 간 관계를 고려할 때 플랫폼 엔지니어링은 전사적인 DevOps 확장에 따른 과제를 해결하기 위한 중요한 상호 보완적인 요소로 간주할 수 있습니다.

전통적으로 DevOps 사례에서는 개발자가 직접 소프트웨어를 찾아 학습, 배포, 관리하도록 권장하여 프로덕션 단계에서 소프트웨어에 대한 인사이트와 제어 권한을 더 많이 확보할 수 있었습니다. 그러나 이러한 방식이 언제나 수익성에 긍정적인 것은 아닙니다. 오히려 개발자의 관리 오버헤드를 추가하고 업무 부담을 늘릴 수 있습니다.

기능을 제공하는 데는 관심이 있으나 이에 필요한 기술 역량은 갖추지 못한 팀이 있을 수 있습니다. 또는 기술 역량은 있으나 이를 구축하는 데는 관심이 없을 수 있고, 기술과 관심은 있으나 보안이나 비용상의 이유로 아이디어를 실행하기가 어려운 경우도 있을 수 있습니다. 조직이 확장되고 성장할수록 이러한 상황은 더 복잡해질 뿐입니다.

DevOps와 지속적 제공을 도입한 결과, 파이프라인과 툴체인이 늘어났고, '보안을 초기에 통합(Shifting Left)'(애플리케이션을 개발하고 유지 관리할 때 워크플로우의 각 단계를 보호하는 방법을 완벽하게 이해)해야 한다는 부담까지 추가되어 개발자는 자신이 빌드하는 애플리케이션과 관련된 점점 더 많은 난제를 파악해야 하는 책임을 안게 되었습니다.

이러한 자율성이 자유롭게 느껴질 수도 있지만 책임감 약화와 정신적 부담으로 이어져 결국에는 개발자 개인에게도 조직에게도 도움이 되지 않는 결과가 초래될 수 있습니다.

반면 플랫폼 엔지니어링은 사용자 여정을 중심으로 공감대를 형성할 수 있게 하여 애플리케이션 제공을 자동화하고, 협업과 소통을 개선하고, 오류를 줄이고, 보안 및 컴플라이언스를 강화하고, 효율성을 향상하고, 무엇보다 가장 필요한 부분에 개발자의 역량을 다시 투입하는 효과적인 방법을 찾아 DevOps 기반의 전략을 도출할 수 있습니다. 

플랫폼 엔지니어링과 사이트 신뢰성 엔지니어링의 공통 분모는 시스템을 개발하고 유지 관리한다는 것입니다. 두 개념의 차이점은 각 사례가 강조하는 부분이 다르다는 데 있습니다. SRE는 IT 운영 팀이 중심이 되어 시스템 관리, 문제 해결, 운영 태스크 자동화 작업을 수행하는 툴로 소프트웨어를 사용하도록 지원합니다.

플랫폼 엔지니어는 개발 팀을 중심으로 시스템 관리, 문제 해결, 개발 태스크 자동화 등을 위한 플랫폼을 개발하도록 돕습니다. 

Red Hat® OpenShift®는 플랫폼 엔지니어링 팀에 빌드파이프라인GitOps서버리스서비스 메쉬와 같은 통합 기능 세트를 제공하는 데 적합합니다.

Red Hat Developer Hub와 통합된 OpenShift는 조직의 요구 사항과 목표에 맞는 고유의 내부 개발자 플랫폼을 효과적으로 구축하고 관리하는 데 필요한 프로젝트 템플릿, 도큐멘테이션, 워크플로우를 엔지니어링 팀에 제공합니다.

개발자는 Red Hat Developer Hub를 사용하여 통합 대시보드에 연결하고 엄선된 다양한 툴, 소프트웨어 템플릿, 도큐멘테이션, 기타 리소스에 액세스하여 고품질 소프트웨어를 효율적으로 구축할 수 있습니다. 또한 Developer Hub는 개발자가 기존 프로젝트에 참여하는 데 필요한 정보와 리소스를 통합하므로 온보딩 시간이 최소화됩니다.

이 플랫폼은 오픈소스 혁신을 중심으로 유연성을 제공하고 벤더 종속성을 방지합니다. 안정성, 지원, 신뢰성에 대한 Red Hat의 높은 평판도 사용자가 안심하고 사용할 수 있게 해줍니다. 뿐만 아니라 Developer Hub는 확장성과 더불어 플러그인을 통해 새로운 툴과 서비스를 손쉽게 통합할 수 있게 지원하므로 향후 개발 요구 사항 변화에 대응할 수 있습니다.

OpenShift, Red Hat Developer Hub, Trusted Software Supply ChainAdvanced Cluster Security(ACS)Advanced Cluster Management(ACM)Ansible 등을 핵심 구성 요소로 사용하는 플랫폼 엔지니어는 통합 툴체인과 워크플로우를 설계하고 구축하여 더욱 원활하고 효율적인 개발자 환경을 제공할 수 있습니다. 

추가 자료

문서

DevSecOps란?

DevOps의 민첩성과 대응 능력을 최대한 활용하려면 IT 보안 팀이 애플리케이션의 전체 라이프사이클에서 주요 역할을 해야 합니다.

문서

CI/CD(지속적 통합/지속적 제공): 개념, 방법, 장점, 구현 과정

CI/CD는 애플리케이션의 통합 및 테스트 단계에서부터 제공 및 배포에 이르는 애플리케이션의 라이프사이클 전체에 걸쳐 지속적인 자동화와 지속적인 모니터링을 제공합니다.

문서

DevOps 엔지니어는 어떤 사람일까요?

DevOps 엔지니어는 조직 내 협업, 혁신, 문화적인 변화를 지원하는 기술 및 전문성을 두루 갖추고 있습니다.  

DevOps에 대한 자세한 내용

제품

Red Hat 전문가가 참여하는 집중적인 전문 레지던스 환경에서 애자일 방법론과 오픈소스 툴로 기업의 비즈니스 문제를 해결하는 방법을 학습합니다.

다양한 시각으로 고객의 상황을 파악하고 이를 바탕으로 고객의 과제를 분석하여 종합적이고 비용 효율적인 솔루션을 통해 문제를 해결하도록 돕는 전략적인 조언자입니다.

리소스

팟캐스트

Command Line Heroes 시즌 1, 에피소드 4:

"DevOps: Tear down that wall"

백서

Red Hat Ansible Automation Platform으로 CI/CD 파이프라인 간소화

오퍼레이터

Red Hat® OpenShift® GitOps를 사용하여 인프라와애플리케이션 구성 관리