본문 바로가기

분류 전체보기18

[GCP] Cloud Run과 Cloud Build를 사용하여 Spring Boot 배포하기 시스템 아키텍처 Local 설정 Spring Boot의 application-prod.yml 설정 Github에 DB 정보를 올릴 수 없고, 없으면 서비스를 실행할 수 없기에 보안 문제가 발생하지 않고 DB정보를 컨테이너에 담을 수 있을지 고민했다. 결과적으로 환경변수를 사용하기로 했다. 위와 같이 설정하면 application-prod.yml에 시스템 환경변수 값을 불러올 수 있다. Dockerfile 설정 Cloud Run의 경우 컨테이너 기반으로 서비스를 실행하기 때문에 도커를 활용하여 빌드하였다. FROM adoptopenjdk/openjdk11 COPY gradlew . COPY gradle gradle COPY build.gradle . COPY settings.gradle . COPY src.. 2022. 12. 5.
[Docker swarm] 활용해보기 with AWS 시작하며 AWS Instance information type: t2.micro size: 3 node ( master, worker1, worker2 ) os: ubuntu 20.04 AWS Instance Network information master instance public ip: 13.209.5.232 private ip: 172.31.32.34 worker1 instance public ip: 15.165.159.52 private ip: 172.31.36.212 worker2 instance public ip:13.209.67.244 private ip: 172.31.47.47 AWS security group 기본적으로 보안 설정에 맞게 세팅해야하지만 테스트를 위해 모든 보안포트를 오픈.. 2022. 11. 24.
[Kafka] AWS EC2에 설치하기 시작하며 본 내용은 2022년 11월 16일 Boaz 세션에서 발표된 내용입니다 글 목표 AWS EC2에 Kafka를 직접 설치하고 토픽, 프로듀서, 컨슈머를 설치하기 프레젠테이션 from datetime import datetime import threading, time from kafka import KafkaAdminClient, KafkaConsumer, KafkaProducer from kafka.admin import NewTopic #카프카 프로듀서 운영 객체 class Producer(): bootstrap_servers='43.201.95.87:9092' def sendMessage(self,topic_name:str, message:str): '''Set Message to Produ.. 2022. 11. 18.
[Linux] List of Command Line Commands 목적 자주 사용하는 명령어는 습관처럼 사용하지만 모든 명령어를 외우고 있기 않기 때문에 기록용으로 보관 Nohup 명령어 실행 ( Background ) nohup go run command & # & = background #Ex)command = server.go 프로세스 확인 ( All ) ps -ef 프로세스 확인 ( Keyword ) ps -ef | grep "Key word" #Ex)keyword = go run 프로세스 제거 ( Pid ) kill -9 PID #Ex)PID = 16273 Git git clone ( Token ) git clone https://githubToken@github.com/username/repo.git 2022. 10. 16.
[Continuous Deploy] Github actions .env 파일 관리하기 with Github private repository 목적 Continuous Deploy 과정에서 Dotenv 파일을 꽤 번거로운(?) 녀석이다. 보안상 Github repository에 push하긴 찝찝하다. 그래서 이 파일을 Continuous Deploy 과정에서 리눅스의 Echo & Cat 과 Github Actions Secret Key를 사용해서 만들어줬는데, 가독성과 관리면에서 "이게 맞나?" 싶다. 이를 해결하기 위한 첫번째 방법을 찾아서 기록해본다. 사용 된 아키텍처 Github Public & Private Repository는 빌드될 파일이 있는 레포지토리를 뜻하며 Github Private Repository는 .env 파일이 따로 보관되어 있는 Repository를 뜻한다. 위 두가지를 한개의 계정으로 진행할 수 있지만 본 글에서는.. 2022. 10. 14.
[Continuous Deploy] Github Action with ECR 배경 Github Repository에서 Docker를 빌드하고 AWS ECR에 배포 아키텍처 Github Actions WorkFlow 코드 # This is a basic workflow to help you get started with Actions name: CD # Controls when the workflow will run on: # Triggers the workflow on push or pull request events but only for the main branch push: branches: [ main ] # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs:.. 2022. 9. 18.
[Continuous Deploy] AWS CodeDeploy & EC2 with Github Actions 배경 사용 기술 Github Actions AWS CodeDeploy AWS EC2 AWS IAM Spring Boot 구조 프로세스 웹프레임워크 SpringBoot로 개발한 문서를 Github에 Push하면 Github actions 트리거 발동 ".github/workflows/CI.yml" workflow 파일 기반으로 Github actions Job진행 JDK 버전에 맞게 JAVA 버전 설정 ( 본 프로젝트 : java-version:17 ) Gradlew 파일 권한 설정 Gradlew 파일로 Spring Boot Build AWS 접근을 위한 IAM 설정 ( aws-access-key , aws-secret-access-key ) 빌드한 jar 파일을 AWS S3에 업로드 CodeDeploy를.. 2022. 9. 17.
AWS ECS Health-Check 증상 지속적인 HTTP 503 Service Unavailable 에러 발생. 규칙적인 발생이 아닌 불규칙 적인 발생. 별다른 Request가 없어도 주기적으로 503 발생. 로컬에서 작업 당시 전혀 문제없음. 시스템 아키텍처 삽질 과정 서버 코드 점검 먼저 Validation을 실패한 부분이 없는지 여러 가지 Test Input을 입력했다. 그럼에도 Local에서 지속적으로 작동이 잘 되는 것을 확인하였다. 같은 오류가 반복되자 Exception filters까지 사용하여 서버가 갑자기 중단되는 상황을 최소한으로 줄였다. 그럼에도 불구하고 지속적인 503 에러코드가 발생하였고, 끝없는 삽질 끝에 AWS를 확인하기 시작했다. AWS 점검 ECS 클러스터에서 Task의 상태를 확인했다. 상태는 ACTIVE.. 2022. 9. 3.