Cloud/Azure

DevOps Master Class Part1 Foundation

좌니홍 2023. 4. 13. 13:09

아래 John Savill 의 DevOps Master Class Part1 Foundation 영상을 보고 정리해보고자 합니다.

https://www.youtube.com/watch?v=YMdtaWfU_QE&list=PLlVtbbG169nFr8RzQ4GIxUEznpNR53ERq&index=2 

 

아래는 강의에서 처음들고 나온 그림입니다. 

Business 는 가치를 전달하려고 하고 개발측은 변화를 그리고 운영측에서는 안정성과 안정성을 위한 No change 를 전달하려고 한다는 내용 입니다. 그래서 개발과 운영간 갈등이 생길 수 밖에 없다는 것이고 이렇게 나뉘어져 있으면 요구사항에 대한 프로젝트가 완전히 배포될 때 까지 시간이 엄청 오래 걸린다는 것을 보여주고 있습니다.

 

 

 

위의 사이클을 통해 Continuous Improvement 계속해서 성장하여 점진적으로 전달할 수 있는 가치를 늘려갈 수 있다라는 것을 보여주고 있습니다. 또한, 해당 Loop Time, 사이클의 기간이 짧아서 빠른 대응이 가능하다 라는 것을 보여주고 있습니다.

 

 

 

왼쪽의 타이트 커플링의 모놀리식 환경(위 사진에는 없습니다.) ex)VM 에서 우측의 각 서비스 별로 URL 이나 Get, Put 등으로 커뮤니케이션 하는 스트럭쳐로 나아가고 있다고 합니다. 그래서 클라우드 로 넘어가서 Kubernetes 엔진(Container Orchestration)을 사용하거나 다양한 Serverless Services 를 사용하고, 사용한만큼 금액을 지불하는 방향으로 나아가고 있다고 합니다. Container 는 배포가 엄청 빠릅니다.

 

 

 

Waterfall 그림입니다. 고객의 요구, 디자인, 개발, 테스트, 배포 이 모든 단계가 이전 단계가 수행이 되어야만 넘어갈 수 있습니다. 그래서 엄청 오래걸린다는 단점. 그리고 고객과의 커뮤니케이션이 첫 요구사항 단계와 배포된 후에만 이루어지게 됩니다. 따라서 중간에 수정사항을 요구하고 싶지만 안되기 때문에 고객 만족도가 현저히 떨어지게 됩니다.

 

 

 

Agile 그림입니다. 고객과 지속적인 소통이 들어가는 것을 볼 수 있고 하나의 Loop 가 일어날 때마다 점진적으로 Value 가 높아지는 것을 볼 수 있습니다.

 

 

 

 

SCRUM 은 1-4 주 단위의 정해진 Duration 을 가지는 Sprint 로 작업을 한다는 것과 앞의 단계를 바탕으로 다음 단계를 수행하는 것이 특징입니다. 계획을 잘 짤 수 있습니다. Product BackLog 에서 하나의 프로젝트만(여러개를 합칠 수 있음) 가져와서 진행합니다.

하지만, 유연하지 않아 빠르게 처리해줘야하는 이슈가 있을 때 대응이 어렵다는 단점이 있습니다. 

 

 

 

 

KANBAN 은 해야할 업무들을 블록단위로 두고 각 프로세스마다 WIP(Working In Progress) 한계를 두고 관리하는 방법입니다. 블록을 움직이면서 관리하는 방법입니다. 여유가 있을때마다 하나씩 땡기면서(Always Pull) 하기 때문에 과다한 업무를 막아줄 수 있습니다. 또한 우선순위가 있는 업무를 다룰 때 유용합니다.

 

 

 

GIT AND CI/CD 에 대한 파이프라인입니다.

코드가 Commit 되고 Continuous Integration 이 자동적으로 이루어지면서 코드 문제 파악 이 다 끝납니다. 그러면  Continuous Delivery 로 넘어가는 Gate 가 있는데 Image 가 준비되거나, Artifact 가 준비가 된다면 Gate(관문) 를 넘어 Continuous Delivery 를 시작하게 됩니다. UAT(User Acceptance Testing, 베타 테스트, 응용 프로그램 테스트 또는 최종 사용자 테스트)가 끝나고 검증이 끝나면 비로소 프로덕션으로 넘어가는 패턴 또한 자동으로 이루어지게 됩니다. 그리고 배포를 Blue/Green or Canary or Rolling 으로 하게 됩니다. 

 

 

 

VAULT 에는 Secrets, Key, Certificate 을 담을 수 있는데 이것을 다양하게 활용해서 Role Based Access Control 을 이루어 냅니다. Dev(개발할 때), UAT(테스트 Deploy 할 때) 따로 따로 사용합니다.

 

 

 

 

Monitoring and Learn

고객의 피드백 혹은 Device 에서 보내는 Telemetry 를 잘 가져와 배우고 개선해야 한다고 합니다.

 

 

 

 

IaC 를 활용해 클라우드 리소스 생성, 쿠버네티스 리소스 생성, OS 다 가능합니다. 파이프라인 속에서 사이사이 다 사용되어 자동화를 돕습니다. 변경에 따라 기록이 남기에 추적 및 감사하기가 쉽다는 장점이 있습니다. Portal 에서 하는 것보다 휴먼 에러도 줄일 수 있다는 게 장점입니다.