1-1. 도커와 마이크로서비스
도커의 장점
- 환경에 대한 디버깅 부담을 줄일 수 있다.
- 예를들어 기존에 리눅스 환경으로 서버를 이전한다고 하면, 해당 리눅스의 패키지나 업데이트 상황에 맞게 재설정이 필요하다. 그리고 이런 일은 굉장히 번거로운 일이 되는 경우가 많다.
- 하지만 도커를 사용한다면 환경에 상관없이 똑같은 dockerfile과 명령어를 통해 서버를 다룰 수 있다.
- 도커가 서버 환경을 ‘감싸는’ 역할을 하기 때문이다.
- 현업에서는 실제로 대부분 도커를 사용해서 배포를 한다고 보면 된다.
모놀리틱 구조
- 하나의 서버에 모든 기능을 가지는 구조를 말한다. 예를들면…
- 1세대: Reading static HTML
- 2세대: Creating request-based HTML from CGI + DB
- 3세대: Using MVC-pattern frameworks
마이크로서비스
- 하지만 현업의 대용량 서비스의 경우, 여러 기능이 하나의 서버 안에 있는 경우 위험성이 존재하게 된다.
- 한 기능의 문제에 의해 전체 시스템에 장애가 발생할 수 있기 때문이다.
- 따라서 이에 대한 해결책으로 여러 서버에 각 기능을 분산하고, REST API 통신 등으로 전체 서비스를 운영하는 방식을 사용할 수 있는데, 이것을 마이크로서비스 구조라고 한다.
1-2. DevOps
- 기존 서비스 조직은 개발팀(Dev)과 운영팀(Ops), 두 파트로 나뉘었다.
- 서비스가 거대해짐에 따라 두 조직 사이의 간극이 커졌고, 그 중간지대의 연결을 전문적으로 담당하는 역할의 필요성이 대두되었다. ⇒ DevOps
DevOps의 역할
- 운영시스템을 효율화/자동화 한다.
- Release System 자동화
- 코드 리뷰, 테스트 자동화
- 서비스 모니터링 시스템 개발
- 커뮤니케이션 시스템 개발
DevOps와 관련된 여러 기술들
- 마이크로서비스 ⇒ 도커
- 초대용량 서비스 유지 보수를 위한 서버 관리 ⇒ 쿠버네티스
- 릴리즈 사이클을 단축 ⇒ 배포 자동화 (CI/CD, github actions, Jenkins/Travis, etc.)
- 서비스 중단 없는 릴리즈 ⇒ 무중단 배포