🏭 Infra
[Slack] 슬랙 봇 설정 및 슬랙 OAuth Token 발급받기
스프링에서 Slack API 를 사용하기 위해서는 슬랙 웹훅 토큰이 필요하다. 따라서 슬랙 토큰을 발급받고 슬랙 봇을 등록하는 과정을 알아보자. 1. 워크스페이스 및 슬랙 APP 생성 https://api.slack.com/apps Slack API: Applications | Slack Your Apps Don't see an app you're looking for? Sign in to another workspace. api.slack.com 해당 작업 이전에 Slack 워크스페이스를 생성해두어야 합니다. 이후 슬랙 APP 을 생성하기 위해 Slack API 사이트에 접속합니다. 오른쪽 상단 Create New App App 이름 지어주고 이 앱을 등록할 워크스페이스를 지정합니다. 이후 Create..
[AWS] Elastic Beanstalk + Github Actions 사용해서 Spring boot CI/CD 파이프라인 구축하기
동아리 스터디의 일환으로 시작된 Beanstalk 으로 CI/CD 파이프라인 구축하기 처음 써보는거라 확실히 어렵지만 EC2 생성하고 RDS 생성하고 https 설정해주고... 하던 시절과 비교하면 확실히 배포 속도가 엄청 빠르긴 하다 물론 그 과정에서 삽질을 엄청나게 하긴 했지만... 하지만 결론적으로는 빌드 시간이 많이 오래 걸리기도 하고 배포서버와 개발서버 그리고 혹시 모르지만 웹까지 하나의 EC2 환경에서 배포하고 싶어서 JAR 환경에서 Docker 환경으로 이동할 것이다 JAR 이나 WAR 로 배포하는 것은 물론 좋지만 여러 EC2 인스턴스를 사용하기엔 돈이 모자란 ^^.... 가난한 대학생에겐 하나의 EC2에서 멀티 컨테이너로 돌리는게 더 나을 것이라는 판단이다 그래도 공부한게 아까우니까 까먹..
[AWS/Docker/Nginx] 단일 서버에서 도메인별 서비스 제공하기
분명 세팅 잘 했는데도 서브도메인이 모두 같은 포트로 넘어가서 하루 종일 끙끙대다가 도움을 받아서 겨우 해결한 문제 사실 설정값 문제는 없었지만 docker-compose 로 이미지 빌드가 제대로 안되어서 이전 설정값으로 계속 사용중이었음 ^^;;; 아무튼 고쳤으니까 블로그 정리하는 김에 적어봅니다 📌 작업 환경 AWS EC2 + ELB Docker Nginx Spring boot React 📁 프로젝트 구조 🔨 도커 컴포즈 세팅 📝 docker-compose.yml version: "3.7" services: # redis 설정 redis: image: "redis:alpine" network_mode: "host" # 서버 설정 backend: image: gengminy/hifi-dev:dev co..
[AWS] Elastic Load Balancer(ELB)로 https 설정하기
도메인 구매해서 백엔드 서버 연결 완료한 이후 프론트까지 같이 연결할 이유가 생겼다 서브도메인 설정해서 내부에서 서비스별 포트포워딩 해주려고 했는데 자꾸 잘 안되길래 https 설정이 안되어서 그런 거 같아 마침 설정하는 김에 블로그 정리까지 시작 📌 HTTPS HTTP Secure 의 약자로 HTTP 프로토콜을 암호화한 버전이다. SSL이나 TLS를 이용해서 클라이언트와 서버 간의 모든 커뮤니케이션을 암호화하여 민감한 정보를 서로 안전하게 주고 받도록 해준다 그래서 가끔 HTTPS 지원 안하고 HTTP만 사용하는 웹사이트들은 보안오류 뜨면서 접근을 차단하는 경우가 꽤 있다 HTTPS 설정이 되어있다면 이렇게 URL 옆에 자물쇠가 뜬다 (크롬 기준) ✨ SSL 인증서 발급 보통 HTTPS를 사용하기 위해..
[Github] Github Actions로 CI/CD 개발 주기 자동화하기 - 3 (AWS EC2 서버에서 배포)
2편에 이어서 3편도 계속 EC2 와 RDS 프리티어를 구매한 후 세팅까지 완료 자세한 세팅은 나중에 시간 나면 올려보도록 하겠읍니다... 💻 작업 환경 Windows + MacOS AWS EC2 + RDS Spring Boot (Gradle) PostgreSQL Redis Docker 🚀 실제 운영 서버에 배포하기 사실 실 배포는 아니지만 어쨌든 개발 서버와 운영 서버를 통합했기 때문에 운영 서버라고 하는게 맞겠지 Deploy 전용 레포지토리를 만들어주고 프록시를 위한 nginx와 쉘 스크립트를 셋팅해준다 📝 deploy.sh #!/bin/bash # Installing docker engine if not exists if ! type docker > /dev/null then echo "docker..
[Github] Github Actions로 CI/CD 개발 주기 자동화하기 - 2 (스프링 Gradle 빌드 + 도커 푸시)
서버를 어떻게 효율적으로 띄울까 하다가 여러 방식을 찾아보았는데 개발 서버와 운영 서버를 방식이 가장 일반적이었다 하지만 돈없는 가난한 대학생은 여러 서버를 띄울 형편이 안되니... 로컬에서 테스트 코드까지 빡세게 돌린 것들만 하나의 운영 서버에 띄우기로 결심했다 고로 프론트엔드, 백엔드, 배포 레포지토리 3개로 나누었고 아키텍쳐는 다음과 같다 📚 서비스 아키텍쳐 아직 프론트는 건들지 않아서 백엔드 서버와 배포 단계만 진행중이다 backend/main 브랜치에 push가 일어나면 깃헙 액션을 통해 스프링 도커 이미지를 빌드해 도커 허브에 push 한다 이후 deploy/main 브랜치에 push가 일어나거나, 직접 action 을 실행시키면 배포 쉘 스크립트 및 docker-compose를 통해 배포가 ..
[Docker] docker compose로 다중 컨테이너 연결 시 Connection to localhost:5432 refused 에러
도커 컴포즈로 Spring Boot + PostgreSQL 다중 컨테이너를 띄워서 연결하던 중 발견한 오류 일단 결론부터 말하자면 도커에 대한 이해가 얕아서 생긴 오류 알고보면 정말 별 것도 아닌 오류이지만 도커 초심자는 반드시 거쳐가는 오류가 아닐까 싶다..,, 장장 4시간의 삽질 🔨 작업 환경 Spring Boot (Gradle) Redis PostgreSQL PgAdmin 💥 원인 찾기 org.postgresql.uti.PSQLException: Conntection to localhost:5432 refused. Spring에서 PostgreSQL 연결 시 호스트나 포트를 잘못 찾아서 연결할 수 없는 오류이다 말 그대로 db 주소를 잘못 입력했다는 거다 📌 변경 전 파일 📝 docker-compo..
[Github] Github Actions로 CI/CD 개발 주기 자동화하기 - 1 (깃헙 액션 사용법)
🔍 CI / CD ? 📌 CI (Continuous Integration) 지속적인 통합 [코드작성 -> 테스트 -> 빌드 -> 배포 -> 버그수정] 이라는 일련의 사이클을 단축시키고 자동화시키는 방법 📌 CD (Continuous Delivery 또는 Continuous Deployment) 지속적인 배포 어플리케이션에 적용한 변경 사항을 테스트를 거쳐 레포지토리에 업로드 되는 것 Continuous Delivery 는 마지막 단계인 개발환경에서 운영환경으로의 배포를 개발자가 수동으로 해줌 Continuous Deployment 는 이러한 수동 처리 없이 자동으로 운영환경 배포까지 자동으로 해줌 Github Actions 는 이러한 CI/CD를 가능하게 해주는 툴 중 하나이고 Jenkins, Travi..