커리큘럼
1주차
1) 웹 서버 구성
서비스 운영에 기본이 되는 웹 서버를 로컬 환경, 클라우드 환경, 컨테이너 환경에 각각 구축하며 각 환경의 장, 단점과 전체적인 서버 아키텍처에 대한 기본 지식을 습득합니다.
- 로컬 환경에서 Nginx 설치, localhost:80로 접속하여 Hello NginX 웹 화면 보기
- Docker 설치, Docker hub를 통해 Nginx 설치
- AWS EC2 인스턴스 생성 후 해당 환경에서 Nginx 설치하여 외부에서 접속
2) 서버 아키텍처와 컨테이너 환경
모든 상황을 해결하는 하나의 서버 아키텍처는 없습니다. 따라서, 각 상황에 맞는 서버 아키텍처를 알아보며, 현업에서는 어떤 방식으로 서버를 운영하는지 다양한 사례들을 살펴봅니다.
- 서버 아키텍처 비교
- 모노리틱 아키텍처
- 서버리스 아키텍처
- 마이크로 서비스 아키텍처
- Docker 이해
- Docker 개념 및 역사
- Linux 컨테이너 기술에 대한 개념
2주차
1) 다중 서버 환경 구성
실제 운영 환경에는 하나의 서버로 운영할 수 없습니다. 왜냐하면, 하나의 서버에 장애가 생길수도 있고, 트래픽이 너무 많아질 수도 있기 때문입니다. 따라서, 서버에 문제가 생기거나 트래픽이 몰려도 장애없는 서버를 구성하는 방법을 배웁니다.
- AWS ELB을 활용하여 로드밸런싱 환경 구축
- AWS Auto Scaling Group을 이용한 다중 서버 구성
- Failover 아키텍처 구성
2) 네트워크 기본
서버를 운영하며 알아야 할 기초적인 네트워크 지식을 짚고 갑니다.
- 포트포워딩
- 네트워크 기본
- 가용성
3주차
1) 웹 서버 + WAS + DB서버 - 간이 운영 환경 구축
전체적인 서버 아키텍처 부터 서버 내부, 외부 등 운영 서버에 필요한 요소들을 배우고 구성하게 됩니다. 이 수업이 끝나면 내가 작성한 코드를 운영 환경에서 서비스 할 수 있게 됩니다.
- WAS 프로젝트 간단 소개(Node.js) 및 EC2에서 환경 구축
- AWS RDS를 통한 DB 서버 구축(MySQL)
- 간이 인프라(웹 서버 + WAS + DB서버)를 구축해보고 통합 테스트
2) DevOps로 넘어가기
함께 운영 환경을 구축해보며 어떠한 요소가 더 필요한 지 고민하고 해당 운영 스택을 기반으로 DevOps로 확장할 준비를 합니다.
해당 인프라 구축 경험을 다함께 공유하여 앞으로 어떤 기능이 있으면 좋을 지에 대한 토론하고 AWS 제품, 오픈소스 툴 등을 리서치해보기
- 모니터링(퍼포먼스, 로그, 메트릭 등
- CI/CD
- VM 환경에서의 한계와 컨테이너 환경
4주차
1) CI/CD, 모니터링 환경 구성
사람은 무조건 실수를 하기 때문에 단순 반복적인 업무는 최대한 기계에게 맡겨야 합니다. 코딩 이후 배포까지 필요한 수많은 작업들을 어떻게 자동화하는지 배웁니다.
- AWS Beanstalk을 이용한 배포 및 서비스 관리
- AWS Cloudwatch를 구성하여 모니터링
- ELK 스택을 구성하여 로그 모니터링
2) CI/CD, 모니터링 환경 구성
대량의 로그를 관리하는 방법과 로그에서 장애의 단서를 재빠르게 찾기 위해 사용되는 시스템들의 활용 방법을 배웁니다. 또한 자동화 된 서버 관리에 필요한 요소를 공유합니다.
- 모니터링의 이해와 여러 운영 데이터를 보며 가용성, 병목화 등 운영 경험 공유
- CI/CD의 이해와 배포 전략 및 정책에 대한 경험 공유
5,6주차
5-6 컨테이너 환경으로의 이전
1~4주차에 구축한 인프라 환경을 컨테이너 환경으로 이전, 구축하기
- Docker file 작성 / 빌드, 컨테이너 운영하기
- Docker 명령어
- Dockerfile 작성
- AWS ECS를 활용한 Container orchestration
- AWS ECR에 n개의 Docker file push
- EC2 n대를 구성한 후 ECR(docker file)을 기반으로 하여 ECS로 클러스터링
- 작업 정의 구성
- 컨테이너 별 포트 매핑
- 컨테이너 Metric(시스템 자원) 배치
- AWS ALB(Aplication load balancer)를 활용한 컨테이너 로드밸런싱
- AWS Codepipeline을 활용한 CI/CD
- Github webhook 설정
- 컨테이너 별 자동 배치를 위한 Dockerfile 재작성
- AWS Codebuild를 통한 자동 빌드(Docker) 설정
- Codepipeline + Codebuild + ECS를 활용한 무중단(블루-그린) 배포