[Article] 2023 DevOps는 끔찍했다 (ft. 플랫폼 엔지니어링)

 

지난번, SSAFY에서 금융기업 면접관분과 취업상담을 받으며 신입 Backend 개발자로서 DevOps 경험에 대한 중요도에 대한 얘기를 나눠었다. 그러다 daily.dev의 한 아티클, 그 제목의 Devops 키워드가 눈에 띄어 읽었다.

 

아래는 한국어 번역 & 요약문

 

 

📜 2023 DevOps는 끔찍했다


 

✔️ DevOps가 뭔데?


DevOps는 단순한 역할, 도구, 방법론이 아니다. 문화이자 철학이다. 소프트웨어 개발 생명 주기 동안에서 협업을 촉진시키는 것을 목적으로 한다. 이러한 DevOps는 적절한 도구를 선택하고 애자일 방식으로 접근하여 프로세스를 만들며 적합한 사람을 채용함으로써 목적이 달성된다
그러나, 시간에 따라 DevOps는 원래에 의미를 벗어나 직업명이나 유행어처럼 사용되고 있다. 이로 인해 DevOps의 실체와는 다른 방식으로 이해하게 되었다.
현실에서 DevOps는 클라우드 관련 직업으로 Kubernetes 클러스터 등의 복잡한 관리부터 수동 IAM 온보딩까지 다양한 범위를 다루고, 이 업무들은 혼란스러우면서 무의미한 작업으로 보이기도 한다.

 

✔️ DevOps가 정확히 무엇이 문제인데?


1️⃣ DevOps/Cloud팀은 과도한 업무 부담을 갖고 있다

DevOps와 Cloud엔지니어링은 기업 내 IT운영의 핵심이다. 이들은 이로 인해 높은 업무 무담이 있다
그들은 서비스가 지속적으로 사용 가능하도록 유지시키며, 새로운 기능이나 업데이트를 지속적으로 배포시켜야 한다. 또한 장애발생 시 즉각 대응해야 하며 보안 위협을 감지하고 대처해야 한다. 이 모든 요구사항들이 이들에게 높은 스트레스와 부담감을 준다.

2️⃣ Silos는 (실제론 아닌데) 무너졌고, 인프라도 그렇다

DevOps문화는 개발과 운영 사이의 경계를 흐릿하게 만든다. 이로 인해 정확한 역할 분담과 책임 범위가 불분명해질 수 있다.
이로 인해 팀 내에서 의사소통의 문제 혹은 업무 중복, 그리고 중요한 작업의 누락까지도 초래될 수 있다.

(🍊Silo: 소통하지 않고 독립적으로 작동하는 구조나 문화, 여기서는 해당 조직의 독립성이 무너지면서 혼란을 초래했다는 뜻으로 보임)

3️⃣ DevOPs 업무는 반복적이며 효율적이지 못하다

많은 Devops 작업들 중, 특히 초기 단계에서는 반복적이고 수동적 작업들이 포함될 수 있다. 서버 설정, 배포 스크립트 작성, 모니터링 등의 작업이 이해 해당한다. 자동화 도구나 솔루션을 통한 최적화를 이루지 않는다면 이러한 반복 업무는 팀의 생산성을 저하시킨다.

4️⃣ 소프트웨어 엔지니어의 업무 범위 제한이 있다

많은 소프트웨어 엔지니어들은 전통적인 개발 작업 외의 업무, 예를 들어 인프라 설정, 배포, 모니터링와 같은 작업을 함께 수행하게 되었다. 이로 인해 그들의 주요 전문성이 펼쳐지는 소프트웨어 개발에 집중하는 시간이 줄어들 수 있으며, 이는 개발의 품질과 속도에 영향을 미칠 수 있다.

 

✔️ 해결책이라면, 플랫폼 엔지니어링이 있다


1️⃣ 플랫폼 엔지니어링이 무엇인데?

DevOps의 진화된 형태로 볼 수 있다. 내부 개발 플랫폼(Internal Development Platform, IDP)을 중심으로 개발된 방식으로, 엔지니어링 팀이 사용할 수 있는 제품을 설계하고 구축하는 방식이다.
IDP는 여러 도구와 서비스들을 통합하여 제공하고, 이를 통해 엔지니어들이 업무를 더 간단하고 효율적으로 처리할 수 있도록 도와준다

2️⃣ 플랫폼 엔지니어링의 접근 방식

접근 방식 또한 DevOps의 진화한 형태로, 기업들은 DevOps팀의 구조나 방법론을 완전히 폐기할 필요는 없다. 플랫폼 엔지니어링의 원칙을 통해 IT환경을 더 최적화하고 효율성을 높일 수 있다.

 

 

플랫폼 엔지니어링과 DevOps의 차이가 무엇일까?


앞선 아티클에 보면 플랫폼 엔지니어링은 DevOps의 상위호환이라는 듯하다. 하지만 정확히 모르겠다.
그래서 GPT한테 물었다.

 

🍊 플랫폼 엔지니어링과 DevOps를 비교해줘


