분류 전체보기 (360) 썸네일형 리스트형 [배포] 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가 "이.. [Spring] BCryptPasswordEncoder 🔐 BCryptPasswordEncoderBCryptPasswordEncoder는 Spring Security에서 가장 많이 사용되는 비밀번호 해싱 도구이다.또한, bcrypt 알고리즘을 기반으로 비밀번호를 단방향 해싱하고, 자동으로 salt를 추가해주는 보안 알고리즘이다. 🤔 bcrypt 알고리즘?bcrypt는 비밀번호를 안전하게 저장하기 위한 해싱 알고리즘이다. 비밀번호 보안을 위한 대표적인 알고리즘 중 하나이며,Spring Security, Django, Laravel 등 거의 모든 프레임워크에서 사용되고 있다. 📌 bcrypt의 주요 특징단방향 해싱: 복호화가 불가능한 해시값 생성자동 Salt 포함: 같은 비밀번호도 다른 해시값 생성 (레인보우 테이블 공격 방지)계산 비용 조절 가능: wor.. [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로, 모든 포.. [DB] 데이터베이스에서 사용되는 다양한 키 🔑 1. 기본 키 (Primary Key)테이블에서 각 레코드를 고유하게 식별하는 데 사용된다.또한, 후보 키들 중에서 하나를 선택해서 지정한 유일한 키이다.CREATE TABLE employees ( id INT PRIMARY KEY, -- 기본 키 name VARCHAR(50), salary INT); ✅ 특징유일성: 기본 키의 값은 중복될 수 없음.널 값 불허: 기본 키는 널 값(NULL)을 가질 수 없음.기본 키가 설정된 컬럼은 자동으로 인덱스가 생성된다.2. 유니크 키 (Unique Key)기본 키와 유사하지만, 중복된 값은 허용하지 않지만 NULL 값은 허용된다.CREATE TABLE users ( user_id INT PRIMARY KEY, email VARCHA.. [DB] MySQL InnoDB의 인덱스 생성 전략 📌 1. 기본키 인덱스 (Primary Key Index)기본키(PK)가 설정된 컬럼에 자동으로 생성되는 인덱스이다.InnoDB에서는 기본키가 클러스터형 인덱스(Clustered Index)로 동작한다.데이터가 기본키 기준으로 물리적으로 정렬되며 저장된다.✅ 특징테이블당 하나의 기본키만 설정 가능하다.NULL을 허용하지 않으며, 중복된 값을 가질 수 없음.기본키 검색이 빠르며, 다른 인덱스에서 기본키를 사용해 데이터 검색을 수행함.🚀 예제CREATE TABLE employees ( id INT PRIMARY KEY, name VARCHAR(100));위와 같이 id를 기본키로 설정하면, id를 기준으로 클러스터형 인덱스(Clustered Index)가 생성된다.📌 2. 클러스터형 인덱스.. [JPA] ID 생성 전략 ✏️ @GeneratedValueJPA에서 ID를 자동 생성하는 방법에는 4가지 전략이 있다.각 전략은 @GeneratedValue(strategy = GenerationType.XXX)로 지정할 수 있다. 📌 1. AUTO (기본값)@Id@GeneratedValue(strategy = GenerationType.AUTO)private Long id; ✅ 특징기본값으로 사용됨 (명시하지 않으면 AUTO가 적용됨).데이터베이스에 따라 적절한 전략을 자동 선택.보통 MySQL은 IDENTITY, H2나 Oracle은 SEQUENCE로 자동 선택됨.🛠 예제: MySQL vs H2데이터베이스AUTO 전략이 선택하는 기본값MySQL, MariaDBIDENTITY (AUTO_INCREMENT 사용)H2, Ora.. [JPA] 💼 PersistentBag 💼 PersistentBagPersistentBag은 Hibernate에서 제공하는 컬렉션 타입 중 하나로, @OneToMany 또는 @ManyToMany 관계에서 사용되는 List 타입의 컬렉션을 관리하기 위한 구현체이다. 이 컬렉션은 지연 로딩(lazy loading)과 변경 감지 기능(dirty checking)을 지원하며, JPA 엔티티에서 List 타입의 필드를 사용할 때 Hibernate가 자동으로 변환하는 컬렉션 타입이다.🤔 PersistentBag이 언제 사용될까?✅ @OneToMany 관계에서 List를 사용할 때@Entitypublic class Member { @Id @GeneratedValue private Long id; private String nam.. 이전 1 2 3 4 ··· 36 다음