Devops/Fastcampus 캐시백 챌린지

패스트캠퍼스 캐시백 챌린지 44일차

DEV_BLOG 2022. 5. 31. 23:13

수강 인증샷

 

MSA 도메인 개발 도입부와 도커에 관한 클립을 수강하는식으로 챌린지를 진행하였다. MSA 파트를 잠깐 들어보고 Docker쪽을 먼저 수강하기로 결심을 하게 되었다. 처음에 이 강좌를 왜 신청했었는지를 곰곰하게 생각하였을때 도커/쿠버네티스쪽 파트에 더 관심이 있었던 것 같고 해당 파트를 맡으시는분이 유명한 기업의 SRE쪽을 담당하셔서 신뢰감이 많이 갔기때문이었다. 얕게 다양한것들을 다루는 내용의 파트를 보는것보다 세부내용들을 깊이있게 다루고나서 MSA 파트로 다시 넘어가는것이 현명하겠다는 생각이 들었다. 따라서 기존에 생각하였던 MSA쪽의 포스팅예정을 바꾸고 도커쪽으로 포스팅을 하게 될 것이다.

 

 

 

 

MSA 도메인 개발 일부분(이후에 도커파트쪽으로 넘어갈 예정)

강좌에서 기존에 AWS EC2에서 작업하던것과 달리 이번에는 desktop의 vscode로 작업을 변경하셨다.

mkdir MSA
django-admin startproject order
cd order
python manage.py runserver

Visutal Studio Code Editor를 열고 MSA 폴더에서 django project를 만들어준다.

장고 프로젝트 생성후 server 구동까지 잘되는지 확인한다.

requirements.txt를 작성한다.

Django==3.1.3
djangorestframework==3.12.2
mysqlclient==2.0.1
django-mysql==3.9
django-cors-headers==3.5.0
pika==1.1.0

장고에서 모델을 다루고 추출할때 restframework를 사용하고,

db는 mysql을 쓸것이고,

pika는 rabbitMQ를 연결할 때 필요한 패키지이다.

FROM python:3.9
ENV PYTHONUNBUFFERED 1
WORKDIR /app
copy requirements.txt /app/requirements.txt
RUN pip install -r requirements.txt
COPY . /app 

CMD python manage.py runserver 0.0.0.0:8000

Dockerfile을 생성해준다.

version: '3.8'
services:
  backend:
    build:
     context: .
     dockerfile : Dockerfile
    ports:
      - 8000:8000
    volumes:
      - .:/app

docker-compose.yml을 생성해준다.

docker-compose up

docker compose에 정의되어있는 모든 서비스 컨테이너를 한 번에 생성하고 실행하는 docker-compose up을 실행한다.

 

환경구축을 하면서 여러 에러들을 마주하였고, 장시간에 걸쳐 하나씩 해결해가다가 무언가 많이 찜찜하다싶어서 후반부 파트의 Docker쪽 강의를 보니 다음과 같은 주의사항을 만날 수 있었고, 도커쪽을 먼저 본뒤에 MSA파트를 보기로 결심하였다.

 

윈도우의 WSL 기능을 이용한 Ubuntu에서 도커를 설치하여도 정상 동작하지 않습니다. 윈도우에 Docker for desktop을 설치하여 우회하는 방법이 있으나, 다른 이슈가 생길 수 있어 추천하지 않습니다. 컨테이너 기술은 리눅스 환경을 기반으로 만들어진 기술이기 때문에 윈도우 사용자는 정삭적인 리눅스 환경을 준비하는 것이 좋습니다.

 

 

 

 

컨테이너 기술의 발전

Traditional Deployment

  • 서비스를 운영하다보면 서버 어플리케이션 운영구조를 서버위에 라이브러리,프레임워크를 설치하게 되고 그위에 어플리케이션 바이너리,코드를 두는 식으로 생각하게 된다.
  • 이 경우는 효율성 낮아지고 확장성이 낮아짐..

⇒ 어플리케이션을 샌드박싱해야겠다!

⇒ 가장 먼저 시도한 방법은 가상머신(hypervisor) 방법

 

Virtualized Deployment

  • hypervisor를 통해서 CPU/RAM/HDD 등의 장치를 이루는 내용을 가상으로 시뮬레이션해서 guestOS를 만들고 그 위에서 동작하도록 한다.
  • CPU RAM HDD 에뮬레이션하는데 굉장히 큰 오버헤드가 발생하고, 기존 HostOS에비해 성능이 떨어지게 된다.또한 비용면에서도 크게 부담이 증가한다.

⇒ 이러한 흐름에서 Continaer 기술이 등장하게 된다.

 

Container Deployment

  • 컨테이너 기술을 사용할때는 HostOS에 GuestOS를 띄우지않고 GuestOS처럼 동작은 하는데, HostOS 운영체제의 커널을 공유하게 된다.
  • 샌드박싱된 환경을 가지고 컨테이너를 띄우고, 어플리케이션 실행에 필요한 App Binary나 필요한 의존성만 들어가기에 경량화가 된다. 따라서 오버헤드가 작고 성능이 가상머신보다 월등하다.

 

컨테이너 기술에서 주목을 받게 된 오픈소스 프로젝트가 2013년에 만들어진 Docker(Container Engine:서버 한대에서 컨테이너들을 잘 스케쥴링하고 관리)이다.

그 후에 Kubernetes(Container Orchestration System: 여러 서버들에 대해서 컨테이너들을 잘 스케쥴링하고 관리하는 시스템)으로 넘어가게 된다.

 

 

 

 

https://bit.ly/3L3avNW

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

* 본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.