2021. 9. 5. 15:26ㆍDevOps/DevOps기초
"너 DevOps 한다며?"
일반적으로 DevOps일을 한다고 하면 이런 말을 하곤한다. 하지만 이전 시간에 알아보았듯 DevOps는 하나의 문화이기에 너 문화한다며? 라는건 조금 이상한 말이 될 수 있다. DevOps엔지니어는 이런 문화를 정착시키는데 도움을 주는 사람이다. 즉 개발자가 개발 뿐 아니라 운영도 같이 참여할 수 있는 환경을 만들어 주는 역할을 하는 사람이라고 보면 된다.
큰 틀을 보자면 DevOps엔지니어는 굉장히 많은 업무를 보게 될 수 도 있다. 단 1명의 DevOps엔지니어가 있다면 인프라 구축, 네트워크 셋업, 도메인 운영, 서버 프로비저닝, 데이터베이스 관리, 운영, 관측, 배포, 보안 시스템 구축, 관리 등을 혼자서 해야한다. 하지만 이런 경우는 극단적인 경우이며 개별 팀이 있고 그 개별 팀에 따라 업무를 분산화, 세분화해 운영할 수 있게 된다.
이런 DevOps엔지니어가 모여서 만든 Team의 주요 고객은 과연 어떤 사람들일까?
서비스를 제공하는 서비스 제공자의 역할을한다. 주요 시스템은 보통 개발자가 사용하기에 개발자가 주요 고객이다. 즉 개발자의 생산성을 극대화 시키기 위한 조직이다.
그렇다면 어떻게 생산성을 극대화 시킬 수 있을까?
DevOps엔지니어가 하는일은 구체적으로 다음과 같다.
Network(네트워크)
가상 네트워크 및 Ops 상 물리 네트워크 구성한다. 프록시 / VPN 서버 운영을 바탕으로 임직원들이 사설 네트워크를 사용할 수 있도록 한다. 또한 DNS 서버를 운영해 회사와 관련된 도메인을 관리한다.
Orchestration Platform(오케스트레이션 플랫폼)
워크로드가 많을 경우 쿠버네틱스/ECS/Nomad와 같은 오케스트레이션 시스템 구축 및 운영을 하여 실제 서비스를 안정적으로 운영하도록 한다. Airflow/Argo Workflows와 같은 워크플로우 엔진 구축 및 운영을 통해 정기적인 수행 작업을 실행하는 환경을 제공한다.
Observability Platform(관측 플랫폼)
log/uptime/APM 정보를 관측할 수 있는 중앙화된 시스템 구축 및 운영 데쉬보드 제공, 이를통한 주요 이벤트에 대한 알림 시스템 구축한다.
Development & Deployment Platform(개발 및 배포 플랫폼)
GitLab/GitHub와 같은 버전 관리 및 개발 협업 플랫폼 운영을 한다.
CI/CD 파이프라인 시스템 구축 및 운영을 하며 QA테스트 및 성능 테스트를 위한 환경 제공을 한다. 또한 개발에 사용되는 패키지 저장소 운영 및 배포 산출물 관리을 한다.
Cloud Platform (클라우드 플랫폼)
개발자들이 활용할 수 있는 클라우드 환경을 운영한다. (자체 클라우드 or aws 등의 퍼블릭 클라우드 기타등등)
Security Platform (보안 플랫폼)
LDAP, AD, SAML 등을 활용한 통합된 임직원 '계정계'를 운영하는데 특정 계정에 권한을 주고 그 계정을 임직원들이 사용하게 되면 관리면에서의 효율이 증가한다. 작은 조직에선 효용성이 낮지만 대규모 회사의 경우 인원 이동이 많은 만큼 효용성이 점점 높아진다. 서버 및 데이터베이스 접근제어 시스템, 네트워크 방화벽 정책 관리 구축 및 운영을 한다.
Data Platform (데이터 플랫폼)
MySQL, DynamoDB, Redis등과 같은 데이터베이스 구축 및 운영을 한다. RabbitMQ, Kafka, SQS 등과 같은 메시징 서비스 구축및 운영을 통해 데이터의 흐름을 파악할 수 있다. 데이터 웨어하우스 BI대시보드 구축 및 운영을 한다.
Service Platform (서비스 운영)
개발자들이 직접 서비스를 운용하도록 지원을 해 준다.(협업 및 공동 서비스 운영)
즉 DevOps 엔지니어의 역할은 개발자가 프로그렘(혹은 서비스)를 잘 구축(Provisioning)하여 설정(Configuration)한 후 어떻게 운영(Operation)하며 사용(Usage)할 수 있을지 서비스 구매자에게 교육(Training)시켜야한다. 이때 최대한 문서화(Documentation)하는것이 좋다.
또한 DevOps팀이 핵심적으로 파악해야하는것은
얼마나 빠르게 상황이 발생했을때 장애를 복구할 수 있는가?
MTTR(Mean Time To Recovery) == 인프라 구축이 잘 안되있거나 파이프라인에서 문제가 있다.
변경으로 인해 발생하게 되는 결함율은 어떻게 되는가?
Change Failure Rate == 결함이 많이 발생된다면 CI에서 문제가 있음을 알 수 있다.
배포를 얼마나 자주하는지에 대한 배포 빈도는 어떤가?
Deployment Frequncy == 배포 빈도가 낮다면 조직안에서 문화적이나 시스템적인 문제가 있음을 알 수있다.)
변경된 사안이 적응되고 배포가 완료되는데 얼마나 시간이 소요되는가?
Lead Time for Changes
를 알아봐야 한다.
'DevOps > DevOps기초' 카테고리의 다른 글
GCP를 활용한 GIT LAB생성 (0) | 2022.07.28 |
---|---|
Jenkins - Tomcat 연동하기 (0) | 2022.07.27 |
tomact 설치 및 활용 (0) | 2022.07.27 |
Jenkins, Maven 설치 및 활용하기 (0) | 2022.07.27 |
DevOps란??? (0) | 2021.09.02 |