전체 글

끄적끄적
DevOps

[DevOps] 백엔드 Prod 서버 ASG 기반 롤링 배포 자동화 - Modie

이번 글에서는 백엔드 프로덕션 환경을 기록합니다.데브서버의 단순히 빠른 개발 적용 서버와 다르게 비용, 보안, 확장성까지 모두 고려해서 설계한 풀스택 인프라 구축기입니다.(ECR, EC2, RDS, ALB, ASG, CloudFront, GitHub Actions까지 다 활용했다)구성 개요핵심 컨셉프라이빗 서브넷 기반 EC2 (Auto Scaling Group)ALB로 외부 트래픽 관리RDS는 프라이빗으로 운영NAT Gateway를 통해 외부 통신 허용GitHub Actions로 CI/CD 자동화아키텍처를 이렇게 선택한 이유(초기 시도) 퍼블릭 서브넷 + 보안 그룹처음에는 비용 아끼려고 EC2와 RDS를 퍼블릭 서브넷에 넣고, 보안 그룹으로 외부 접근만 막는 전략을 썼다.나쁘진 않았는데 문제는…퍼블릭 I..

DevOps

[DevOps] 백엔드 DEV서버 단일 EC2 기반 Blue/Green 배포 자동화 - Modie

이 글에서는 백엔드 개발 환경을 위한 AWS 인프라 설정과 Blue/Green 배포 전략을 다룰 계획입니다. 이 환경은 운영 환경과 달리 단일 EC2 인스턴스에서 빠른 테스트와 배포 자동화에 중점을 두고 구성했습니다.구조 설계 개요EC2 단일 인스턴스 (t3.medium)퍼블릭 서브넷 배치Nginx 기반 리버스 프록시와 포트 스왑 방식의 Blue/Green 배포ECR 및 GitHub Actions 활용 CI/CD 구성DEV 서비는 트래픽이 적고 빠른 개발 적용과 테스트가 중요하므로 복잡한 오토스케일링 구조 없이, 효율적인 배포 자동화에 중점을 두였습니다.배포 전략: Nginx + Docker 포트 스왑Nginx의 upstream 기능과 Docker 커테이너를 이용해 8080/8081 포트를 교차 활용하는..

DevOps

[DevOps] 프로젝트 Dev/Prod 서버 아키텍처 설계 경험 정리

INTRO이 포스팅은 카카오테크 부트캠프 클라우드 네이티브 제주 2기 과정 마지막 팀 프로젝트에서 DevOps를 담당하며 진행했던 업무와 트러블슈팅을 기록한 내용입니다.저희가 개발한 Modie는"일회성 모임을 쉽고 빠르게 모집하고, 일정 조율부터 정산까지 한 번에 해결할 수 있는 서비스"입니다.Modie 서비스의 1차 출시가 완료된 후, 본격적인 2차 기능 개발에 돌입하기 전에 그동안의 과정을 블로그에 정리해보고자 합니다.서비스 링크: https://modie.site MODiE모임을 더 쉽고 편하게!modie.site 프로젝트 구조프로젝트는 React와 Spring Boot를 기반으로 개발하였고,저는 이 개발된 결과물이 안전하게 운영될 수 있도록 배포 인프라를 구축하는 역할을 맡았습니다.이전까지는EC2..

코테준비/백준

[백준] 9375번: 패션왕 신해빈 - Python

링크: https://www.acmicpc.net/problem/9375  아이디어규칙을 찾아 식으로 표현해보자하나라도 입고있으면 되고 같은 종류의 옷은 2개이상 못입는다.옷 종류별로 개수를 구한 후 + 1 하고 서로 곱하면 조합할 수 있는 모든 경우의 수가 된다.모자가 3개있으면 각 모자를 모두 쓰는 경우 + 안쓰는 경우 이렇게 존재입력받는 옷을 종류를 기준으로 갯수를 저장한다.갯수는 딕셔너리 형태로 {hat: 3} 과같이 저장한다.이후 위에서 구한 식을 통해 조합 할 수 있는 전체 경우의 수를 구한다.알몸인 경우 1을 빼면 알몸이 아닌 모든 경우의 수를 구할 수 있다. 구현test_case = int(input())for i in range(test_case): n = int(input()) ..

박치기 공룡

OAuth 2.0 카카오 로그인 구현하기 (Express)

