< 강의 커리큘럼 >

01. DevOps의기본 개념 
02. AWS기반 소규모&중규모 아키텍트설계
03. AWS기반 대규모아키텍트 설계
04. 코드를통한 인프라관리(IaC)
05. 도커와 쿠버네티스를 이용한서비스 운영
06. CI/CD(지속적 통합/지속적 제공) 구현하기
07. 모니터링서비스 구축및운영
08. AWS기반보안
부록. Kuberneteson AWS EKS


 

이번시간에는 앞서 Django를 이용하여 만들었던 

소스코드들을 EC2에 직접 배포해보고, Django에서 default로 사용하던 sqlite3의 내용을 RDS mysql로 옮겨보는 시간을 가졌습니다. 

 

AWS RDS를 mysql로 생성을 했습니다.

이때 퍼블릭으로 OPEN을 해서 외부에서 접근 가능하도록 설정을 했습니다. 

이렇게 할 경우에는.. 보안에 취약하지만 간단히 테스트하기 위해서.. 그냥하는 것 같습니다. 

 

좌 : 기존에설정되어있던 setting.py의 databases설정값 / 우: RDS의 설정값으로 변경한 settings.py의 databases 설정값

RDS 생성시 마스터 사용자 이름과 마스터 암호는 setting에 USER, PASSWORD에 입력하고, 

추가구성에서 초기 데이터베이스의 이름을 NAME에 입력합니다. 

options는 구글링하면 다 나오지만.. 해당 설정을 넣어줍니다. 

HOST는 RDS에서 엔드포인트라고 적힌부분을 적어줍니다. 

 

그리고 mysqlclient 설치가 필요합니다.

pip install mysqlclient

 

그리고 DB가 변경되었으니 다시 

python manage.py migrate

로 초기 셋팅을 해줍니다. 

 

이때 기존에 있던 데이터가 옮겨지는 것은 아닙니다. 

 

다시 imsomnia를 이용해서 데이터를 입력해줄 필요가 있습니다. 

https://insomnia.rest/ 

 

The API Design Platform and API Client

Leading Open Source API Client, and Collaborative API Design Platform for REST, SOAP, GraphQL, and GRPC

insomnia.rest

 


EC2 Ubuntu위에 앱을 배포할 예정입니다. 

putty를 이용하여 ubuntu에 접속을 했으며 패키지 다운로드가 필요합니다. (초기셋팅)

sudo apt-get update

sudo apt-get install build-essential -y

sudo apt-get install python3

python3 -V (python 3.8.5)

sudo apt-get install python3-pip

 

 

소스코드를 배포하기전에 

pip freeze >> requirements.txt

를 하게 되면 설치된 것 들이 쫙 보이게 되는거 같네요..? 맞나..? 

https://2siwon.github.io/pip/2017/09/25/pip-002-pip-freeze.html

 

pip : 02. pip freeze로 패키지 한번에 설치하기(개발환경 복구하기)

개발환경이 바뀌었을 때를 생각해보자. 일일이 패키지를 설치해줘야 한다. 이때 일일이 설치하지 않고 패키지들을 기록해놓을 수 있는 명령어가 pip freeze 명령어이다. pip를 이용해 django를 설치

2siwon.github.io

 

EC2에 어떤식으로 옮기냐? 

FTP를 활용하거나.. 이러진 않고 git hub에다가 소스코드를 올려놓고, ec2에서 git clone 하는 형태로 진행했습니다. 

 

git 사용법에 대해서는 이야기해주지 않지만.. 

git은 협업할때 많이 쓰이기 때문에 기본적인 사항들은 알아두는게 좋을 것 같네요.

저도 딱 필요한 수준까지만 하고 있습니다.

git clone

git add .

git commit -m

git push origin branch

git checkout -b

git branch 

git status

이정도..?

 

private repository로 만들경우에.. 쉽게쉽게 하기위해 SSH키 등록이 필요합니다. 

기본경로는 ~/.ssh에 있습니다. 

 

git에 소스코드를 push한 이후에 ec2에서 git clone을 합니다. 

실행하는 방법은 가상환경을 이용하여 실행하는데.. 경로는 git clone한 소스코드 안 root경로에서 실행합니다. 

 

sudo apt-get install virtualenv

virtualenv -p pytion myenv

sudo apt install python3-pip 

pip3 install -r requirements.txt (freeze로 다운받은 환경들을 설치)

(그런데 mysqlclient 설치시 애러발생 그래서 해결은) sudo apt-get install libmysqlclient-dev

(그리고 난 이후 다시 설치 시작) pip3 install -r requirements.txt

 

여기까지 설치가 완료 된 이후에는 

EC2의 SG에서 8000포트를 ANY OPEN 해줍니다. 

그리고 난 뒤에 다시

 

settings.py에 ALLOWED_HOSTS = [ 'ec2 ipv4 dns 입력하기']

를 추가해줘야합니다. 

 

python3 manage.py runserver 0.0.0.0:8000

하면 인스턴스의 퍼블릭 IPv4로 접근하면 정상적으로 뜨는걸 볼수 있습니다.

 

diswon -h 

설정을 하면 putty session이 끊어져도 계속 구동되는 그런 명령어입니다. 

 

그러면.. ec2에서 정상적으로 계속 돌아가는걸 볼 수 있습니다.

 

 


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

 

