☁️ Cloud(10)
-
AWS Lambda 로 배포 자동화 구축 (feat. Docker Hub)
서론최근 해커톤을 나가면서 배포 자동화 프로세스를 고민하게 됐다. 필자는 백엔드 개발자이기 때문에 프론트엔드 개발자가 빠르게 서버와 통신할 수 있도록 먼저 EC2 인스턴스를 배포했다. 기존 배포 프로세스는 아래와 같다.1. 로컬에서 스프링부트 도커 이미지를 빌드하여 도커 허브로 push2. EC2 인스턴스에 SSH 접속하여 도커 허브의 이미지 pull3. pull 받은 이미지를 빌드하여 EC2 내부에서 서버 실행- EC2 내부에 shell script 를 작성하여 image pull 과 container run 은 한번에 진행할 수 있다. 위 방법은 3가지 스텝으로 구분 돼 비교적 간단해보이지만, 코드에 변경이 있을 때마다 EC2 내부에서 새로운 도커 이미지를 pull 받는 과정을 반복해야 했다. 매번 ..
2024.05.30 -
[AWS] ECR 이미지 푸시
기존 NCloud 플랫폼에서 운영중인 서버를 AWS 로 이관하게 됐다. 단일 compute server 에서 운영중인 서버를 이번 기회에 AWS ECS 를 통해 배포하려고 한다. 마이그레이션 과정을 기록해본다. 우선 ECR에 Private Repository 는 생성해둔 상태다. Repository 이름은 운영중인 서비스(tidify)의 이름을 따서 지었다. 해당 Repository를 클릭해보자. 텅빈 저장소를 확인할 수 있다. 이제 우리의 도커 이미지를 이 Repository에 저장하기 위해 푸시 명령 보기 버튼을 클릭해보자. 1번 단계에서 우선 도커 클라이언트를 인증해야 한다. 필자는 로컬에 AWS CLI 도 설치 되지 않은 상태라 AWS CLI 부터 다운받았다. AWS CLI 설치 및 Configu..
2024.01.30 -
AWS Cognito
Cognito AWS Congnito 는 웹/앱에 대한 인증, 권한 부여 및 사용자 관리를 제공한다. 유저는 이름과 패스워드를 사용하여 직접 로그인 하거나, SNS 계정으로 로그인(Oauth) 할 수 있다. Cognito 특징 - 손쉬운 사용자 관리 - Managed Service 와 뛰어난 확장성 (Scalability) 사용자 풀 Cognito에서 제공하는 사용자 풀은 말 그대로 사용자의 모임을 의미한다. 애플리케이션을 사용하는 유저를 관리하기 위한 일종의 사용자 데이터베이스 역할로 볼 수 있다. 사용자 풀은 회원가입과 로그인 기능(+Oauth)을 사용할 수 있으며, 인증이 완료된 사용자에게 JWT를 반환한다. 이 JWT는 API GW에서 자격증명에 사용될 수 있으며, 사용자 풀에 있는 모든 사용자는..
2023.08.19 -
알림시스템 구축을 위한 SQS, SNS, MSK 비교
목차 1. 개요 2. SQS 특징 장점 / 단점 Use casse 3. SNS 특징 장점 / 단점 Use casse 4. MSK 특징 장점 / 단점 Use casse 6. 3가지 서비스 비교 7. 결론 개요 회사에서 알람 시스템을 구축하게 됐습니다. 시니어 분이 브리핑한 아키텍처에선 AWS MSK 를 활용하여 이벤트 드리븐 알림 시스템을 구축할 예정입니다. 흔히 알림 시스템에서 사용될 수 있는 AWS Service 를 떠올리면 대표적으로 AWS SNS 가 있었는데 MSK 를 사용할 것이란 점에서 두 서비스의 특징과 차이를 이해할 필요가 있다고 느꼈습니다. 더불어 SQS 도 살펴보면서, 각 서비스가 가지는 특징을 비교하여 회사에서 구축할 알림 시스템이 어떤 형태일지 조사했습니다. SQS : Simple Q..
2023.07.02 -
[docker 에러] When using COPY with more than one source file, the destination must be a directory and end with a /
에러 메시지 When using COPY with more than one source file, the destination must be a directory and end with a / 해결 Springboot 를 Docker image 로 빌드할 때 발생한 에러다. -> build/libs 경로에 빌드된 파일이 생성된다. Dockerfile 의 ARG 인자에 *.jar 이라고 명시했는데, 이 때문에 libs 폴더의 2개의 jar 파일 중 어떤 것을 COPY 해야하는지 명확하지 않아 COPY 가 중단 된 것이다. 그렇기 때문에 두 파일 중 하나를 삭제하면 된다. 아래의 snapshot-plain 파일을 없애주고 재 빌드 하였다.
2022.07.18 -
Travis CI 와 Docker 를 이용해 자동 배포하기 (feat.AWS EB)
Travis CI 의 가입과정과 github 연동 과정은 생략. Travis CI 의 흐름 이건 Travis 에만 한정된 내용은 아니고, github action, Jenkins, 등 다양한 CI tool 에 공통되는 내용이라 생각한다. .travis.yml 파일 작성하기 Travis CI 를 이용해 테스트 코드를 실행하고 애플리케이션을 배포까지 하기 위해선 travis.yml 파일을 작성해주어야 한다. .travis.yml sudo: required language: generic services: - docker before_install: - echo "start Creating an image with dockerfile" - docker build -t tbnsok/docker-react-app..
2022.07.12 -
Docker 개발/운영 환경 분리
목차 1. 도커를 이용하여 리액트 실행 (dev) 2. Docker compose 로 간단히 앱 실행하기 3. 운영 환경을 위한 Nginx 1. 도커를 이용하여 리액트 실행 (dev) 도커 이미지 생성을 위한 Dockerfile 작성도 개발 / 운영 환경에 따라 별도로 작성하는 것이 좋다. 개발 단계의 Dockerfile 은 Dockerfile.dev 라는 파일로 작성해보자. 리액트를 설치한 상태에서, Dockerfile.dev 와 Dockerfile 을 별도로 생성하자. (리액트 설치 과정은 생략) Dockerfile.dev FROM node:alpine WORKDIR /usr/src/app COPY package.json ./ RUN npm install COPY ./ ./ CMD ["npm", "r..
2022.07.12 -
Docker 간단한 node js 어플리케이션 실행하기
이번 포스트의 목표는 간단한 nodejs 어플리케이션을 docker 에서 실행해보는 것이다. 컨테이너 내부에서 어플리케이션이 실행되기 위한 도커의 원리를 위주로 알아보자. 우선 NodeJs 앱을 도커 환경에서 실행하려면, 이미지를 생성하고, 그 이미지를 이용해 컨테이너를 실행 후 컨테이너 내부에서 nodeJs 어플리케이션을 실행해야 한다. 즉 이미지를 생성하기 위해선 Dockerfile 을 먼저 작성해야만 한다. 디렉토리 구조 package.json { "name": "nodejs-docker-app", "version": "1.0.0", "description": "", "main": "server.js", "scripts": { "start":"node server.js", "test": "echo ..
2022.07.10 -
Docker 이미지 직접 만들어보기
주로 도커 허브에 저장된 도커 이미지를 가져와 사용하는데 개발자가 직접 도커 이미지를 만들 수도 있고, 생성한 이미지를 도커 허브에 올려 공유할 수도 있다. 우선 도커 이미지가 무엇인지 다시 짚어보자. 도커 이미지 : 컨테이너를 만들기 위해 필요한 설정이나 종속성들을 갖고 있는 소프트웨어 패키지. 그럼 첫번째 단계인 Docker File 을 작성해보자. 1 단계. Docker File 작성 도커 이미지를 만들기 위한 설정 파일로, 컨테이너가 어떻게 행동해야 하는지 설정을 정의한다. 도커 파일 만드는 순서 베이스 이미지를 명시 (파일 스냅샷에 해당) 추가적으로 필요한 파일을 다운 받기 위한 몇 가지 명령어를 명시 컨테이너 시작 시 실행될 명령어를 명시 (docker run 시에 실행될 명령어에 해당) 베이..
2022.07.09