DevOps란?

모두·2025년 3월 22일

오늘은 DevOps에 대해서 알아보려고 한다. EC2 기반 DevOps 에 특징에 대해 알아보려고 한다.

DevOps란?

  • 소프트웨어 개발(Development)과 운영(Operation)을 결합한 용어
  • 개발, 배포, 운영의 전 과정을 자동화하고 최적화하여,
    신속하고 안정적으로 소프트웨어를 제공하는게 목표
  • 개발팀과 운영팀 간의 통합을 의미
    • 실시간 모니터링으로 문제를 빠르게 파악하고 개선
    • 상호 협력 강화

CI/CD

  • 지속적 통합(Continuous Integration, CI)
  • 지속적 배포(Continuous Delivery, CD)
  • 새로운 코드를 지속적으로 통합하고 테스트하여 자동으로 배포되는 방식
  • 코드 변경 사항이 빠르고 안정적으로 반영할 수 있음
  • 관련 S/W
    • CI: Github Action, Gitlab CI, Jenkins
    • CD: ArgoCD, FluxCD, Jenkins

DevOps S/W

  • CI/CD 도구: Jenkins, GitLab CI, Github
  • 컨테이너 및 오케스트레이션: Docker, Kubernetes
  • 자동화 도구: Ansible, Terraform
  • 모니터링 도구: Prometheus, Grafana, Datadog

EC2 기반 DevOps 방식

  • On-Premise 운영도 이와 비슷

    • 서비스의 규모가 작을때 보통 시작하는 단계
  • EC2마다 CPU, Memory, Disk, IP(Private, Public)을 모두 관리

    • 1번 서버는 MySQL이고 2번 서버는 Spring이고 3번 서버는…
    • LB가 어떤 서버를 바라보고 있는지도 관리가 필요

EC2 기반 DevOps 방식

  • Github: 코드 관리
  • Jenkins: CI/CD
  • Ansible: 서버 환경 구성 자동화 도구(IaC)
  • Grafana: 모니터링 솔루션

EC2 기반 DevOps 방식의 문제

  • Deprecation되는 요소
    • 물리적인 서버: 일반적으로 서버 장비의 워런티(warranty)는 3년
    • S/W: CentOS , Python 2.7, Java 8, Node.js 14, MySQL 5.7
  • 장애 발생시 수작업이 필요
    • 서버가 죽었다? -> failover가 된다해도 죽은 서버를 살려야함
    • 작업 후 명세 변경 필요(1번이 Slave였는데 지금은 Master…)
  • 서버 자원을 효율화
    • CPU는 많이 쓰는데 메모리가 남음 / Disk 용량은 별로 안쓰는데 I/O 작업은 많이 발생
  • 명세화(문서화)하지 않는다면…?
    • 누군가에게 시스템을 종속되는 문제가 발생
    • 누군가 퇴사했을때 인수인계되지 않는 포인트가 존재
    • 휴가를 가도 연락도 받아야하고 노트북을 챙겨야한다
    • 서비스의 히스토리가 공유되지 않아서 발생하는 문제가 발생한다
  • 인프라 작업에 대해서 모든걸 문서화하기는 쉽지 않음
    • config를 A -> B로 변경함
    • /var/log/nginx에 rotate 적용
  • 보안
    • 서버 권한: Linux, DB User 생성 및 접근 권한 관리
    • ID/PW vs SSH Public Key
    • 개발팀 / 운영팀 / 관리자 권한 관리
  • 네트워크
    • IP 기반 방화벽 관리
    • VDI(Virtual Desktop Infrastructure) vs VPN
    • 개발 / 상용 환경 분리

AWS Managed Service 기반 DevOps 방식

주로 먼저 검토하는 서비스

  • RDS: DB 서비스. DB버전 및 부하테스트를 주로 검증
  • Lambda: 서버 인프라 없이 코드를 실행할 수 있는 서비스(Serverless)
  • S3: 객체 스토리지 서비스(Serverless)
  • CloudWatch: 로그 및 리소스 모니터링 서비스
  • Route53: DNS 서비스
  • ECS: Container Application 배포 및 관리 서비스
  • Elastic Beanstalk: Application 배포 및 인프라 관리 서비스

Managed Service의 장점

  • 제공되는 서비스를 잘 사용하면 DevOps에 필요한 요소들을 직접 구축할 필요가 없다
    • CI/CD
    • 모니터링
    • Auto Scaling: 서비스를 빠르고 유연하게 확장하거나 축소할 수 있는 방식(서비스)

Managed Service의 단점

  • 비용이 매우 비싸다
    • SSD 2TB: 10만원에 사서 3~5년 사용
    • EBS 2TB: 매달 $160. 성능은 별도 과금
  • Custom
    • 정해진 스펙(가이드)로만 작업이 가능
    • 예) Lambda에서 python이랑 js를 같이 사용 불가능. 15분 이내로 처리가 필요함
  • 러닝커브
    • 진입 장벽은 낮은 편이지만 갈수록 높아짐

러닝커브(Learning curve)

  • 너무도 어려운 클라우드
  • 너무나도 다른 이론과 현실
    • RDS: 완전관리형이라고 하지만 실제론 설정하나 잘못 바꾸면 클러스터 장애 발생
    • Lambda: 서버리스라고 하지만 서버처럼 돌아줬으면 좋겠음(ex - 최대 실행 시간 15분)
    • S3: 너무 비쌈. 내가 자원을 얼마나 쓰고 있는지 알기 어려운 구조
    • VPC: 한번 설정하면 설정을 바꾸기 어려워서 평생 써야함

EC2 기반 서비스 vs 서버리스 서비스

  • EC2 기반 서비스

    • Elastic Beanstalk
    • ECS
    • RDS
    • Elastic Load Balancer
    • EBS, EFS
      AWS Managed Service 기반 DevOps 방식
  • 서버리스 서비스

    • Lambda
    • Fargate
    • RDS Aurora serverless
    • API Gateway
    • S3
    • DynamoDB
    • SQS

서버리스 오픈소스

  • Lambda에 오픈소스 프레임워크(Spring, Flask…)를 올려서 쓸 수 없을까…?
  • Python
    • Chalice, Zappa
  • Node.js
    • Claudia.js, Architect (ARC)
  • 범용
    • AWS SAM, Apex

피할 수 없는 요소

  • 벤더 락인(Vendor lock-in)
    • 서비스 제공업체의 기술에 너무 의존하여, 다른 업체의 서비스로 쉽게 이전하기 어려운 현상
  • 대표적인 예시
    • SAP
    • ERP
    • 오라클DB
    • 클라우드(AWS, GCP, Azure…)

0개의 댓글