DevOps

2024. 3. 19. 11:01
728x90

1. DevOps

1)  여러 개발자가 모였을 때...?

하나의 프로젝트를 작은 단위로 분리한다.  -> 각각의 작업을 합치는 건 복잡할 수 밖에 없다..3

 

2)  개발 산출물이 어떻게 사용자에게 도달할까? (운영과정) 

  • 적당한 성능의 컴퓨터 구비
  • 컴퓨터에 개발한 웹 서비스 실행
  • 해당 컴퓨터를 인터넷에 연결, 24시간 꺼지지 않도록 조정
  • 인터넷 사용자가 이 컴퓨터를 찾을 수 있도록 환경 조성 (방화벽, 포트포워딩 등)  + SEO, DNS 등 작업할 것들이 많다..

 

3) 개발 프로젝트의 전체적 과정 : 소프트웨어 생명 주기 (Software Life Cycle)

  • 어떤 기능을 만들어야 할지를 결정하기 위한 기획
  • 각각의 개발자가 만든 코드의 통합
  • 완성된 코드의 테스트 및 배포
  • 배포된 프로젝트 모니터링

 

> Software Development + IT Operations의 작업의 통합과 자동화를 통해 > 소프트웨어 개발 생명주기의 단축을 목표로 하는 개발.

- Continuous Integration

- Continuous Delivery / Deployment

- Infrastructure as Code

 

 

 

 

 

 

 

2. DevOps 주요 기술

1) Continuous Integration 지속적 통합

: 개별 개발자의 작업이 통합되지 않은 채 개발이 지속되는 것을 방치하면 통합 과정에서 문제가 더 크고 복잡해진다. 

> 짧은 주기로 코드를 통합하고, 통합된 코드를 자동으로 테스트할 수 있는 환경을 구성하는데 목적.

  • 자신의 작업을 주 Branch에 빠르게 반영할 수 있도록 노력.
  • 개발 내용에 대해 테스트를 지속적으로 작성
  • 잦은 통합과 테스트를 통해 충돌 방지
  • 최종 배포 시점에서의 고충 해소

 

 

2) Continuous Delivery / Deployment  지속적 전달, 지속적 배포

: 짧은 주기로 빌드된 소프트웨어가 자동으로 배포될 수 있도록 구성하는 개발 방식

- 항상 코드를 배포 가능한 상태로 유지하는데 목표를 둔다. 

- Delivery(전달,,, 그 후 배포할지 결정)와 Deployment(바로 배포)의 차이는  Click of a Button

  • CI : 하루 단위의 작은 작업의 지속적인 통합을 장려
  • CD : CI의 결과물을 손쉽게 사용자에게 전달

==> 결국 개별 담당자가 진행하던 내용을 자동화하여 사용자에게 결과를 빠르게 전달.

 

3) Infrastructure as Code

: 클라우드 서비스는 필요한 자원을 필요한 시점에 제공받을 수 있게 해준다. API를 제공하고 컴퓨터 코드로 실행 가능 >> 자동화하고 싶다!!

 

-> 코드형 인프라 : 컴퓨터가 읽을 수 있는 설정 파일의 형태로 컴퓨터 자원을 관리. 

  • 선언적으로 자원 선언
  • 컴퓨터 자원의 변화도 버전을 관리
  • 필요에 따라 새로운 컴퓨터 자원 구성
728x90

BELATED ARTICLES

more