https://bit.ly/3FVdhDa

 

수강료 100% 환급 챌린지 | 패스트캠퍼스

딱 5일간 진행되는 환급챌린지로 수강료 100% 환급받으세요! 더 늦기전에 자기계발 막차 탑승!

fastcampus.co.kr

반응형


< 강의 커리큘럼 >

01. DevOps의기본 개념 
02. AWS기반 소규모&중규모 아키텍트설계
03. AWS기반 대규모아키텍트 설계
04. 코드를통한 인프라관리(IaC)
05. 도커와 쿠버네티스를 이용한서비스 운영
06. CI/CD(지속적 통합/지속적 제공) 구현하기
07. 모니터링서비스 구축및운영
08. AWS기반보안
부록. Kuberneteson AWS EKS


이전 강의 내용

 

모놀리식 앱 배포를 위한 백엔드 (1/2)- 패스트캠퍼스 챌린지 AWS 인프라 구축과 DevOps 운영 13일차

< 강의 커리큘럼 > 01. DevOps의기본 개념 02. AWS기반 소규모&중규모 아키텍트설계 03. AWS기반 대규모아키텍트 설계 04. 코드를통한 인프라관리(IaC) 05. 도커와 쿠버네티스를 이용한서비스 

everycloudhasasilverlining.tistory.com

 

 

백엔드 개발 강의 내용들을 쭉 정리해보자면

 

1. Djago를 할 줄 모른다는 가정하에 Django의 공식문서를 통해 튜토리얼을 진행

 

첫 번째 장고 앱 작성하기, part 1 | Django 문서 | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com

 

2. 온라인주문어플리케이션 만들기로 계획함 

    > 앞선 DDD를 설명할 때 부터 이야기를 계속 해왔습니다 .

    > 모놀로식과 마이크로 형식으로 다 해보려고 하지만 , 지금은 모놀로식 형태로 해보기로 함

    > 최소한의 구분으로 Order(고객 주문페이지) , Boss(사장님이 보는것), Delivery(배달기사)로 3개는 구분함

 

3. Order 

   > 초기 튜토리얼에서 했던 내용을 이해했다면 크게 어렵지 않음

   > 튜토리얼에서 했던 내용이 실전 ver 어떻게 사용되는가를 알 수 있으면서 이해가 됩니다.

   > 3개의 상점이 있고, 상점별 메뉴들이 각각 다르고, 배송까지 걸리는 시간과 배달완료를 확인할 수 있는 칸 까지 만듬

   > view.py와 .html 파일을 잘 연결해서 사용하여, 우리가 보는 페이지에서 잘 보일 수 있도록 합니다.

   > models.py는 데이터베이스를 만든다고 생각합니다.

   > urls.py 는 가장 상위에있는 urls.py에 각각의 앱(order, boss, delivery)를 등록해줘야 정상동작 가능하며,

      각각의 앱에서는 환경에 맞춰 urls.py를 설정해줘야합니다. 

   > admin은 따로 만지지는 않았네요. 

 

4. Boss

   > 사장님은 들어온 주문을 받고 얼마나 시간이 걸리는지 입력합니다. 

   > 3개의 상점별로 사장님은 1명씩 있을 것이니. 사장님별로 타 상점에서 어떤 주문이 들어오면 보이면 안됩니다.

   > 걸리는 시간을 입력하고.. 그런 페이지가 만들어졌고, Order 강의에서 이미 대부분 설명이 되었습니다. 

 

5. Delivery

   > 배송이 완료되었는지 체크합니다. 

   > 이부분 또한 앞서 내용들이 모두 정리가 되었습니다. 

 


그리고. 이정도는 조금 더 알고 보면 도움이 될 것 같네요.

https://noahlogs.tistory.com/35

 

[네트워크] get 과 post 의 차이

GET 과 POST 는 HTTP 메서드로 클라이언트에서 서버로 무언가를 요청할 때 사용한다. 2019/06/01 - [IT 정보 로그캣/CS] - [네트워크] http 란 [네트워크] http 란 기본적으로 네트워크 통신을 할 때 처음 접하

noahlogs.tistory.com

https://velog.io/@inyong_pang/HTMLCSS-HTML-%EA%B8%B0%EB%B3%B8-%EB%AC%B8%EB%B2%95

 

[HTML/CSS] HTML 기본 문법

