본문 바로가기

[배포]

(8)
[배포] Nginx 란? Nginx (엔진엑스)란? Nginx는 웹 서버와 리버스 프록시 서버로 매우 유명한 소프트웨어이다. 웹 서버는 우리가 인터넷에서 웹사이트를 볼 때 브라우저와 서버 간의 통로 역할을 하는 프로그램이다. 웹 서버는 웹사이트의 내용을 가져다 주거나, 사용자로부터 요청을 받아서 적절한 작업을 처리한다.예를 들어, 우리가 "example.com"을 브라우저에 입력하면, Nginx는 브라우저의 요청을 받아서 그에 맞는 웹페이지를 보내주는 역할을 하고 있다. Nginx의 주요 역할1️⃣ 웹 서버: 웹사이트 파일을 사용자에게 제공 정적 파일 제공: Nginx는 웹페이지의 이미지, CSS, JavaScript 파일 등을 빠르게 제공하는 데 강점이 있다.예를 들어, 웹사이트에 있는 사진이나 스타일 시트(CSS)는 서버에서..
[배포] ✨ Graceful Shutdown 👨‍🍳 우리가 식당을 운영하고 있다고 생각해보자.손님이 식사를 하고 있고, 주방에서는 요리가 한창이며, 계산대에서는 결제가 이뤄지고 있다.그런데 어느 날, 갑자기 누군가 “이제 문 닫아야 해요!” 하고 전기를 뚝 끊어버렸다.먹다 말고 나가야 하는 손님들 😨완성되지 않은 요리 🍳계산 중이던 손님 카드 결제 실패 💳심지어 저장되지 않은 장부도 날아감 😭이렇게 “갑작스러운 종료”는 많은 문제를 일으킬 수 있다.❗️ Graceful Shutdown은 갑작스러운 종료를 방지하는 방법"우아한 종료”라는 건, 말 그대로 서비스나 프로그램을 ‘예쁘게’, ‘안전하게’ 종료시키는 과정.“곧 종료할게!” 라는 신호를 받으면 👉 서버나 프로그램은 “오! 곧 꺼질 거구나” 하고 준비를 함.새로운 요청을 막음 👉..
[배포] 🚀 무중단 배포를 위한 3가지 아키텍처 📚시작하기 전에🤔 1. 먼저, "무중단 배포"가 뭘까?핵심은 배포 중에도 서비스는 멈추지 않고 계속 동작해야 한다는 것이다!유저 입장에선 "어? 배포했어?" 싶을 정도로 티 안 나야 성공이라고 할 수 있다. 🤔 2. ALB란?ALB = Application Load Balancer트래픽(요청)을 여러 서버로 똑똑하게 분산해주는 친구이다. 쉽게 말해, "인터넷 앞에 있는 문지기" 같은 느낌! 📦 3. 그래서 ALB가 무슨 일을 하는데?유저가 myservice.com에 접속하면👉 ALB가 받아서👉 뒤에 있는 서버 중 하나한테 요청을 전달해준다.서버가 많아도 걱정 없다. ALB가 자동으로 분산해주니까!🧑‍⚕️ 4. Health Check란?말 그대로 서버가 "건강한지" 확인하는 검사!ALB가 "이..
[AWS] EC2에 MySQL 설치 및 접속 EC2 인스턴스 접속ssh -i "your-key.pem" ec2-user@your-ec2-public-ip"your-key.pem": EC2 생성 시 만든 키 파일your-ec2-public-ip: EC2의 퍼블릭 IP 주소어떤 리눅스 배포판인지 확인해보려면 EC2 접속 후 아래 명령어로 먼저 확인cat /etc/os-release✅ Amazon Linux 2인 경우NAME="Amazon Linux"VERSION="2"✅ Ubuntu인 경우NAME="Ubuntu"VERSION="20.04.6 LTS (Focal Fossa)"  현재 작성글은 우분투 기반 EC2에서 RDS(MySQL)로 연결하는 방법을 설명하고 있습니다.만약 Amazon Linux 2 라면 앞서 설명드린 yum 명령어 기반으로 진행하면 ..
[AWS] 🔐 보안 그룹 설정 보안 그룹이란? 보안 그룹은 AWS EC2 인스턴스의 가상 방화벽 역할을 한다.주로 인바운드(Inbound) 및 아웃바운드(Outbound) 규칙을 통해 트래픽을 제어한다. 🌐 인바운드(Inbound)외부 → 내 서버로 들어오는 데이터외부에서 내 서버(인스턴스)로 들어오는 트래픽을 제어예: 특정 IP만 22번 포트(SSH)로 접속할 수 있게 허용내 컴퓨터에서 EC2로 SSH 접속 (22번 포트)🚨 현재 문제 상황IP가 바뀌면, 기존에 허용된 IP(예: 203.0.113.25)로는 더 이상 접속이 불가능해짐→ 인바운드 규칙에 현재 IP를 추가해야 함🌐 아웃바운드(Outbound)내 서버 → 외부로 나가는 데이터내 서버에서 외부로 나가는 트래픽을 제어기본적으로 모든 트래픽을 허용(모든 IP로, 모든 포..
[GitHub Actions] GitHub Actions 명령어 GitHub Actions의 YAML 파일에서 자주 사용되는 기본적인 명령어들명령어설명name:GitHub Actions의 워크플로우 이름 설정on:워크플로우 실행 조건 설정 (ex: push, pull_request, schedule 등)jobs:실행할 작업을 정의runs-on:실행 환경 지정 (ex: ubuntu-latest)steps:실행할 단계 정의uses:GitHub Marketplace의 액션을 사용run:직접 명령어 실행 (ex: ./gradlew build)env:환경 변수 설정with:액션에 전달할 인자 설정secrets:GitHub Secrets에서 보안 정보 가져오기 1. Checkout 코드 가져오기(GitHub 리포지토리의 코드를 가져오는 액션)- name: Checkout rep..
[배포] 배포 방식 목차블루 그린 배포까나리 배포롤링 업데이트 배포1. 블루-그린 배포 (Blue-Green Deployment)블루-그린 배포는 배포 방식 중 하나로, 기존 버전(블루)과 새로운 버전(그린)을 동시에 준비해 두고, 새로운 버전이 안정적으로 동작하는 것을 확인한 후 트래픽을 새로운 버전(그린)으로 전환하는 방식이다. (블루-그린 배포에서 트래픽 전환은 한 번에 이루어진다. 즉, 기존 버전(블루 환경)에서 새로운 버전(그린 환경)으로 트래픽을 한 번에 전환한다. 이 방식은 트래픽을 점진적으로 나누는 것이 아니라, 새로운 버전이 안정적이라고 확인되면, 로드 밸런서나 라우팅을 통해 모든 트래픽을 새로운 버전으로 빠르게 전환하는 방식) 흐름블루 환경: 현재 운영 중인 버전(기존 버전)이 블루 환경에서 서비스되고 있..
[DevOps] GitHub Actions CI/CD란?CI/CD는 소프트웨어 개발 및 배포 과정을 자동화하고 효율적으로 만드는 두 가지 주요 개념인 CI (Continuous Integration)와 CD (Continuous Delivery/Continuous Deployment)의 약자이다. 이를 통해 개발자는 코드 변경 사항을 빠르게 반영하고, 품질을 유지하며, 소프트웨어를 신속하게 배포할 수 있다.  1. CI (Continuous Integration) CI는 코드 변경이 있을 때마다 자동으로 빌드하고 테스트하는 과정을 의미한다. 이 과정은 주로 다음과 같은 작업을 한다. 코드 변경 통합: 여러 개발자가 동시에 작업할 때, 각자의 변경 사항을 주기적으로 통합하여 하나의 코드베이스에서 개발을 진행자동 빌드: 코드가 변경되면, 자동으로 빌..