‘Development(개발)’와 ‘Operation(운영)’이 합쳐진 단어로 단순히 각각의 용어를 결합한 이상의 포괄적인 아이디어와 방식을 나타냅니다.
DevOps는 운영 환경에서 개발로부터 배포로 진행되는 프로세스의 속도를 높임으로써 소프트웨어 개발과 운영, 서비스의 효율적인 환경을 만들기 위해서 노력하는 개발 문화로 사용자에게 애플리케이션과 서비스를 빠른 속도로 제공할 수 있습니다.
이러한 빠른 속도를 통해 조직은 고객을 더 잘 지원하고 시장에서 좀 더 효과적으로 경쟁할 수 있습니다.
DevOps 장점
1) 속도
작업 속도가 빨라지기 때문에 고객을 위해 더 빠르게 혁신하고, 시장 변화에 더 잘 적응하고, 좀 더 효율적으로 비즈니스 성과를 창출할 수 있습니다
2) 신속한 제공
릴리즈 빈도와 속도를 개선해서 제품을 더 빠르게 혁신하고 개선할 수 있습니다. 새로운 기능의 릴리즈와 버그 수정 속도가 빨라질수록 고객의 요구에 더 빠르게 대응해서 경쟁 우위를 강화할 수 있습니다.
3) 안정성
최종 사용자에게 지속적으로 긍정적인 경험을 제공하는 한편 더욱 빠르게 안정적으로 제공할 수 있도록 애플리케이션 업데이트와 인프라 변경의 품질을 보장합니다. 지속적 통합과 지속적 전달과 같은 방식을 사용해서 각 변경 사항이 제대로 작동하며 안전한지 테스트할 수 있고 모니터링과 로깅 방식을 통해 실시간으로 성능에 대한 정보를 얻을 수 있습니다.
4) 확장
규모에 따라 인프라와 개발 프로세스를 운영 및 관리합니다. 자동화와 일관성이 지원되므로 위험을 줄이면서 복잡한 시스템 또는 변화하는 시스템을 효율적으로 관리할 수 있습니다. 코드형 인프라를 이용하면 구성 파일을 이용해서 인프라를 변경함으로써
5) 협업 강화
개발자와 운영팀은 긴밀하게 협력하고 많은 책임을 공유하며 워크플로우를 결합함으로써 비효율성을 줄이고 시간을 절약합니다.
6) 보안
자동화된 규정 준수 정책, 세분화된 제어 및 구성 관리 기술을 사용함으로써 보안을 그대로 유지하면서 DevOps 모델을 도입할 수 있습니다. 코드형 인프라와 코드형 정책을 사용하면 규모에 따라 규정 준수를 정의하고 추적할 수 있습니다.
DevOps 사례
CI/CD
출처: Amazon Web Services
개발 – 빌드 – 테스트 – 배포 까지의 전 과정을 자동화하는 것으로 지속적 통합(Continuous Integration), 지속적 제공(Continuous Delivery), 지속적 배포(Continuonus Deployment)로 구성된다.
CI
개발을 진행하면서 지속적으로 코드에 대한 통합을 진행하는 것으로 빌드 및 테스트를 거쳐 공유 리포지토리에 병합됩니다.
여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결할 수 있습니다.
또한, 자동화된 테스트에서 기존 코드와 신규 코드 간의 충돌 발생 시 CI를 통해 빠르게 수정할 수 있습니다.
CI의 장점
테스트 코드를 통과하는 코드만 공유 리포지토리에 올라갈 수 있기 때문에 에러 없이 잘 돌아가는 코드를 유지할 수 있다.
CD
출처: gocd.org
지속적 제공(Continuous Delivery)은 빌드와 테스트를 통과한 코드가 테스트 운영 환경과 스테이징 운영 환경에 자동으로 배포합니다. 운영팀은 프로덕션 운영 환경에 코드를 배포할 수 있습니다.
(스테이징 운영 환경(Staging)이란 실제 운영 환경과 거의 동일한 환경으로 기능을 검증하는 환경입니다.)
지속적 배포(Continuonus Deployment)는 지속적 제공을 거쳐 배포 가능한 코드를 프로덕션 운영 환경에 배포합니다.
CI/CD 툴
Jenkins
Travis CI
Bamboo
마이크로 서비스
MSA 란 단일 애플리케이션을 작은 서비스의 집합으로 구축하는 설계 방식으로, 느슨하게 결합되면서 자율적인 서비스를 생성하기 위한 새로운 아키텍처 스타일입니다.
애플리케이션을 더 작은 서비스 단위로 분해되면서 각 서비스마다 독립적으로 개발 및 배포가 가능해집니다. 따라서 개발팀의 운영과 일정에 높은 자유도를 제공하며 빠른 개발 및 운영이 가능합니다.
코드형 인프라
코드형 인프라(Infrastructure as Code, IaC)란 수동 프로세스가 아닌 코드를 통해 인프라를 관리하고 프로비저닝(IT 인프라를 설정하는 프로세스)하는 것을 말합니다.
코드형 인프라를 사용할 경우 인프라 사양을 담은 구성 파일이 생성되므로 구성을 편집하고 배포하기가 더욱 쉬워집니다.
DevOps
DevOps란?
‘Development(개발)’와 ‘Operation(운영)’이 합쳐진 단어로 단순히 각각의 용어를 결합한 이상의 포괄적인 아이디어와 방식을 나타냅니다.
DevOps는 운영 환경에서 개발로부터 배포로 진행되는 프로세스의 속도를 높임으로써 소프트웨어 개발과 운영, 서비스의 효율적인 환경을 만들기 위해서 노력하는 개발 문화로 사용자에게 애플리케이션과 서비스를 빠른 속도로 제공할 수 있습니다.
이러한 빠른 속도를 통해 조직은 고객을 더 잘 지원하고 시장에서 좀 더 효과적으로 경쟁할 수 있습니다.
DevOps 장점
1) 속도 작업 속도가 빨라지기 때문에 고객을 위해 더 빠르게 혁신하고, 시장 변화에 더 잘 적응하고, 좀 더 효율적으로 비즈니스 성과를 창출할 수 있습니다
2) 신속한 제공 릴리즈 빈도와 속도를 개선해서 제품을 더 빠르게 혁신하고 개선할 수 있습니다. 새로운 기능의 릴리즈와 버그 수정 속도가 빨라질수록 고객의 요구에 더 빠르게 대응해서 경쟁 우위를 강화할 수 있습니다.
3) 안정성 최종 사용자에게 지속적으로 긍정적인 경험을 제공하는 한편 더욱 빠르게 안정적으로 제공할 수 있도록 애플리케이션 업데이트와 인프라 변경의 품질을 보장합니다. 지속적 통합과 지속적 전달과 같은 방식을 사용해서 각 변경 사항이 제대로 작동하며 안전한지 테스트할 수 있고 모니터링과 로깅 방식을 통해 실시간으로 성능에 대한 정보를 얻을 수 있습니다.
4) 확장 규모에 따라 인프라와 개발 프로세스를 운영 및 관리합니다. 자동화와 일관성이 지원되므로 위험을 줄이면서 복잡한 시스템 또는 변화하는 시스템을 효율적으로 관리할 수 있습니다. 코드형 인프라를 이용하면 구성 파일을 이용해서 인프라를 변경함으로써
5) 협업 강화 개발자와 운영팀은 긴밀하게 협력하고 많은 책임을 공유하며 워크플로우를 결합함으로써 비효율성을 줄이고 시간을 절약합니다.
6) 보안 자동화된 규정 준수 정책, 세분화된 제어 및 구성 관리 기술을 사용함으로써 보안을 그대로 유지하면서 DevOps 모델을 도입할 수 있습니다. 코드형 인프라와 코드형 정책을 사용하면 규모에 따라 규정 준수를 정의하고 추적할 수 있습니다.
DevOps 사례
CI/CD
출처: Amazon Web Services
개발 – 빌드 – 테스트 – 배포 까지의 전 과정을 자동화하는 것으로 지속적 통합(Continuous Integration), 지속적 제공(Continuous Delivery), 지속적 배포(Continuonus Deployment)로 구성된다.
CI
개발을 진행하면서 지속적으로 코드에 대한 통합을 진행하는 것으로 빌드 및 테스트를 거쳐 공유 리포지토리에 병합됩니다. 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결할 수 있습니다. 또한, 자동화된 테스트에서 기존 코드와 신규 코드 간의 충돌 발생 시 CI를 통해 빠르게 수정할 수 있습니다.
CI의 장점
테스트 코드를 통과하는 코드만 공유 리포지토리에 올라갈 수 있기 때문에 에러 없이 잘 돌아가는 코드를 유지할 수 있다.
CD
출처: gocd.org
지속적 제공(Continuous Delivery)은 빌드와 테스트를 통과한 코드가 테스트 운영 환경과 스테이징 운영 환경에 자동으로 배포합니다. 운영팀은 프로덕션 운영 환경에 코드를 배포할 수 있습니다. (스테이징 운영 환경(Staging)이란 실제 운영 환경과 거의 동일한 환경으로 기능을 검증하는 환경입니다.)
지속적 배포(Continuonus Deployment)는 지속적 제공을 거쳐 배포 가능한 코드를 프로덕션 운영 환경에 배포합니다.
CI/CD 툴
마이크로 서비스
MSA 란 단일 애플리케이션을 작은 서비스의 집합으로 구축하는 설계 방식으로, 느슨하게 결합되면서 자율적인 서비스를 생성하기 위한 새로운 아키텍처 스타일입니다.
애플리케이션을 더 작은 서비스 단위로 분해되면서 각 서비스마다 독립적으로 개발 및 배포가 가능해집니다. 따라서 개발팀의 운영과 일정에 높은 자유도를 제공하며 빠른 개발 및 운영이 가능합니다.
코드형 인프라
코드형 인프라(Infrastructure as Code, IaC)란 수동 프로세스가 아닌 코드를 통해 인프라를 관리하고 프로비저닝(IT 인프라를 설정하는 프로세스)하는 것을 말합니다. 코드형 인프라를 사용할 경우 인프라 사양을 담은 구성 파일이 생성되므로 구성을 편집하고 배포하기가 더욱 쉬워집니다.
모니터링과 로깅