플랫폼 엔지니어링: 내부 개발 플랫폼(Internal Development Platform, IDP) 구축
예를 들어, 대기업의 엔지니어링 팀은 다양한 프로젝트와 서비스를 관리해야 합니다. 이런 환경에서, 플랫폼 엔지니어링 팀은 표준화된 개발 환경, CI/CD 파이프라인, 모니터링 도구, 로깅 시스템 등을 포함하는 내부 개발 플랫폼을 구축합니다. 이 플랫폼은 엔지니어링 팀 전체에게 제공되며, 각 팀은 이 플랫폼 위에서 자신들의 서비스나 애플리케이션을 빠르게 개발, 배포, 운영할 수 있습니다.

 

DevOps: 개발과 운영의 통합
예를 들어, 중소기업의 DevOps 팀은 코드의 개발부터 배포, 운영에 이르기까지의 전 과정을 담당하며, 이 과정에서 발생하는 문제를 신속하게 해결합니다. CI/CD 도구를 사용하여 코드 변경 사항을 자동으로 테스트하고 프로덕션 환경으로 배포합니다. 또한, 운영 환경에서 발생하는 이슈에 대해 신속하게 대응하고, 필요한 경우 코드를 수정하여 재배포합니다.

 

주요 차이점

  • 플랫폼 엔지니어링은 더 넓은 범위의 표준화와 자동화에 중점을 둡니다. 그것은 광범위한 엔지니어링 팀의 요구를 충족시키기 위해 확장 가능한 플랫폼을 제공하는 것을 목표로 합니다.
  • DevOps는 개발과 운영 사이의 간극을 줄이는 데 중점을 둡니다. 이는 개발자와 운영 팀 간의 협업을 통해 더 빠르고 안정적인 소프트웨어 배포를 달성하기 위한 것입니다.

 

🍊 더 정확한 예를 들어줘


플랫폼 엔지니어링

  1. 플랫폼 엔지니어링을 활용한 컨테이너 오케스트레이션 시스템 구축
    대규모 테크 회사는 수백 개의 마이크로서비스를 관리해야 합니다. 플랫폼 엔지니어링 팀은 이런 서비스들을 위해 Kubernetes와 같은 컨테이너 오케스트레이션 플랫폼을 구축합니다. 이 플랫폼은 개발자들에게 일관된 환경을 제공하면서, 서비스 배포, 확장 및 관리를 쉽게 해줍니다.
  2. 개발자 포탈 및 API 게이트웨이 구축
    API를 많이 제공하는 회사에서, 플랫폼 엔지니어링 팀은 개발자들이 쉽게 API를 찾고, 테스트하고, 사용할 수 있도록 개발자 포탈을 구축합니다. 이 포탈은 API 문서, 사용 가이드, 샌드박스 환경 등을 제공합니다.

DevOps

  1. 지속적인 통합 및 지속적인 배포 (CI/CD)
    중소기업의 웹 애플리케이션 개발 팀은 코드 변경 사항을 자동으로 테스트하고 프로덕션에 배포하려고 Jenkins, Travis CI, CircleCI 등의 CI/CD 도구를 사용합니다. DevOps 엔지니어는 이런 도구를 설정하고 유지 보수합니다.
  2. 인프라 자동화
    DevOps 팀은 Terraform이나 Ansible과 같은 도구를 사용하여 클라우드 리소스와 데이터베이스, 네트워크 구성 등의 인프라를 자동으로 생성하거나 변경합니다.

 


🍊

아직 플랫폼 엔지니어링을 접해볼만한 기업단위 프로젝트를 경험해 본 적이 없으며 이전까지의 프로젝트를 하면서 간적접으로 보았던 작업들은 대부분이 DevOps였다. 다른 팀원이 DevOps로 CI/CD를 구축하는 것을 보면 부담감이 있어보였다. 환경 자체가 6주라는 프로젝트 기간 내에서 최대 빠르게 구축되어야했고, 그래야만 나머지 백엔드 개발자가 그 환경을 나머지 기간동안 쓸 수 있기 때문이었다. 

 

CI/CD를 구축하기 위해 전용의 도구들을 배우는 것이 내게 러닝커브로서 부담스러웠다. 그냥 배우면 모를까, 앞서 말한듯이 기간에 의한 제한이 있으니까. '모르는 기술을 배우는 건 좋을텐데...'라는 아쉬움이 남아, 직무 면담을 받을 때 해당 경험이 얼마나 가치있을 지에 대한 질문을 했었다. 거기에 대한 답으로는, 위의 아티클에도 적혀있듯이 해당 DevOps 작업은 소프트웨어 개발을 위한 집중도를 흐려놓을 수 있으며, 무엇보다 실제로 Backend 업무를 희망하는 취준생에게 굳이 필요할 스킬은 아니라는 것이었다. 해보면 좋을 순 있겠지만 더 중요한 것은 다른 데에 있다는 뜻으로 받아들이게 되었고, 나 또한 아직 주어진 요구사항을 적합하게, 효율적이게 로직을 구현하는 데에 더 많은 시행착오가 필요하다는 것을 알고 있었다. 그것을 다시 되새기게 해주는 아티클이었다.

 

+ 플랫폼 엔지니어링이란 개념은 아직 와닿진 않는다 으잉

 

 

 

 

 

참고자료
2023 DevOps is terrible
DevOps 개념정리, 사일로(Silo Effect)란?