728x90 반응형 분류 전체보기115 Terraform: IaC IaC 의 개념 및 필요성 Infrastructure as Code - 인프라를 코드로 관리한다. 일정 수준의 규모를 넘으면 아래와 같은 이유들로 IaC 도입의 필요성이 충족된다. 자동화 일관성 버전관리 테스트 비용절감 협업 IaC Tools Terrraform 의 장점 테라폼, Terraform 이 가지고 있는 장점은 다음과 같다. 모듈화 상태관리 강력한 생태계 자체 언어 Terraform 의 구성요소 테라폼은 HasiCorp 사에서 Go 를 사용해서 만든 오픈소스이며, 구성요소는 아래와 같다. provider 테라폼으로 생성할 인프라의 종류를 의미 resource 테라폼으로 실제로 생성할 인프라 자원을 의미 state 테라폼을 통해 생성한 자원의 상태를 의미 output 테라폼으로 만든 자원을 변수 .. Dev./Terraform 2023. 9. 1. [Tip] DB server: Postgres:13 자동설정 클라우드에서 인스턴스로 서버르 리눅스 서버를 하나 열고 그 위에 Docker 를 이용하여 PostgreSQL 컨테이너를 하나 돌리면서 요금이 많이 나오는 스토리지 서버를 임시로 대신하게 한다. 인스턴스 생성 이후 deploy 스크립트 실행 # deploydb.sh #!/bin/bash sudo apt-get update && upgrade # lion 유저를 sudo 그룹에 추가 sudo usermod -aG sudo lion echo "lion 사용자가 sudo 그룹에 추가되었습니다." sudo apt-get install -y ca-certificates curl gnupg lsb-release curl -fsSL | sudo gpg --dearmor -o /usr/share/keyrings/dock.. Dev./Basic knowledge 2023. 9. 1. [Tip] 인스턴스 권한 자동설정 (feat. docker) 클라우드 플랫폼을 통해서 인스턴스를 생성하면 인스턴스에 root 계정과, init script 로 만든 유저가 하나 생성된다. # init script sample #!/bin/bash # set variables NEW_USER_ID="lion" PASSWORD="abcd" # user creations echo "Creating new user" useradd -s /bin/bash -d /home/$NEW_USER_ID -m $NEW_USER_ID # password change echo "Set password" echo "$NEW_USER_ID:$PASSWORD" | chpasswd # user auth echo "Update authorization" echo "$NEW_USER_ID ALL=.. Dev./Basic knowledge 2023. 8. 31. [Cloud] Django: Code develop for TEST2 Github Actions 에서 work flow 를 분리했다. 이제 django 쪽에서 test 를 위한 일부 코드를 작성해 보자. TEST 를 위한 기능 디벨롭, 그리고 테스트 코드 실행 현재 제공하고 있는 기능은 Topic 을 생성하고 그 아래에 Post 들이 One to Many 의 형태로 묶여있는 구조이다. 또 부여된 그룹에 따라 권한이 달라져 접근하거나 작성하는데 제한을 두고 있다. 이 부분들을 테스트 하기 위해서는 유저를 생성하면서 권한을 부여하고, Topic 과 Post 를 생성하는 과정에서 권한을 체크하는 로직이 필요할 것이다. 이를 테스트 하기 위해서 로직을 구현해보자 장고의 로직 자체는 클라이언트가 urls 를 통해 요청을 보내면 views 에서 모델과 templates 을 엮어주는 .. Dev./Django & DRF 2023. 8. 31. [Cloud] Github Actions: Lint CI 단계에서 보면 개발자 여러명이서 작업을 하다보면 포맷팅이 각자 다르기 떄문에 몇가지 방식으로 통일해서 사용하자고 약속해 놓은 게 있다. 개발자들이 직접 기억하고 약속을 지킬 수 없으니 프로그램으로 돌려서 일치 시키게 해주는 것. 파이썬 린트 중 하나인 블랙을 설치해서 적용시켜보자 pip install black # 경로에 있는 모든 파일들을 점검하겠다. black . # 해당 경로아래에 있는 파일들만 점검하겠다. black --check lion_app 위 내용을 CI.yml 파일에 적용시켜보자 하고자 하는 작업 job 으로 분리하여 새로운 컨테이너를 만들고 checkout 하여 코드에 접근한뒤 python 을 셋팅하고 black 을 설치하여 확인하고자 하는 경로의 파일들을 점검 # CI.yml n.. Dev./Github Actions 2023. 8. 30. [Cloud] Github Actions: Code develop for TEST TEST 를 위한 기능 디벨롭 settings 파일 구분지어서 오버라이딩하기 각각의 개발환경에 맞는 settings 를 사용하기위해 settings 폴더구조로 각각의 settings.py 를 오버라이딩하여사용하게 한다. # base.py "기존에 있는 settings.py" # local.py # prod.py # staging.py 우선 로컬환경 에서 분리된 내용을 적용시키기 위해서는 wsgi 파일에서 경로를 수정해주어야 한다. # start #!/bin/sh # 파이썬 알파인을 쓰기 떄문에 bash 조차 없다.. 그래서 sh 로 python3 manage.py collectstatic --no-input python3 manage.py migrate gunicorn lion_app.wsgi:appli.. Dev./Github Actions 2023. 8. 29. [Cloud] Github Actions: Concept of CI CI: Continuous Intergration 야러 개발자들이 동시에 작업하고 있는 소스 코드의 변경사항과 테스트를 통합하여 한번에 프로세싱하게 한다. 이는 일련의 과정들을 자동으로 반드시 진행하게 하여 반복되는 문제점에 대한 개선사항을 테스트하게 된다. Muti stage 설계 local: 각 개발자가 작업하는 소스코드가 있는 공간 dev: local 단계의 소스코드를 모아서 관리하는 공간 test: 소스코드의 결함을 찾아내는 공간 staging: test 와 비슷 한개념으로 production 으로 넘어가기 전 단계인 공간 production: 실제 서비스가 운영되는 공간으로 유저가 사용하게되는 공간 django 에서는 settings.py 와 .env 파일등을 각 stage 별로 관리하게 된다... Dev./Github Actions 2023. 8. 28. [Cloud] CD: Github Actions - TEST & act Github actions act 자동 배포 과정도 테스트를 진행하면서 개발을 하게 되는데, 테스트를 해보기위해 계속해서 push 를 하거나 pull request 를 만드는 것은 비효율적이다. 이런 부분들을 자동화 하기위해서 act 를 사용한다. act 는 Github actions 워크플로우를 로컬의 개발환경에서 실행할 수 있게 해주는 오픈소스 도구이다. act 는 도커를 사용하기 때문에 도커가 깔려 있어야 하며 아래의 장점들을 가지고 있다. 디버깅 : 푸시하면서 디버깅 할 필요 없음 빠른 반복 : 원격 실행을 기다릴 필요가 없음 https://github.com/nektos/act GitHub - nektos/act: Run your GitHub Actions locally 🚀 Run your Gi.. Dev./Github Actions 2023. 8. 24. [Cloud] CD: Github Actions - workflow_run & Dependency workflow_run & Dependency workflow 의 dependency 설정 (조건부 실행) workflow_dispatch 로 직접 실행시키게 되면, call-workflow step 에 따라 정해진 workflow 가 실행된다. # lesson4_caller.yml name: call workflow on: workflow_dispatch: jobs: get-workflow-name: name: echo workflow name runs-on: ubuntu-latest steps: - run: echo "This workflow is ${{ github.workflow }}" call-workflow: uses: ./.github/workflows/lesson4.yml strategy:.. Dev./Github Actions 2023. 8. 23. [Cloud] CD: Github Actions - Mutiple workflow Multiple workflow workflow 를 여러개를 만들다보면 push 할 때마다 다른 yml 파일들 때문에 계속해서 배포되는 작업이 이루어지는데, 이를 각각의 workflow 별로 핸들링하거나 연관있는 것들 끼리 핸들링 할 수 있게 해보자. lesson4.yml 파일 작성 # lesson4.yml name: resuable workflow on: workflow_call: jobs: greeting: name: greeting runs-on: ubuntu-latest steps: - name: greeting run: echo "Hello, Stranger"ßßå 이후 push 하면 기존에 있던 yml 파일이 있기 때문에 자동으로 배포가 됨 그래서 필요한 내용이 업데이트 될 때마다 배포가 되게.. Dev./Github Actions 2023. 8. 23. [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. 이전 1 2 3 4 5 6 7 8 ··· 10 다음 728x90 반응형