1. 앱키 발급 및 받을 사용자 정보 설정https://developers.kakao.com/ Kakao Developers카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.developers.kakao.comKakao Developers 가입 후 어플리케이션 생성 하여 앱키를 발급받는다. 제품 설정 - 카카오 로그인 항목의 활성화 설정, OpenID Connect 활성화 설정을 ON으로 바꿔준다.  그 아래 Redirect URI에 본인 백엔드 서버의 파둘 엔드포인트 하나를 추가한다.보통 callback 키워드로 엔드포인트를 생성하더라 근데 난 그냥 kakako로 했다. 제품설정 - 카카오 로그인 - 동의항목 에서..

박치기 공룡

k8s에서 데이터 영속성을 보장하는 방법

볼륨(Volume)이 뭐냐영어로는 부피나 소리의 크기를 의미하지만 Kubernetes와 Docker에서의 볼륨은 데이터를 저장하고 관리하는 방식과 관련된 중요한 개념이다. → 영속성을 보장하기위한 개념각각의 볼륨이 어떤 의미를 가지는지 알아보자.Docker Volume도커에서 볼륨은 컨테이너 내부와 호스트 사이에서 데이터를 공유하기 위한 방법으로 사용된다.Docker 컨테이너는 기본적으로 격리된 가상화 환경에서 동작하기 때문에, 컨테이너 내부에서 생성된 데이터는 기본적으로 컨테이너의 라이프사이클에 종속된다.문제점:컨테이너가 삭제되면 내부 데이터도 모두 삭제되므로 영속적으로 데이터를 저장하거나 공유하려면 별도의 방법이 필요함.해결책:Docker 볼륨을 사용하면, 컨테이너 삭제와 관계없이 데이터를 유지하거나..

박치기 공룡

SSL/TLS/HTTPS

간단 정리SSL은 과거에 사용된 프로토콜로, TLS가 이를 대체.TLS는 현대 인터넷 보안 통신의 핵심.HTTPS는 TLS를 사용하여 HTTP 트래픽을 암호화하며, 웹사이트 보안을 위한 필수 요소.OSI 7계층 & TCP/IP 4계층OSI 모델이 너무 복잡해서 TCP/IP가 표준이랍니다~네트워크 접근 계층 (Network Access Layer)역할: 데이터를 물리적으로 전송하는 계층.인터넷 계층 (Internet Layer)역할: 데이터의 논리적 전송 경로를 결정.전송 계층 (Transport Layer)역할: 프로세스 간 신뢰할 수 있는 데이터 전송 제공.애플리케이션 계층 (Application Layer)역할: 사용자와 가장 가까운 계층으로 데이터 표현 및 통신 서비스를 제공Encapsulate, ..

코테준비/백준

[백준] 3568번: iSharp - Python

링크: https://www.acmicpc.net/problem/3568 아이디어입력받은 문자열을 " "(공백) 단위로 잘라 리스트로첫 요소는 무조건 맨 앞에 고정으로 사용하기 때문에 따로 저장.2번때 요소부터 for 문을 돌리며 판별 진행요소의 뒤에서 부터 확인하는데 맨 뒤는 , 아니면 ; 이기 때문에 그 다음 부터 확인 *이거나 &이면 따로 저장한 첫번째 요소의 뒤에 붙인다.]이 나오면 []를 붙이고 for문을 한번 건너 뛰어 다음으로 간다.알파벳 소문자가 나올 때까지 반복한다.알파벳 소문자가 나오면 그 지점을 가지고 변수명을 추출한다. -> 요소[:그지점 +1] = 변수명! 구현li = input().split()fix = li.pop(0)for i in li: result = fix f..

코테준비/백준

[백준] 1929번: 소수 구하기 - Python

링크: https://www.acmicpc.net/problem/1929 생각M, N을 입력받음M부터 N까지 반복문을 돌며 소수 판별소수는 무엇인가 -> 약수를 1과 자기 자신만을 가지는 수하나의 수를 num이라 할 때 2부터 num -1 까지의 수를 눴을 때 나머지가 0이 되는 경우가 있으면 소수가 아님2중 for문을 써야겠다구현 1 - 시간초과M, N = map(int, input().split(" "))result = []for num in range(M, N+1): if num > 2: for i in range(2, num): if num % i == 0: break if i == num-1: ..