| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- 서버리스 #
- 0.25px border
- 클론코딩
- 1px border
- 타입스크립트
- 데이터베이스 #try #이중
- 컴포넌튼
- 전역변수
- ES5
- Props
- font-size
- entity
- 으
- &연산
- TypeScript
- jwt
- TS
- es6
- Strict
- 문서번호
- 당근마켓
- 10px
- github
- literal
- ZOOM
- Websocket
- 0.5px border
- 0.75px border
- npm
- angular
- Today
- Total
목록분류 전체보기 (186)
복잡한뇌구조마냥
AWS 콘솔 캡처는 지저분하고,draw.io는 아이콘 찾다가 시간 다 쓰는 경우가 많다.이럴 때 Cloudcraft는👉 AWS 공식 아이콘 + 실제 서비스 배치 느낌으로👉 아키텍처 다이어그램을 아주 빠르게 만들 수 있는 도구다.Cloudcraft란?AWS 인프라 전용 다이어그램 툴AWS 공식 아이콘 제공실제 리소스 배치 느낌의 시각화문서 / 발표 / README / 기술 블로그용으로 최적👉 특히 EC2, ALB, CloudFront, S3, RDS, Lambda 같은 구조 표현이 깔끔함1️⃣ Cloudcraft 시작하기https://cloudcraft.co 접속GitHub 계정으로 로그인New → Blank Diagram 선택무료 플랜도 아키텍처 설명용으로는 충분2️⃣ 기본 화면 구성왼쪽 패널: 리..
🧩무중단 배포란?👉 서비스를 중단하지 않고 새로운 버전을 배포하는 방식을 의미한다.배포 중에도기존 사용자는 정상 요청 처리새 버전은 준비 완료 후 자연스럽게 전환❓ 왜 무중단 배포가 필요한가?전통적인 배포 방식의 문제 서버 종료→ 새 버전 배포→ 서버 재시작→ 서비스 재개이 방식은 배포 시간 동안❌ 서비스 접속 불가❌ 요청 실패❌ 사용자 이탈❌ 트래픽 많은 서비스에 치명적“배포 = 장애”가 되어버리는 구조🎯 무중단 배포의 핵심 목표목표설명서비스 연속성배포 중에도 요청 처리안정성문제 발생 시 빠른 롤백점진적 전환새 버전으로 자연스럽게 이동🧩 무중단 배포의 기본 원리무중단 배포의 핵심은 단 하나다.“트래픽을 어디로 보낼지 제어한다”1️⃣ Blue-Green Deployment🔹 개념Blue: 현재 ..
대규모 트래픽 환경에서 캐시를 사용하다 보면, 특정 시점에 DB로 요청이 한꺼번에 몰리는 현상이 발생할 수 있다.이를 Cache Stampede(캐시 스탬피드) 라고 부른다.간단히 말하면,캐시가 비는 순간, 모든 요청이 동시에 DB로 몰려가는 문제이다.🧩 캐시 스탬피드는 언제 발생할까?가장 대표적인 상황은 다음과 같다.1️⃣ 캐시 만료(TTL Expire) 시점인기 데이터(메인 페이지, 인기 게시글, 랭킹 등)캐시 TTL이 만료되는 순간다수의 요청이 동시에 유입 [요청 1] 캐시 없음 → DB 조회[요청 2] 캐시 없음 → DB 조회[요청 3] 캐시 없음 → DB 조회...👉 원래는 캐시 1번만 갱신하면 되는데, DB를 N번 조회 2️⃣ 서버 재시작 / Redis FlushRedis 재시작FLUS..
1. 배경 및 문제 상황기존 아키텍처의 한계프로젝트에서 프로필 이미지 업로드 시 Spring Boot의 ImageOptimizer를 사용하여 동기적으로 리사이징을 처리했습니다.기존 방식의 문제점:@Servicepublic class ImageOptimizer { public String optimizeAndUpload(MultipartFile image) { // 1. 이미지 검증 validateImage(image); // 2. 동기 리사이징 (사용자가 대기) BufferedImage resized = resize(image, 1024, 1024); // 3. S3 업로드 String url =..
Spring Boot 프로젝트에서 DB 스키마를 안정적으로 관리하려면개발 환경 / 운영 환경 / 로컬 환경에서 모두 동일한 테이블 구조를 유지할 수 있어야 한다.이때 가장 많이 사용하는 방법이 Flyway 기반 데이터베이스 마이그레이션이다. 프로젝트에서도 Flyway를 적용해서DB 구조 변경을 코드로 관리하고, 버전 충돌 없이 배포할 수 있는 구조를 만들었다.1. Flyway란 무엇인가?Flyway는 데이터베이스 스키마를 버전 관리하는 도구다.테이블 생성컬럼 추가/삭제인덱스 생성제약조건 수정초기 데이터 삽입(Seed)이 모든 DB 작업을 **SQL 파일로 버전 관리(V1, V2, V3...)**하고Spring Boot 애플리케이션 실행 시 자동으로 적용한다.즉,“로컬 · 개발 · 운영 DB 스키마를 모두..
1. Terraform이란?Terraform은 Infrastructure as Code(IaC) 도구로,서버·네트워크·스토리지 같은 인프라를 코드로 정의하고 관리할 수 있게 해준다.기존에는 AWS 콘솔에서 클릭으로 만들던 리소스들을Terraform에서는 .tf 파일에 선언적으로 작성한다.인프라를 “설정”이 아니라 “코드”로 관리한다는 점이 Terraform의 핵심이다.2. 왜 Terraform을 사용하는가?2.1 콘솔 기반 인프라의 한계클릭 기반 설정 → 재현 불가누가 언제 뭘 바꿨는지 추적 어려움환경(dev/prod) 간 설정 불일치 발생2.2 Terraform 도입 효과인프라 구성의 버전 관리동일한 환경 재현 가능코드 리뷰 및 변경 이력 관리 가능👉 애플리케이션처럼 인프라도 관리할 수 있다.3. T..
1. Redis란?Redis(Remote Dictionary Server)는 메모리 기반 Key-Value 저장소로,주로 캐시(Cache), 세션(Session), 임시 데이터 저장소 용도로 사용된다.Redis 특징Redis는 In-Memory 기반의 Key-Value 저장소로,RDB를 대체하기보다는 보조 저장소로 주로 사용된다.In-Memory 기반 → 속도가 매우 빠름다양한 자료구조 지원String, List, Set, Sorted Set, HashTTL(Time To Live) 지원싱글 스레드 기반(Event Loop) → 예측 가능한 성능디스크 영속화(RDB / AOF) 가능2. Redis를 왜 도입했는가?실제 프로젝트(취미 장비 대여 플랫폼, 인증/보안 기능)에서 Redis를 도입한 이유는 다음..
프로젝트가 커질수록 서버의 상태를 눈으로 확인할 수 있는 모니터링 환경은 필수가 된다.프로젝트에서는 Prometheus + Grafana 조합으로 JVM, 트래픽, 메모리 사용량을 실시간 모니터링할 수 있는 환경을 구축했다.Docker 기반이라 배포 환경에서도 그대로 사용 가능하고, 대시보드도 원하는 대로 커스터마이징할 수 있다.1. Prometheus & Grafana란?✔ Prometheus시계열(time-series) 기반 모니터링 + 데이터 수집 툴서버가 제공하는 /actuator/prometheus 엔드포인트를 일정 주기로 긁어오(scrape)며 메트릭 저장JVM 메모리, CPU, 요청 수, HTTP 상태코드 등 다양한 지표 자동 수집✔ GrafanaPrometheus에서 수집한 데이터를 기반으..