HTML 기본 형태 태그는 각자의 의미를 가지고 있으며 다음과 같은 형태를 가진다 ` 태그는 열리고(open) 닫히는(close) 태그 구조를 가지고 있는 한 쌍 (시작(start)와 종료(end)구조라고도 함) 태그의 범

velog.io

 

 

 

 


 

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

 

https://bit.ly/3FVdhDa

 

수강료 100% 환급 챌린지 | 패스트캠퍼스

딱 5일간 진행되는 환급챌린지로 수강료 100% 환급받으세요! 더 늦기전에 자기계발 막차 탑승!

fastcampus.co.kr

반응형

 


< 강의 커리큘럼 >

01. DevOps의기본 개념 
02. AWS기반 소규모&중규모 아키텍트설계
03. AWS기반 대규모아키텍트 설계
04. 코드를통한 인프라관리(IaC)
05. 도커와 쿠버네티스를 이용한서비스 운영
06. CI/CD(지속적 통합/지속적 제공) 구현하기
07. 모니터링서비스 구축및운영
08. AWS기반보안
부록. Kuberneteson AWS EKS


 

일단 이번강의에서의 목표는. 

모놀리식 형태로 앱을 배포해보는 것 입니다.  (주문어플리케이션을 만듭니다.)

 

앞선 Django 기초에 대한 영상을 어느정도 이해하고 있어야 이 강의가 이해가됩니다. 

 

 

Django 기초 (1/2) - 패스트캠퍼스 챌린지 AWS 인프라 구축과 DevOps 운영 11일차

< 강의 커리큘럼 > 01. DevOps의기본 개념 02. AWS기반 소규모&중규모 아키텍트설계 03. AWS기반 대규모아키텍트 설계 04. 코드를통한 인프라관리(IaC) 05. 도커와 쿠버네티스를 이용한서비스 

everycloudhasasilverlining.tistory.com

 

 

Django 기초 (2/2) - 패스트캠퍼스 챌린지 AWS 인프라 구축과 DevOps 운영 12일차

< 강의 커리큘럼 > 01. DevOps의기본 개념 02. AWS기반 소규모&중규모 아키텍트설계 03. AWS기반 대규모아키텍트 설계 04. 코드를통한 인프라관리(IaC) 05. 도커와 쿠버네티스를 이용한서비스 

everycloudhasasilverlining.tistory.com

 

모놀리식 앱배포이지만,

Order, Boss, Delivery는 구분한다고 하여 각각 구분에 맞춰 강의가 이루어져 있습니다. 

 

앞선 강의에서 했던것과 동일하게 Django 를 이용하여

> 프로젝트 생성 python mange.py startproject {이름}

> 앱 생성 python manage.py start app {이름}

> settings.py에 INSTALLED_APPS에 생성한 앱 등록

> models.py에서 데이터베이스 설계 및 작성  class = 테이블 , 필요한 스키마 작성

> python mange.py makemigrations

> python manage.py migrate 하여 db.sqlite3 파일생성 확인

 


https://www.django-rest-framework.org/

 

Home - Django REST framework

 

www.django-rest-framework.org

Django REST framework 설치가 필요하다고하여 설치 진행합니다. 

pip install djangorestframework

 

그리고 settings.py의 INSTALLED_APPS에서  rest_framework를 사용할 수 있도록 합니다.

또 urls.py에서도 동일하게 아래 사진과 같이 path를 입력해줍니다. 


 

https://insomnia.rest/

 

The API Design Platform and API Client

Leading Open Source API Client, and Collaborative API Design Platform for REST, SOAP, GraphQL, and GRPC

insomnia.rest

Rest API? 활용을위해 위에 툴을 사용하시는 것 같네요.. 

이 프로그램을 통해서 쉽게쉽게 값을 넣으시고 하시네요.. 


 

Order 백엔드까지 듣고서의 느낌은

> 기본적인 웹에 대한 이해가 필요합니다. 
> 강사님이 실제 코드를 보여주면서 진행을 하시지만 세부적인 디테일한 설명은 없습니다. 

> 강의를 보고 따라하다보니까 대강 전체적인 틀과 구조는 이해가 갔는데, 조금 더 이해를 돕기위한 설계문서? 아키텍처가 있으면 좋겠다라는 느낌이 드네요. 

> 백엔드의 내용부터 프론트에 대한 내용도 조금 섞여있는데, 천천히 따라가다보면.. 할만하다

> 어떤 속성값들이 꼭 필요한지 .. 등등 디테일한 내용은 조금 파악하기 힘들었습니다. 

> 강의 자료에 보면 소스코드가 이미 올라와있어서 활용해서 공부를 더 해야할 것 같네요.

 

 

 

 


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

 

https://bit.ly/3FVdhDa

 

수강료 100% 환급 챌린지 | 패스트캠퍼스

딱 5일간 진행되는 환급챌린지로 수강료 100% 환급받으세요! 더 늦기전에 자기계발 막차 탑승!

fastcampus.co.kr

 

반응형

 


< 강의 커리큘럼 >

01. DevOps의기본 개념 
02. AWS기반 소규모&중규모 아키텍트설계
03. AWS기반 대규모아키텍트 설계
04. 코드를통한 인프라관리(IaC)
05. 도커와 쿠버네티스를 이용한서비스 운영
06. CI/CD(지속적 통합/지속적 제공) 구현하기
07. 모니터링서비스 구축및운영
08. AWS기반보안
부록. Kuberneteson AWS EKS


앞선 Django(1/2) 초기에 말씀드린 것과 같이.

 

모놀로식 아키텍처를 한번 배포해보고자합니다.

앞서 기본적으로 알아야되는게 Django를 이용하고 인프라는 당연히 AWS를 사용하려고 합니다. 

 

그런데 Django에 대해서 들어만 봤지. 실제로 써보지 않았기 때문에 강의에서 설명해주는 듯 합니다. 

 

https://docs.djangoproject.com/ko/3.2/intro/tutorial01/

 

첫 번째 장고 앱 작성하기, part 1 | Django 문서 | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com

 

 

 

관리자 생성하기

python manage.py createsuperuser

> 장고에서는 어드민관리해주는 게 따로 있습니다. 

> 127.0.0.1/8000/admin 을통해서 접속이 가능합니다.

> urls.py 에서 urlpatterns에 path 설정이 어떻게 되있나 확인하면 됩니다. . 모든지 URL 정보가 여기에 담겨있습니다.

> 기본적이 구성이 잘 되어있습니다. 

> 관리자 페이지를 왜 필요한가? >> 모든걸 계속 코드로 관리할 수 없기 때문에. 

> 관리자 페이지에서 정말 손쉽게 데이터를 관리할 수 있게 잘 되어 있습니다. 

> admins.py에서 register로 사이트를 등록하게되면 쉽게쉽게 적용해서 활용할 수 있습니다. 

> 데이터베이스를 직접 코드로 관리하지 않아도 관리자 페이지에서 쉽게 관리가능합니다. 

 

뷰 추가하기 

강의에서도 주어진 코드를 활용했습니다.

> html에 대한 약간의 지식과 JSON, 기본 문법 등을 조금이라도 알아야 이해가 될 것 같네요.

> 처음 들으시는 분들은 변수가 넘어가고 배열이 나오고, 반복문, 조건이 나오고 이런 부분을 어려워할 거 같습니다.

> 뷰라는 건 말 그대로 보여지는 페이지에 대한 구성을 합니다. 

> 우리가 쓰는 웹페이지에서 F12를 눌렀을때 보이는 그런 코드들을 만든다고 보시면 됩니다. 

> Django로 프론트부터 백앤드까지 다 할 수 있다는걸 느낄 수 있습니다. 

> 진자언어? 를 사용하기 위해서는 {% 명령어 입력 %} 형태로 이루어 져있습니다. 
   저 명령어에는 for if  등을 넣어주면됩니다. 

 

 

> 데이터베이스에 없는 값이 입력될 경우에 404에러가 뜰 수 있도록 설정되야합니다.

> 템플릿을 등록해서 사용할 수도있습니다. 

 

 

하드코딩된 URL 제거하기

> 일반적으로 경로 등을 코드상에 하드코딩하는것은 좋지 않습니다

> 하드코딩 한줄에 연봉 300만원 삭감해야합니다. 

> 진자언어(?) 형식으로 변경합니다. {% url '이름' question.id %} 이런형식으로. 

 

 

 

form

> form 문을 이용해서 라디오버튼이 생긴다든지. 뭐 .. 이런 형태로 변경이 가능합니다. 

 

 

전반적으로 이해는 다 가고, 장고로 모든 페이지를 만들고 디비를 컨트롤 할 수 있는것 까지.. 알게되었습니다.

내용을 다 줄줄 쓸 수 없고, 실제로 따라해보는게 좋을 것 같네요.

 

 

 


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

 

https://bit.ly/3FVdhDa

 

수강료 100% 환급 챌린지 | 패스트캠퍼스

딱 5일간 진행되는 환급챌린지로 수강료 100% 환급받으세요! 더 늦기전에 자기계발 막차 탑승!

fastcampus.co.kr

 

반응형


< 강의 커리큘럼 >

01. DevOps의기본 개념 
02. AWS기반 소규모&중규모 아키텍트설계
03. AWS기반 대규모아키텍트 설계
04. 코드를통한 인프라관리(IaC)
05. 도커와 쿠버네티스를 이용한서비스 운영
06. CI/CD(지속적 통합/지속적 제공) 구현하기
07. 모니터링서비스 구축및운영
08. AWS기반보안
부록. Kuberneteson AWS EKS


모놀로식 아키텍처를 한번 배포해보고자합니다.

앞서 기본적으로 알아야되는게 Django를 이용하고 인프라는 당연히 AWS를 사용하려고 합니다. 

 

그런데 Django에 대해서 들어만 봤지. 실제로 써보지 않았기 때문에 강의에서 설명해주는 듯 합니다. 

 

https://docs.djangoproject.com/ko/3.2/intro/tutorial01/

 

첫 번째 장고 앱 작성하기, part 1 | Django 문서 | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com

해당강의는 위 링크를 따라하면서 진행했습니다.

 

 

Django 설치하기.

모든 개발에 있어서 환경설정이 필수인것을.. 본인은 다 깔려있다고 하고 그냥 넘기네요.. 

후.. 

https://docs.djangoproject.com/en/2.0/topics/install/#installing-official-release

 

How to install Django | Django documentation | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com

저의 경우는 

코드들을 모아두는 폴더가 따로 있습니다.

 

python --version

>> 3.7.5 

설치가 되어 있었고. 

 

cd /폴더경로

mkdir fastcamp-1

cd fastcamp-1

생성한 이후 

 

pip install Django 

를 통해서 Django를 설치했습니다. 

 

python -m django --version

>> 3.2.9

 

 

프로젝트 생성하기

 

django-admin startproject mysite

명령어를 통해서 Project를 생성합니다. 프로젝트명은 mysite 부분을 변경하면 가능합니다. 

 

좌측 사진과 같이 프로젝트가 생성되면서 기본 파일들이 생성됩니다. 

그렇기 때문에  해당명령어를 통해서 프로젝트를 생성합니다. 

 

1. manage.py : 서버를 운영하는 파일 서버 런, 스탑 .. 같이 진짜 메인. 중요한업무 시행

2. settings.py : 장고의 다양한 셋팅을 확인할 수 있고, 변경할 수 있음
                    디비를 변경할때 DATABASES = 부분을 변경할 필요가 있음. 

3. urls.py : URL 관련 행위를 모두 다함. 

 

 

 

더보기
  • The outer mysite/ root directory is a container for your project. Its name doesn’t matter to Django; you can rename it to anything you like.
  • manage.py: Django 프로젝트와 다양한 방법으로 상호작용 하는 커맨드라인의 유틸리티 입니다. manage.py 에 대한 자세한 정보는 django-admin and manage.py 에서 확인할 수 있습니다.
  • mysite/ 디렉토리 내부에는 프로젝트를 위한 실제 Python 패키지들이 저장됩니다. 이 디렉토리 내의 이름을 이용하여, (mysite.urls 와 같은 식으로) 프로젝트의 어디서나 Python 패키지들을 임포트할 수 있습니다.
  • mysite/__init__.py: Python으로 하여금 이 디렉토리를 패키지처럼 다루라고 알려주는 용도의 단순한 빈 파일입니다. Python 초심자라면, Python 공식 홈페이지의 패키지를 읽어보세요.
  • mysite/settings.py: 현재 Django 프로젝트의 환경 및 구성을 저장합니다. Django settings에서 환경 설정이 어떻게 동작하는지 확인할 수 있습니다.
  • mysite/urls.py: 현재 Django project 의 URL 선언을 저장합니다. Django 로 작성된 사이트의 《목차》 라고 할 수 있습니다. URL dispatcher 에서 URL 에 대한 자세한 내용을 읽어보세요.
  • mysite/asgi.py: An entry-point for ASGI-compatible web servers to serve your project. See ASGI를 사용하여 배포하는 방법 for more details.
  • mysite/wsgi.py: 현재 프로젝트를 서비스하기 위한 WSGI 호환 웹 서버의 진입점입니다. WSGI를 사용하여 배포하는 방법를 읽어보세요.

 

서버 시작하기 

python manage.py runserver

명령어를 통해서 실행 할 수 있습니다. 

 

 

성공해서 127.0.0.1:8000 접속을하면 로그들도 쭉 뜨는 걸 확인 할 수 있습니다. 

 

 

설문조사 앱 만들기

python manage.py startapp polls

명령어를 실행하면 아래 사진과 같이 새로운 polls라는 폴더가 생성되면서 기본 코드들이 들어갑니다. 자동으로

models.py 라는 파일은 

> 데이터베이스라고 생각하면 됩니다. 데이터에 접근하기 위한 그런 클래스 형태를 통해서 디비를 변경 CRUD를 진행합니다. 

 

views.py 파일은

> 사용자가 버튼을 클릭했을 때 나오는...백에서돌아가는 알고리즘,로직들을 관리하는 그런 파일.. 

 

 

 

 

urls.py와 views.py 파일을 통해 

url의 값에 따라 어떤 페이지를 보여줄지를 정할 수 있게 됩니다. (urlpatterns path에서 설정)

 

 

 

데이터베이스 설치

python manage.py migrate

>> 설명이 딱히 없네요.. 

 

 

모델 만들기

models.py : CRUD를 할 수 있는 클래스를 정의한다. 

데이터베이스의 개념이 필요하며, 클래스 내부의 변수선언이 스키마 설정이면서 Foreignkey 설정 등을 합니다. 

장고에서 마이크레이션하는게 엄청 편한것 같습니다. 

 

models.py의 형식에 맞춰서 금방 되는 형식이네요. 

 

 

설명을 쓰기가.. 어렵네요.. 

위에 페이지가 있으니까 그대로 따라해보면 좋을 것 같습니다. 

 

manage.py 파일이 main이다보니까 모든 실행시에 해당파일을 기준으로 migrate 할지 어떤 동작을 할지 입력하네요.

 

 


 

 

 

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

 

https://bit.ly/3FVdhDa

 

수강료 100% 환급 챌린지 | 패스트캠퍼스

딱 5일간 진행되는 환급챌린지로 수강료 100% 환급받으세요! 더 늦기전에 자기계발 막차 탑승!

fastcampus.co.kr

반응형

 


< 강의 커리큘럼 >

01. DevOps의기본 개념 
02. AWS기반 소규모&중규모 아키텍트설계
03. AWS기반 대규모아키텍트 설계
04. 코드를통한 인프라관리(IaC)
05. 도커와 쿠버네티스를 이용한서비스 운영
06. CI/CD(지속적 통합/지속적 제공) 구현하기
07. 모니터링서비스 구축및운영
08. AWS기반보안
부록. Kuberneteson AWS EKS


 

 

 

모놀리식 아키텍처 VS 마이크로서비스 아키텍처

Monolithic을 한국어로하면 "획일적인, 하나의, 단일체의" 이라고 해석이되고

Micro를 한국어로 하면 "소형의, 아주 작은것, 극소의"로 해석이됩니다. 

 

이런 아키텍처 설계?는 과거에서 부터 두 종류가 있었던것 같습니다. 

그러나 빨리빨리를 좋아하는 한국인의 특성상 과거에는 모놀리식 아키텍처를 그려서 서비스를 제공했다고 하면, 요즘에는 마이크로서비스 아키텍처라는게 더 많이 화두가 되고 있습니다. 

 

최근 개발자 채용 JD를 보면 많이 느낄 수 있습니다. 

마이크로서비스 아키텍처 설계가능자, 클라우드에서 서비스 개발을 해본사람, 쿠버네티스 할 수 있는 사람.. 등

 

앞선 맨 첫 강의에서도 DevOps 팀의 핵심지표로 배포빈도(Deployment Frequency)를 중요시하는게 

이 마이크로서비스 아키텍처가 최근의 트렌드인 것을 볼 수 있습니다. 

 

맞는지 모르겠지만

마이크로서비스 아키텍처는 각각의 작은 기능들을 구분(?), 독립적으로 서비스를 띄워두고, 각각의 통신은 API를 통해서 하는것 같습니다. 

그래서 API 설계가 중요하고.. AWS도 마찬가지로 모든 기능을 콘솔에서 하는게 아니고 API로 가능한 걸로. 알고있습니다.

 

이런 관련 글들을 어디서 본적이 있는데.. 어떤글인지는 모르겠습니다.

아무튼 API가 엄청 중요하다. 라는게 결론..

 

강의에서는 이런 내용들이 나오진 않았지만 강의랑 강의자료에 있는 내용들은 일반적으로 알 수 있는 내용들이였습니다. 

 

 

프로젝트 구성원들 역할

해당 내용들은.. 강의자료가 따로 없고, 강의 내용만 있네요.

 

프로젝트를 일반적으로 진행 할 때, 구성원들을 보면

- 기획자 

- 마케터

- 개발자

- 디자이너

- PM 

 

구성원들은 조금 씩 다를 수 있지만, 일반적으로 위의 구성원들로 프로젝트가 진행 됩니다. 

각각의 역할이 있기 때문에 프로젝트를 설계할때, 또는 진행이 될 때 트러블이 많이 생깁니다. 

 

 

각자의 도메인 지식이 다르고, 서비스가 복잡해지면 복잡해 질 수록 기획과 개발의 불일치가 발생하고, 

각자의 언어가 달라 소통도 어려워지는 문제가 있습니다. 

 

그에 대한 해결방법으로, 보편적인 언어(모두 이해하는 말로하자, 전문용어 쓰지말고)를 쓰고,

모델 주도 설계를 하자는 것입니다. 

 

모델 주도 설계가 뭔가 딱 아직 와닿진 않지만, 이내용이 밑에서 설명할 DDD에 대한 내용과 같습니다. 

 

프로젝트 설계 방법론

DDD (Domain Driven Design) : 도메인 주도 설계에 대한 내용이였습니다. 

 

도메인이라는것이 IT를 하면서 많이 들어봤지만, 뭔가 참 범위가 엄청 큰 부분 같습니다. 

 

- 전략적 설계

일어날 수 있는 모든 경우를 생각해서 공유하고, 이것을 그룹핑합니다.

그리고 이 그룹핑간의 관계를 정의하여 도메인 모델을 생성합니다. 

 

-전술적 설계

그룹핑 한 내용을 더 상세히 모델링하고 Aggregate Pattern을 많이 생각한다고 하는데.. 뭔소린지 잘 모르겠습니다.

 

 

https://huisam.tistory.com/entry/DDD

 

DDD(Domain Driven Design) - 도메인 주도 설계란? 마이크로서비스의 관점에서

객체지향에서부터 도메인 주도 설계를 이해하기 위해서는 객체지향을 먼저 이해할 필요가 있습니다 객체지향에서의 핵심은 뭘까요? 객체지향에서의 핵심은 실세계의 객체(물건, 사람, 주문 ....

huisam.tistory.com

https://ppiyo5.tistory.com/21

 

도메인 주도 설계(Domain Driven Development) 이해

* 도메인 주도 설계(Domain Driven Development) 도입 배경 Before 기존의 개발 - 데이터에 종속적인 애플리케이션 - 모델링과 개발과의 불일치 발생 After 도메인 주도 설계 - 이런 불일치를 해소하기 위한

ppiyo5.tistory.com

https://brunch.co.kr/@springboot/605

 

[스터디]도메인 주도 설계 1주차

1. 도메인 주도 설계란? | 해당 글은, 온라인 스터디에서 발표한 내용을 문서로 정리한 글입니다. https://docs.google.com/presentation/d/19WRZ1kk0-uHbOzKjI3_u0HWmHqb6yaP9MT28DML5bxU/edit?usp=sharing 스터디를 시작하기

brunch.co.kr

 

위 블로그들에서 내용들이 자세히 잘 나와있습니다. 

 

도메인 주도 설계라는 것을 들어 봤으니, 해당 강의에서 정말 상세히 다 이해하기보다. 대강 이야기 듣고, 관심 있는 부분은 조금 더 찾아 봐야할 것 같습니다. 

 

강의에서는 굉장히 짧게 이야기했지만 엄청 복잡합니다. 

 

결론적으로는 각 프로젝트인원들의 도메인이 다르고. 그걸 이용해서 경우의 수를 다 나열하여 그룹핑 하여 그 관계를 정의하고,  모델링하여 그 것을 바탕으로 구현하자!

 

로 이해했습니다. 

 

강의는 이제 모놀리식 아키텍처를 기반으로 빠르게 한번 배포도해보고, 추후에는 마이크로서비스 기반으로 배포해보고 CICD까지 가는 것 같습니다. 

 

강의구성은 참 좋은 것 같네요.

 


 

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

 

https://bit.ly/3FVdhDa

 

수강료 100% 환급 챌린지 | 패스트캠퍼스

딱 5일간 진행되는 환급챌린지로 수강료 100% 환급받으세요! 더 늦기전에 자기계발 막차 탑승!

fastcampus.co.kr

 

반응형

 


< 강의 커리큘럼 >

01. DevOps의기본 개념 
02. AWS기반 소규모&중규모 아키텍트설계
03. AWS기반 대규모아키텍트 설계
04. 코드를통한 인프라관리(IaC)
05. 도커와 쿠버네티스를 이용한서비스 운영
06. CI/CD(지속적 통합/지속적 제공) 구현하기
07. 모니터링서비스 구축및운영
08. AWS기반보안
부록. Kuberneteson AWS EKS


 

Bastion 실습 

>> 해당 그림을 바탕으로 실제로 테스트를 해봤습니다. 

 

이 테스트를 하면서 처음에는 Bastion에서 Private EC2에 접속을 못했습니다. 

그래서 원인을 찾아보니. 처음에 위 그림에서 빨간색 표시가 있는 NACL에서의 설정 문제가 있었습니다. 

Private subnet NACL은 인/아웃바운드 ANY OPEN으로 해두었고, 

Public subnet NACL은 아웃바운드 ANY OPEN, 인바운드는 22번만 OPEN 해두었습니다. 

 

그런데, NACL은 stateless 형식인 것과 TCP는 3way handshake를 한다는 것을 이해하면서 

Public subnet NACL에 대해 인바운드 22 OPEN 해둔것이 문제였다는 것을 파악했고, 

모든 NACL에 대해 인/아웃바운드 ANY로 open하니까 정상적으로 연결이 가능했습니다. 

 

syn을 보낼때는 22port로 정상적으로 들어왔지만 

synack이 갈때는 syn에서 들어온 source port가 22번이 아닌 random이기 때문에 22번만 열었을 경우에는 통신이 정상적으로 되지 않았습니다. 

 

결론적으로 말하자면, 

Bastion을 통해 Private EC2에 접속할 때 SG와 NACL의 설정을 모두 고려해야한다.

 

 

그럼 NACL은 언제 쓰냐?

차단해야하는 대역대가 있을 경우 일반적으로 사용한다고합니다. 

AWS에서도 NACL은 차단대역대가 있을 경우에 사용한다고.. 말했던거 같네요. 유투브 영상에서

또한 NACL은 설정할 수 있는 규칙이 20개입니다... 

 

https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/amazon-vpc-limits.html

 

Amazon VPC 할당량 - Amazon Virtual Private Cloud

Amazon VPC 할당량 다음 표에는 AWS 계정 관련 각 리전의 Amazon VPC 리소스 할당량(이전 명칭은 ‘제한’)이 나열되어 있습니다. 달리 명시되지 않는 한 이러한 할당량의 증가를 요청할 수 있습니다.

docs.aws.amazon.com

VPC도 그렇고, IGW, 라우팅테이블 등 다 무한대로 생성할 수 있는게 아닙니다. 

모든 자원에 limit값이 정해져 있으니까 문서를 보고 알아두는 것도 좋을 것 같습니다. 

 

 

또 이 작업을 하면서 들었던 궁금점이 

Router가 하나인데 라우팅테이블이 2개가 있는게 맞는건가?

일반적으로 Subnet 당 라우팅테이블을 하나씩 넣어준다고 합니다. 

 

 

NAT Gateway

아키텍처좀 그려주고 설명해주면.. 좋겠지만.. 그러지 않습니다. 

NAT GW를 사용하면 private안에 있는 EC2에서 인터넷을 사용할 수 있습니다. 

예를들어 yum install mysql 같이.. 다운로드가 가능합니다. 

 

NAT Gateway는 Public Subnet 상에 위치해 있어야하며,

Private Route Table에 0.0.0.0/0 일경우 NAT GW로 라우팅 될 수 있도록 설정이 필요합니다. 

 

 

 

VPC EndPoint

VPC 엔드포인트를 사용할경우 EC2인스턴스에 'IAM사용' 설정을 통해 필요한 권한의 ROLE을 부여해줘야합니다. 

s3에 접근할 수 있는 권한을 가진 role을 부여하는 것 처럼.. ec2 인스턴스를 생성할 때 붙여줍니다. 

그리고 VPC EndPoint를 생성해주고,

 

VPC EndPoint는 2가지 종류가 있습니다. GW, Instance방식 으로 구분을 지을 수 있으며 강의에서는 GW방식으로 했습니다.

 

VPC EndPoint는 꼭 Public에 있지 않아도 되고, Private subnet에 있도록 설정했고, 

설정 후에는 Private Routetable에 자동으로 라우팅테이블이 생성되는걸 확인할 수 있습니다. (시간이 조금 걸림..)

>> S3와 관련된 트래픽이 오면 해당 대상으로 보내라.. 이런건데 자동으로 생성됩니다. 


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

 

https://bit.ly/3FVdhDa

 

수강료 100% 환급 챌린지 | 패스트캠퍼스

딱 5일간 진행되는 환급챌린지로 수강료 100% 환급받으세요! 더 늦기전에 자기계발 막차 탑승!

fastcampus.co.kr

 

반응형

 


< 강의 커리큘럼 >

01. DevOps의기본 개념 
02. AWS기반 소규모&중규모 아키텍트설계
03. AWS기반 대규모아키텍트 설계
04. 코드를통한 인프라관리(IaC)
05. 도커와 쿠버네티스를 이용한서비스 운영
06. CI/CD(지속적 통합/지속적 제공) 구현하기
07. 모니터링서비스 구축및운영
08. AWS기반보안
부록. Kuberneteson AWS EKS


 

NACL vs SG

NACL 과 SG에 대해서는 앞선 7일차 포스팅에서도 써놨었습니다. 

이번 강의에서는 조금 더 자세히 설명을 해주었습니다. 

NACL은 Stateless 방식이면서 VPC의 방화벽 역할을 합니다. 
우선순위를 정해서 인바운드, 아웃바운드를 설정할 수 있습니다. 
(일반적으로 우선순위 정할 때 100단위로 한다고 어디선가.. 들었습니다.
왜나면 그래야 나중에 중간에 다른 규칙이 필요할때 쉽게 넣을 수 있어서.. 라고 합니다.)

SG는 Stateful 방식이면서 인스턴스의 방화벽 역할을 합니다.
EC2와 같이 SG를 설정할 수 있는 인스턴스들이 있습니다. 말단의 인스턴스들의 방화벽 역할을 한다고 생각하면 편합니다. 이 SG는 우선순위를 정하는 건 없이 인바운드, 아웃바운드 규칙을 설정 할 수 있습니다. 

 

Stateless 방식과 Stateful 방식을 설명해주었습니다. 

 

아웃바운드가 ALL Deny라고 가정하면, 

NACL 의 경우 Stateless 방식으로 외부에서 request가 와도 response를 해 주지 않습니다.

SG의 경우 Stateful 방식으로 외부에서 request가 오면 그 상태를 기억하고 있기 때문에 ALL Deny 정책을 가지고 있어도 response를 해줍니다.

 

그리고 NACL은 앞서 이야기한데로 우선순위가 있습니다.

 

100 HTTP 80port Allow 설정을 해두고, 

101 HTTP 80port Deny 설정을 했을 경우에는

>>>> 100 HTTP 80 Allow가 우선순위가 높기 때문에 101 HTTP 80 Deny가 있어도 Allow 됩니다. 

 

 

자동할당 IP설정

강의도중에 자동할당 IP설정하는 부분이 있습니다. 

public subnet의 경우에는 퍼블릭 IP자동할당이 되어있을경우 인스턴스 생성시 기본설정으로 되어 있어서 편리하다? 라는 장점이 있지만.. 

보안상으로는 추천하지는 않습니다. 퍼블릭 공개되는 인스턴스가 있을 경우에는 물론 따로 관리가 필요하며, 외부침입의 표적이 될 수 있습니다. 

 

 

그리고.

httpd 설치를 통해 SG, NACL설정에 대해서 실습을 해주셨지만.. 사용자 데이터부분에 bash 명령어 사용하는부분이 어려운게 아닌데.. 그냥 따라하라고 하는 부분이 뭔가 아쉽네요.. 

사용자 기본이 ec2-user인데.. 에러난거에 대한 설명을 안해주는것도 좀 아쉽네요.

 

 

Bastion에 대해서

강의에서는 앞서서 Bastion에 대해서 설명했기 때문에 그냥 단순히 설정하는 것을 보여줬습니다. 

Priavate Subnet의 SG를 설정할 때 Public Subnet의 SG를 설정할 수 있습니다. (IP를 꼭 안넣고, SG를 넣어도 됩니다.)

SG를 설정할 때 CIDR, IP 또는 보안그룹을 입력해서 설정할 수 있습니다.

 

그런데 이 강의에서.. 조금 아쉬운점이 있다면. 

아키텍처를 그려놓고 설명을 해주면 좋았겠다... 라는 생각 

 

강의에서 설명은 위 사진에서 빨간색 화살표 (-->) 처럼 접근이 된다고 설명을 했지만 .. 

제가 생각하기에는 녹색 화살표(-->) 처럼 흐르는게 맞는게 아닌가... 

 

그런데 강의자료에서도 해당 아키텍쳐가 그려져있지 않네요. 위 아키텍처가 맞다면 그냥 SG만 설정해줄게 아니고 NACL도 설정해주는게 맞는거 같은데.. 갑자기 햇갈립니다. 

 

내일 한번 테스트를 진행 해 볼 예정입니다. 포스팅 시간이 늦었기 때문에.. 

 

NACL을 따로 설정안해줘도 되는건가..? 해줘야되는거같은데..

 

내일은 NAT GW와 VPC Endpoint에 대해서도 다 이해할 수 있을지 모르겠지만 한번 해보도록 하겠습니다. 

 

 


 

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

 

https://bit.ly/3FVdhDa

 

수강료 100% 환급 챌린지 | 패스트캠퍼스

딱 5일간 진행되는 환급챌린지로 수강료 100% 환급받으세요! 더 늦기전에 자기계발 막차 탑승!

fastcampus.co.kr

 

반응형

+ Recent posts