Dev
-
AWS-Cloudwatch 로 로그 저장Dev 2022. 3. 27. 11:13
1. Cloudwatch 로그 그룹 생성 후 해당 그룹에서 로그 스트림 생성 2. IAM 역할(사용자 아님) 추가 - couldwatchfullaccess (AWS서비스 - EC2에 추가) 3. ec2 생성시 위에서 추가한 IAM 역할 선택/ 포트 개방(아래 설정은 ec2 포트 5001, 컨테이너 내부 앱의 포트는 5000) 4. ec2 접속해서 도커 설치 후 웹앱 세팅 4. ec2에 웹앱 도커 컨테이너 설정을 위한 docker-compose // ./docker-compose.yml version: "3.2" services: server: build: server/ volumes: - ./server:/app environment: - PYTHONUNBUFFERED=1 ports: - "5001:50..
-
테스트 코드 필요성과 종류Dev 2022. 3. 5. 12:36
* TDD와 테스트 코드 작성은 다르다. TDD는 방법론일뿐! 테스트 코드의 필요성 작성한 코드를 하나하나 작동시켜 검증하지 않고 테스트 코드를 실행하여 동작을 검증함 테스트 코드가 없다면 하나하나 다 검증해야되고, 시간단축 및 테스트 코드를 활용하여 실수를 최소화 할 수 있음 -> 단점: 요구사항이 변경되면 이에 따라 수정이 필요함 기능 추가에 유연하게 대처가능함 -> 기능 추가로 다른 코드에 영향을 끼치는 지 파악해야 하는데 테스트 코드를 통해 확인할 수 있음 잘 짠 테스트 코드는 코드의 문서 역할도 가능함 정상 작동/흐름, 예상되는 예외상황 등 TDD: 테스트 코드 작성 -> 기능 개발 -> 리팩토링 과정 유지 보수의 편의성, 가독성, 안정성, 코드 전체 품질 향상 가능 외부환경을 분리해 두고 핵심..
-
CI/CD 지속적 통합/지속적 전달(제공),배포 + release<->deployDev 2022. 3. 5. 10:23
CI CD 애플리케이션 개발 단계를 자동화하여 애플리케이션을 보다 짧은 주기로 고객에게 제공하는 방법 지속적인 통합, 지속적인 서비스 제공, 지속적인 배포 새로운 코드 통합으로 인해 개발 및 운영팀에 발생하는 문제(일명 "인테그레이션 헬(integration hell)")을 해결하기 위한 솔루션 애플리케이션의 통합 및 테스트 단계에서부터 제공 및 배포에 이르는 애플리케이션의 라이프사이클 전체에 걸쳐 지속적인 자동화와 지속적인 모니터링을 제공 이러한 구축 사례를 일반적으로 "CI/CD 파이프라인"이라 부르며 개발 및 운영팀의 애자일 방식 협력을 통해 지원 CI - Continuous Integration 개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration)을 의미 CI를..
-
NGINX - PROXY - 서브도메인 설정하기Dev 2022. 2. 16. 22:09
EC2의 잦은 이슈들로 IP가 변경(탄력적 IP 설정으로 지금은 고정됨)되거나, 포트를 정리하면서 포트가 변경되는 일들이 많았다. 이때마다 프론트에서 API 주소를 변경하는 일이 불필요하게 생겨 이참에 서브도메인을 적용하기로 함. * https://hub.docker.com/r/jwilder/nginx-proxy 기존 현재 진행 했던 모든 프로젝트들에는 Nginx를 사용하고 있었다 클라이언트(ip:1234주소로 접근) -> Nginx(외부 포트(1234) 개방 O) -> Guicorn -> Flask 클라이언트(ip:1235주소로 접근) -> Nginx(외부 포트(1235) 개방 O) -> Express 이방식인데 앞에 서브도메인을 설정해주고 해석해서 프록시 해주는 Nginx를 하나 더 추가했다. 변경 ..
-
Docker compose - .env 활용하기Dev 2022. 2. 8. 21:11
* 프로젝트 개발 환경에 따른 변수를 .env에서 선언하고 Docker compose 안에서 참조하거나 각 서비스(API, Web Server 등)에 변수를 전달해서 환경 변수로 활용하자. ./.env FLASK=project_api FLASK_PORT=11234 PROXY=project_proxy PROXY_PORT=11235 REDIS=project_redis REDIS_PORT=6379 REDIS_PASSWORD=password # API 에서 전달될 환경 변수 DB_URL='URL_0101' ./docker-compose.yml version: "3" services: flask: container_name: "${FLASK}" restart: always build: ./flask volumes..
-
Github actions - Github pages / S3 / NodeJS JestDev 2022. 2. 5. 23:37
* 그동안 Gituhb actions을 사용했던 예들을 정리해보았다. 1. 리액트 앱 깃헙 페이지에 배포하기 - Github repo name: github pages on: push: branches: - client/deploy # 현재 프로젝트에는 client와 lambda 디렉토리로 나눠져있음. client/deploy 브랜치에 푸쉬하면 실행되고, gh-pages 브랜치는 자동으로 업데이트된다. jobs: deploy: runs-on: ubuntu-18.04 # 잡을 실행하는 환경 env: working-directory: ./client # client 안에 리액트 앱이 있고, 아래에서 반복해서 쓸 예정이므로 env 선언 steps: - uses: actions/checkout@v2 # 코드 소..
-
Github actions - AWS ECR/Lambda 자동 배포Dev 2022. 2. 3. 17:40
기존 방식 코드를 수정한다. [수동]도커이미지를 빌드시킨 후 태그 설정 후 AWS ECR로 푸쉬한다. [수동] AWS 콘솔에 가서 Lambda function 에서 새로 푸쉬한 이미지로 바꿔준다. aws lambda update-function-code --function-name 람다함수이름 --image-uri 이미지주소를 AWS CLI를 통해 업데이트 가능하므로 AWS 웹페이지 콘솔에서 할 필요는 없음 Github actions을 활용한 자동 배포 코드를 수정한 후 lambda/deploy 브랜치에 푸쉬한다. [자동]Github actions 을 통해 이미지를 빌드한다. [자동]깃 커밋 id(sha1으로 만들어진 해시값)를 태그로 설정하고 AWS ECR로 푸쉬한다. [자동]ECR에 푸쉬할때의 주소로..
-
Git commnad + commit messagesDev 2021. 7. 6. 18:35
깃 문서 Commit message convention feat: The new feature being added to a particular application fix: A bug fix (this correlates with PATCH in SemVer) style: Feature and updates related to styling refactor: Refactoring a specific section of the codebase test: Everything related to testing docs: Everything related to documentation chore: Regular code maintenance 커밋 메시지 push 전 가장 최근 커밋 메시지 수정하기 git co..