Best Practice of DevOps, Netflix
DevOps를 성공적으로 구현한 조직의 실제 사례는 무수히 많습니다. 가장 주목할 만한 사례로는 Netflix, Amazon, Etsy 등이 있습니다. 이러한 기업들은 DevOps 실행을 통해 오류를 줄이면서 소프트웨어를 더 빠르게 배포할 수 있었습니다. 넷플릭스의 사례를 살펴 보겠습니다.
넷플릭스는 DevOps를 성공적으로 구현한 기업의 대표적인 예로 꼽힙니다. 넷플릭스는 DevOps를 도입해 고객에게 새로운 기능과 업데이트를 신속하게 제공할 수 있었으며, 이는 넷플릭스의 Key Success factor 였습니다.
넷플릭스는 여러 가지 방법으로 DevOps를 구현했습니다. 핵심 요소 중 하나는 넷플릭스의 클라우드 수용입니다. 클라우드 기술을 활용해 Netflix는 빠르게 증가하는 사용자 기반을 지원할 수 있는 확장성이 뛰어난 인프라를 구축할 수 있었습니다. 이를 통해 변화하는 고객 요구와 시장 상황에 신속하게 대응할 수 있었습니다. 또 다른 핵심 요소는 자동화에 집중했다는 점입니다. 넷플릭스는 많은 소프트웨어 개발 및 제공 프로세스를 자동화해 신속하고 효율적으로 움직일 수 있었습니다.
l 코드 빌드에서 배포를 자동화하는 CI/CD 파이프라인 구축
l IAC(Infrastructure as Code)로 인프라 리소스를 프로비저닝
l 인프라 리소스를 자동으로 추가하거나 제거하는 Auto-Scaling
l 로그 및 메트릭을 수집하고 분석해 빠른 문제해결과 사전 예방을 가능하게 하는 모니터링 및 로깅 자동화
이러한 자동화를 통해 Netflex는 소프트웨어 배포의 속도와 안정성을 높이고 엔지니어가 혁신 및 부가가치 활동에 집중할 수 있는 시간을 확보할 수 있었습니다.
넷플릭스는 또한 개발과 운영 팀 간의 협업과 커뮤니케이션에 중점을 두었습니다. 이러한 협업을 통해 소프트웨어 개발 과정에서 발생할 수 있는 모든 문제를 신속하게 파악하고 해결할 수 있었습니다. 또한 팀들이 더욱 효과적으로 협력하여 고객에게 새로운 기능과 업데이트를 제공할 수 있었습니다.
l 목표 공유, 목표에 대해 공통된 이해를 가지고 있으며 이를 달성하기 위해 협력
l 개발과 운영 팀 간 상호 존중
l 자동화된 프로세스와 도구를 사용, 워크플로 표준화
l 실시간 커뮤니케이션
l 문제 발생 시, 개인을 비난하기보다는 프로세스와 시스템을 개선하는 데 중점
마지막으로 넷플릭스는 문화에 중점을 뒀습니다. 실험과 빠른 반복을 중시하는 문화를 조성해 변화하는 고객 요구와 시장 상황에 빠르게 대응할 수 있었습니다. 이러한 혁신 문화는 넷플릭스가 DevOps를 성공으로 이끈 핵심 요소였습니다.
결론적으로 넷플릭스의 DevOps 성공은 클라우드 수용, 자동화에 대한 집중, 협업과 소통에 대한 강조, 혁신 문화에 대한 헌신 등 여러 요인이 복합적으로 작용한 결과라고 할 수 있습니다. 이러한 요소를 통해 고객에게 새로운 기능과 업데이트를 신속하게 제공할 수 있었으며, 이는 성공의 핵심 요인이 됐습니다.
DevOps Engineer
DevOps 엔지니어는 코딩, 인프라 관리, 시스템 관리 및 DevOps 도구 등 개발 및 운영에 대한 광범위한 지식을 갖춰야 하는 IT 전문가입니다. DevOps 엔지니어는 협업에 더 적합한 환경을 만들기 위해 대인 관계를 위한 커뮤니케이션 스킬을 보유해야 합니다. DevOps 엔지니어는 시스템 아키텍처 및 프로비저닝 뿐만 아니라, 소스 제어 사용, 코드 검토 주고받기, 단위 테스트 작성, 애자일 등 기존 개발자의 도구와 실행에 대한 경험도 있어야 합니다.
DevOps 엔지니어의 R&R
l 자동화: 반복적인 작업을 자동화하여 인적 오류를 줄이고 효율성을 개선합니다. Ansible, Puppet 또는 ITSM과 같은 도구를 사용하여 소프트웨어 및 인프라의 프로비저닝, 구성 및 배포를 자동화합니다.
l 지속적 통합 및 배포: 지속적 통합 및 배포 파이프라인을 설정하고 관리할 책임이 있습니다. 빌드, 테스트 및 배포 프로세스를 자동화하기 위해 Jenkins, Travis CI 또는 CircleCI와 같은 도구를 사용합니다.
l 모니터링 및 로깅: 모니터링 및 로깅 시스템을 설정하고 유지 관리할 책임이 있습니다. SMS, NMS 또는 APM와 같은 도구를 사용하여 시스템 및 애플리케이션의 성능과 상태를 모니터링하고, 로그매니저와 같은 도구를 사용하여 로그를 수집하고 분석합니다.
l 인프라 관리: 소프트웨어 제품을 지원하는 인프라를 설정하고 유지 관리할 책임이 있습니다. 이들은 Terraform, CloudFormation 또는 Ansible과 같은 도구를 사용하여 인프라 리소스의 프로비저닝 및 관리를 자동화합니다.
l 보안: 데브옵스 엔지니어는 소프트웨어와 인프라의 보안을 책임집니다. 시스템과 애플리케이션을 보호하기 위해 SELinux, AppArmor 또는 Seccomp와 같은 도구를 사용하고, 비밀을 관리하기 위해 Vault, Conjur 또는 CyberArk와 같은 도구를 사용합니다.
l 문제 해결: 소프트웨어 개발 및 운영 프로세스 중에 발생하는 문제를 해결하는 일을 담당합니다. 개발자, 운영팀 및 이해관계자와 협력하여 문제를 빠르고 효과적으로 진단하고 해결합니다.
DevOps 엔지니어링
l Scripting 및 Programming: 많은 작업을 자동화하고 소프트웨어 개발 및 운영 프로세스를 지원하는 도구를 구축해야 하므로 스크립팅 및 프로그래밍에 대한 탄탄한 배경 지식이 있어야 합니다.
l Cloud Computing: 많은 기업이 소프트웨어와 인프라를 클라우드로 이전하고 있으므로 클라우드 컴퓨팅에 대한 이해가 높아야 합니다. AWS, Azure 또는 GCP와 같은 클라우드 서비스 및 플랫폼에 익숙해야 하며, 클라우드 컴퓨팅의 보안, 네트워킹 및 스토리지 측면을 이해해야 합니다. 온프레미스 리소스 기업의 경우 데이터 센터의 물리적 서버, 스토리지, 스위치 및 가상화 소프트웨어 관리가 포함될 수 있습니다.
l OS: 다양한 시스템과 애플리케이션을 다루기 때문에 Linux, Unix 및 Windows에 익숙해야 하며 운영 체제의 보안, 네트워킹 및 스토리지 측면을 이해해야 합니다.
l Networking: 데브옵스 엔지니어는 소프트웨어를 지원하는 네트워크 인프라를 설정하고 유지 관리할 책임이 있으므로 네트워킹에 대한 이해도가 높아야 합니다. IP 네트워킹, DNS, DHCP, 라우팅의 기본 사항을 이해해야 합니다.
l 컨테이너화: 컨테이너가 소프트웨어를 패키징하고 배포하는 데 점점 더 널리 사용되고 있으므로 데브옵스 엔지니어는 컨테이너화에 대한 이해가 높아야 합니다. Docker, Kubernetes와 같은 컨테이너화 플랫폼에 익숙해야 합니다.
DevOps is Dead
DevOps의 많은 이점에도 불구하고 DevOps에도 도전 과제가 없는 것은 아닙니다. 가장 큰 도전 과제 중 하나는 변화에 대한 문화적 저항입니다. DevOps는 조직이 소프트웨어 개발 및 배포에 대해 생각하는 방식에 상당한 변화를 요구하는데, 일부 팀에서는 이를 수용하기 어려울 수 있습니다. 또한 DevOps 구현은 복잡하고 시간이 많이 소요될 수 있으며, 인력과 기술 모두에 상당한 투자가 필요합니다.
결론적으로 DevOps는 오늘날의 급변하는 비즈니스 환경에서 소프트웨어를 빠르고 효율적으로 제공하고자 하는 조직에게 매우 중요한 방법론입니다. DevOps에는 고유한 과제가 있지만, DevOps의 이점은 경쟁력을 확보하고자 하는 조직에서 투자할 만한 가치가 충분하다는 것입니다.
Which should not introduce DevOps.
DevOps는 소프트웨어 개발 및 배포에 있어 괜찮은 접근 방식이 됐지만 모든 회사에 적합한 것은 아닙니다. DevOps는 효율성 향상, 출시 시간 단축, 고객 만족도 향상 등 많은 이점을 제공할 수 있지만, DevOps가 최선의 선택이 아닐 수 있는 특정 상황도 있습니다.
l 규제가 심한 산업: 금융, 의료, 정부 등 규제가 심한 산업에 종사하는 기업은 엄격한 규제 요건을 준수해야 하므로 DevOps를 도입하지 못할 수 있습니다. DevOps 실행은 빠른 반복 작업과 잦은 릴리스가 포함되는 경우가 많기 때문에 이러한 산업에 속한 기업은 규정을 준수하기 어려울 수 있습니다.
l 레거시 IT 인프라: DevOps는 자동화에 크게 의존하므로 최신 IT 인프라가 필요합니다. 레거시 IT 인프라를 보유한 기업은 필요한 자동화를 지원하는 데 필요한 기술이나 리소스가 없을 수 있으므로 DevOps 실행을 도입하지 못할 수 있습니다.
l 부서 간 조화 부족: DevOps는 개발과 운영 팀 간의 긴밀한 협업을 필요로 하므로 조직 내 문화적 변화가 필요합니다. 회사의 문화가 협업과 실험 문화에 중점을 두는 등 DevOps 가치와 일치하지 않는다면 DevOps를 구현하는 것이 어렵거나 불가능할 수 있습니다.
l 수직화 조직구조: DevOps는 또한 여러 기능의 팀이 효과적으로 협업할 수 있는 수평적 조직 구조를 필요로 합니다. 회사의 계층 구조가 강하면 여러 수준의 경영진이 의사 결정을 승인해야 할 수 있으므로 DevOps를 구현하기 어려울 수 있습니다.
l 제한된 리소스: DevOps에는 기술, 리소스, 인력에 대한 상당한 투자가 필요합니다. 리소스가 제한된 기업은 필요한 투자를 지원할 예산이나 인력이 부족할 수 있으므로 DevOps를 효과적으로 구현하지 못할 수 있습니다.
결론적으로 DevOps에는 많은 이점이 있지만 모든 회사에 적합하지 않을 수도 있습니다. 규제가 심한 산업에서 운영되거나, 레거시 IT 인프라를 보유하고 있거나, 문화적 조화가 부족하거나, 계층 구조가 강하거나, 리소스가 제한된 기업은 DevOps 관행을 성공적으로 구현하지 못할 수 있습니다. 이러한 경우에는 소프트웨어 개발 및 배포에 대한 다른 접근 방식이 더 적합할 수 있습니다.
[Reference]
- https://reqtest.com/agile-blog/agile-vs-devops/
- https://www.spiceworks.com/tech/devops/articles/devops-vs-agile/
- https://www.itworld.co.kr/news/251626
- https://blog.naver.com/palanmanzang/222674321253
- https://daystudy.tistory.com/1534
- https://www.atlassian.com/ko/devops/frameworks/calms-framework
- https://www.bmc.com/blogs/devops-vs-agile-whats-the-difference-and-how-are-they-related/
- https://agilefirst.io/agile-devops/
- https://premieragile.com/why-devops-in-safe/
- https://www.redhat.com/ko/topics/devops
- https://www.bmc.com/blogs/devops-engineer-roles-and-responsibilities/
- https://www.codemotion.com/magazine/devops/how-to-become-devops-engineer/
- https://engineering.linecorp.com/ko/blog/line-ads-devops-culture/
- https://www.dynatrace.com/news/blog/what-is-devops/
- https://www.tibco.com/ko/reference-center/what-is-devops
경영기획실에서 PR, 인사, 자금투자 등의 업무를 총괄하고 있습니다.