728x90 반응형 Dev./Cloud22 AWS: EC2 Elastic Compute Cloud ⇒ C 가 2개라서 EC2 ⇒ Infrastructure as a Service EC2 는 딱 하나의 서비스는 아니다. 좀 더 확장해서 보면 가상 머신을 빌리면 해당 인스턴스를 Elastic Compute Cloud 인스턴스라고 한다. 데이터를 가상 드라이브 또는 Elastic Block Storage 볼륨에 저장할 수 있고 Elastic Load Balancer 로 로드를 분산시킬 수 있다. 또 Auto Scaling Group 을 통해 서비스를 확장시킬 수 있다. 이렇게 EC2 를 빌린다는 것은 다른 여러가지의 기능들을 포함하게 될 수 있다. EC2 를 빌릴 때 아래의 내용들을 설정할 수 있다. Operating System: Linux, Windows or M.. Dev./Cloud 2023. 11. 10. AWS: Access Key, CLI and SDK AWS 에 접근하기 위해서는 3가지 방법으로 구분할 수 있다. AWS management console 을 통해서 접근 → password + MFA AWS command line interface 를 통해서 접근 → access key AWS software developer kit 를 통해서 접근 → access key (for code) CLI 와 SDK 에서 사용되는 access key 는 username 과 password 의 형태를 가지는 ACCESS_KEY 와 SECRET_ACCESS_KEY 로 구분되어 지는데 이는 절대 다른 사람들과 공유하면 안된다. # example of access key AWS_ACCESS_KEY_ID = AKIASK4E37PV4983d6C AWS_SECRET_ACC.. Dev./Cloud 2023. 11. 9. AWS: IAM (Identity and Access Management) 기본적으로 AWS 콘솔을 사용하기 위해서는 어떤 권한을 가진 유저로 접속을 해야한다. 그래서 처음 가입하게 되면 root 권한(모든 권한, 즉 그냥 Business 그 자체)으로 접속할 수 있는 데, 너무 많은 권한을 가지고 있기 때문에 필수 권한만 따로 만들어서 관리하는게 전체적으로 보안도 유지할 수 있고 생성 및 삭제를 통해 관리하기도 쉬워진다. 대시보드 > 사용자 > 사용자 생성 목표는 AWS Certified Solutions Architect - Associate 이기 때문에 Identity Center 사용자가 아닌 IAM 사용자로 생성하면 된다. 그 다음은 권한을 설정하는 페이지가 나온다. 권한을 생성한적 없는 경우 새롭게 권한을 설정하라고 나오는데, 이때 Administrator Acces.. Dev./Cloud 2023. 11. 8. [Cloud] CD - NCP: Rollback tag 현재에는 yml 파일에 latest 로 태그가 들어가기 때문에 롤백을 실행할 수 없다. 이미지에 고유 식별자가 없으면 어떤 변경이 언제 이루어졌는지 추적할 수 없고 오류진단과 디버깅을 쉽게 할 수 없다. 또한 새롭게 배포가 된 이후에 에러가 발생했을 때 안정적인 버전으로 빠르게 복귀가 필요한 경우도 종종 발생한다. 기본적으로 태그를 여러개 등록이 가능하기 때문에 유니크한 정보값을 생성을 위해 timestamp 를 사용하고 롤백을 위한 다중 태그를 등록하자. # yml 파일 env: # IMAGE_TAG: ${{ vars.NCP_CONTAINER_REGISTRY }}/lion-app:latest IMAGE: ${{ vars.NCP_CONTAINER_REGISTRY }}/lion-app IMAGE_TAG: .. Dev./Cloud 2023. 8. 22. [Cloud] CD - NCP: Load balancer Load balancer NCP 에서 Load balancer 만들어 주기 (프록시 로드밸런서 사용예정) proxy load balancer 는 클라이언트와 서버간의 중개자로 작동하며 클라이언트의 요청을 받아 적절한 타겟 서버로 전달하고 서버의 응답을 클라이언트에게 전달한다. Load balancer 여러 서버 간의 트래픽을 분산 → 처리시간 단축 특정 서버에 문제가 생기면 다른 서버로 routing 서버를 추가하거나 제거하며 스케일링 Subnet : Load balancer 가 동작하는 곳 네트워크의 논리적인 분할, 특정 IP 주소 범위 범위를 정하고 Gateway 설정 리스너 포트 80 Target : Load balancer 가 트래픽을 분산시킬 서버(인스턴스) 프로토콜 : TCP 포트 : 8000.. Dev./Cloud 2023. 8. 22. [Cloud]배포 AWS: Secrets Manager NCP 에서는 지원하지 않는 기능! AWS 에서는 시크릿 키를 관리할 수 있는 기능을 제공해준다. 사용자의 이름, 암호 주소, 데이터베이스 이름, 포트 등을 설정하게 끔 되어 있는데 이 부분에는 사용하는 DB 에 대한 정보를 넣어준다. Region : ap-northeast-2 ← 아시아 / 서울 생성후 python3 로 바꿔서 샘플코드 복사 붙여넣기 common → aws.py # Use this code snippet in your app. # If you need more information about configurations # or implementing the sample code, visit the AWS docs: # import boto3 from botocore.exceptions .. Dev./Cloud 2023. 8. 17. [Cloud] 배포 - NCP : 클라우드 서버에서 DB 띄우기: NoSQL 데이터 베이스를 띄우기 위해 열었던 서버에 MongoDB 를 띄워서 연결하기 Mongo DB 설치 ACG 설정 DRF → Serializer 설정 환경변수 조정 db 서버에 접속해서 mongoDB 이미지를 다운받고 띄우기 docker pull mongo docker run --name mongo -d -p 27017:27017 -v mongo_data:/data/db mongo:latest 이후 서버의 ACG 설정에 해당 포트 정보를 입력해준다. 그 다음 서버 코드로 넘어가서 IP 주소를 연결하는 부분을 수정한다. 현재프로젝트에서는 serializers.py 에서 사용하고 있었으니 이 부분을 수정해 준다. # serializers.py import os from rest_framework import s.. Dev./Cloud 2023. 8. 15. [Cloud] 배포 - NCP : 로컬 서버에서 DB 띄우기: NoSQL NoSQL NoSQL 중 하나인 MongoDB 를 이용하여 DB 를 구성해보자. 새로운 blog 앱을 생성한다. python3 manage.py startapp blog pip install pymongo pip freeze | grep pymongo >> requirements.txt views.py from pymongo import MongoClient client = MongoClient() db = client.likelion def create_blog() -> bool: blog = { "title" : "My first blog", "content" : "This is my first blog", "author" : "lion", } try: db.blogs.insert_one(blog) .. Dev./Cloud 2023. 8. 14. [Cloud] 배포 - NCP : 클라우드 서버에서 DB 띄우기 그러나.. 상당히 비싼 DB 인스턴스 요금 그래서 간단한 프로젝트의 경우 일반 클라우드 서버를 열어서 db 컨테이너 띄워 기능을 대체한다. 새로운 서버를 열고 로컬에서 가상환경 접속 설정 변경 후 vi ~/.ssh/config # ssh/config 파일 수정 Host lion-db HostName ... User lion ... docker 를 가상환경에서 설치를 시작 # 최초 업데이트 sudo apt-get update && upgrade # apt 가 HTTPS 를 통해 repository 를 이용하는 것을 허용하는 패키지들 sudo apt-get install -y ca-certificates curl gnupg lsb-release # Docker 공식 GPG 키 추가 curl -fsSL | s.. Dev./Cloud 2023. 8. 14. [Cloud] 배포 - NCP : DB 서버로 DB 연결 NCP DB Server 띄우기 Cloud DB for PostgreSQL 로 들어가서 생성 시작 CIDR (Classless Inter-Domain Routing) 블록은 VPC (Virtual Pricate Cloud) 에서 가져와서 사용 CIDR - IP 주소 지정 체계로 인터넷상의 데이터 라우팅 효율성을 향상시킴 ACG 설정 변경 접근소스에 VPC 블록 추가 서버에 psql 설치 sudo sh -c 'echo "deb $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' wget --quiet -O - | sudo apt-key add - sudo apt-get update sudo apt-get -y install postgres.. Dev./Cloud 2023. 8. 14. [Cloud] 배포 - NCP : 클라우드 서버에 올리기 클라우드 서버로 띄우려면 기존 코드에서 환경설정을 바꿔주어야 한다. 환경변수를 위한 패키지로 os 를 사용한다. import os ... LOCAL_IP = os.getenv('LOCAL_IP', '') ALLOWED_HOSTS = [ "localhost", "127.0.0.1", LOCAL_IP, ] CSRF_TRUSTED_ORIGINS = [ "", f"http://{LOCAL_IP:8888}", ] prod.env (docker-compose.yml 파일과 같은 경로) LOCAL_IP={IP주소} django.nginx # 사실상 도메인 정보를 넣어두기 때문에 환경변수로 다루는게 좀 억지이긴 하지만 그래도 개발단계에서~ # 실제로는 파일을 수정하지 않고 Docker.nginx_ubt 로 수정한다. .. Dev./Cloud 2023. 8. 13. [Cloud] 배포 - NCP : docker 로 배포 도커파일에서 실행하던 런 코드를 스크립트 파일로 바꾼다. 스크립트 파일의 경로를 한번에 scripts 로 정리하고 새롭게 start 파일로 작성한다. 경로에 민갑하기 때문에 최상위 경로에 하나 만들어주고 lion_app (manage.py 가 있는) 에 하나 더 만들어서 구분지어 준다. FROM python:3.11-alpine LABEL likelion.web.backendauthor="Ivan kim " ... COPY ./scripts/start /start RUN sed -i 's/\\r$//g' /start # \\r : 캐리지 리턴 RUN chmod +x /start # RUN python3 manage.py migrate -> start 스크립트로 대체 RUN if [ -e /var/www/.. Dev./Cloud 2023. 8. 13. 이전 1 2 다음 728x90 반응형