DevOps란

박세건·2024년 7월 5일
0

기술 학습

목록 보기
7/11
post-thumbnail

DevOps란 무엇인가?

DevOps는 개발(Development)과 운영(Operations)을 통합하여 효율성, 협력, 속도, 안정성을 개선하는 개발 및 운영 방법론입니다. 단순한 기술적 접근을 넘어, 새로운 기술을 적용하여 더 효율적인 서비스를 만드는 문화를 의미합니다.

DevOps의 핵심 요소

  • 자동화: 다양한 도구를 활용하여 프로세스를 자동화합니다.
  • 측정: 성과를 도구로 측정하여 개선 포인트를 확인합니다.
  • 공유: 지식과 데이터를 팀원들과 공유하여 협력의 효율을 높입니다.
  • 축적: 경험과 데이터를 축적하여 향후 작업의 효율성을 증대시킵니다.

DevOps의 궁극적인 목표는 개발과 배포를 개선하는 데 있습니다. 따라서 모든 활동이 이러한 개선 가능성을 평가하는 데 초점이 맞춰져야 합니다.


서버를 관리한다는 것

서버 관리는 시대에 따라 발전하며, 다음과 같은 흐름을 거쳐 왔습니다:

1. 자체 서버 운영

  • 서버 주문, 설치, 하드웨어 조립, 네트워크 연결, OS 설치 등 모든 단계를 직접 수행.
  • 업그레이드 시마다 번거롭고 반복적인 작업이 필요.

2. 설정 관리 도구 등장

  • 코드를 통해 서버 상태(설정)를 관리.
  • 관리 기술이 복잡하여 높은 학습 곡선이 요구됨.

3. 가상머신 등장

  • 한 서버에서 여러 가상 머신을 실행 가능.
  • 초기화 속도가 느리며, 복잡한 설정이 필요.

4. 클라우드 등장

  • AWS, Google Cloud와 같은 클라우드 서비스를 통해 서버를 대여하여 사용.
  • 서버 운영 측면의 문제는 여전히 존재.

5. PaaS 등장

  • Netlify, AWS Elastic Beanstalk 등으로 코드만 제공하면 서버와 운영 환경을 자동으로 제공.
  • 특정 플랫폼에 종속되며, 원하는 패키지 설치나 서버 접속이 제한적.

6. 도커 등장

  • 애플리케이션을 컨테이너로 패키징하여 어디서나 실행 가능.

7. 쿠버네티스 등장

  • 컨테이너 오케스트레이션 도구로, 복잡한 컨테이너 환경을 관리.

8. 서비스 메시 등장

  • 컨테이너 간의 통신, 보안, 모니터링을 효과적으로 관리.

도커와 쿠버네티스의 등장

도커란?

컨테이너는 격리된 환경에서 작동하는 프로세스입니다. 도커는 이러한 컨테이너를 관리하고 배포할 수 있는 기술로, 애플리케이션과 실행 환경을 패키징합니다.

도커의 특징

  • 가상머신과 달리, OS 위에 또 다른 OS를 실행하지 않습니다.
  • 코드 작성 → 이미지 빌드 → 배포 → 실행 과정으로 단순화된 워크플로우 제공.

도커의 한계

  • 많은 컨테이너를 관리하기 어렵습니다.
  • 롤아웃(새로운 버전 배포)과 롤백(이전 버전 복구)에 손이 많이 갑니다.
  • MSA 방식에서는 배포 횟수가 많아 관리 복잡도가 상승합니다.

컨테이너 오케스트레이션

컨테이너 오케스트레이션은 복잡한 컨테이너 환경을 효과적으로 관리하기 위한 기술입니다.

주요 기능

  1. 중앙 제어(Cluster): 여러 컨테이너를 하나의 클러스터로 관리.
  2. 상태 관리(State): 컨테이너의 상태를 모니터링하고 복구.
  3. 배포 관리(Scheduling): 비어 있는 리소스를 활용하거나 새로운 서버를 생성하여 자동 배포.
  4. 배포 버전 관리(Rollout & Rollback): 간단한 코드로 배포 버전을 관리.
  5. 서비스 등록 및 조회(Service Discovery): 컨테이너 간의 통신을 쉽게.
  6. 볼륨 관리(Volume): 각 컨테이너에 적합한 볼륨 제공.

Kubernetes란?

Kubernetes는 컨테이너를 쉽게 배포하고 관리할 수 있는 컨테이너 오케스트레이션 도구입니다. 구글이 내부에서 사용하던 기술을 오픈소스로 공개한 것으로, 현재 사실상 표준(De facto)으로 자리 잡고 있습니다.

특징

  • 무한한 확장성: Kubeflow, Tekton, 서비스 메시, 서버리스 기술로 확장 가능.
  • 표준화: 대부분의 컨테이너 오케스트레이션 작업에 사용되는 표준 도구.

활용 사례

구글은 매주 20억 개 이상의 컨테이너를 생성하며, 이를 효과적으로 관리하기 위해 Kubernetes를 개발했습니다.


배포 프로세스 개선

개선 목표

  • 더 자주 배포하기: 작은 단위로 자주 배포.
  • 자동화 도입: 자동 빌드 및 배포 시스템 도입.
  • 테스트 효율화: 테스트 서버를 증설하여 병렬 테스트 가능.

2차 개선 사항

  • 모든 브랜치를 자동으로 빌드하여 도커 이미지 생성.
  • QA를 위해 필요한 서버를 임시로 생성하고 종료 가능.
  • 여러 테스트를 병렬로 수행하여 효율성 증대.

DevOps 엔지니어란?

DevOps 엔지니어는 조직이 소프트웨어 제품과 서비스를 빠르게 배포할 수 있도록 지원하며, 빠른 기능 구현 및 개선을 목표로 합니다.

추천 스터디 진행

  1. Terraform을 이용한 AWS VPC 생성.
  2. Docker(컨테이너)로 서버 관리.
  3. CI/CD를 활용한 자동 빌드 및 배포.
  4. 배포 알림 및 채팅 봇 개발.
  5. Kubernetes와 함께하는 컨테이너 오케스트레이션.
  6. AWS EKS 설정.
  7. 모니터링 및 로그 수집.
  8. 배포 최적화.
  9. 서비스 메시와 보안 강화.

어떤 신입을 원할까?

기업은 문제를 해결할 수 있는 신입을 원합니다. 이를 위해서는 다음 질문에 답할 수 있어야 합니다:

  • 왜 지금 이 작업을 하고 있는가?
  • 이 프로젝트의 목적은 무엇인가?
  • 이 프로젝트가 기존보다 나아진 점은 무엇인가?

용어 설명

  • 볼륨(Volume): 컨테이너에서 데이터를 저장하고 공유하기 위한 스토리지 단위.
profile
멋있는 사람 - 일단 하자

0개의 댓글