Skip to content

HeoJunHyoung/HeoJunHyoung

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

12 Commits
Β 
Β 

Repository files navigation

πŸ§‘β€πŸ’» About Me

"검증 κ°€λŠ₯ν•œ μ„±λŠ₯κ³Ό μ•ˆμ •μ„±μ„ μ€‘μ‹œν•˜λŠ” λ°±μ—”λ“œ κ°œλ°œμžμž…λ‹ˆλ‹€."

μ•ˆμ •μ μΈ μ„œλΉ„μŠ€ μš΄μ˜μ„ μœ„ν•œ MSA(Microservices Architecture) 섀계와 μ‹œμŠ€ν…œ μ„±λŠ₯ νŠœλ‹μ— κΉŠμ€ 관심을 κ°€μ§€κ³  μžˆμŠ΅λ‹ˆλ‹€. λ‹¨μˆœν•œ κΈ°λŠ₯ κ΅¬ν˜„μ„ λ„˜μ–΄, ν…ŒμŠ€νŠΈμ™€ λͺ¨λ‹ˆν„°λ§μ„ ν†΅ν•œ 데이터 기반 μ˜μ‚¬κ²°μ •μ„ μ§€ν–₯ν•˜λ©°, μ‹€μ œ 운영 ν™˜κ²½μ—μ„œ κ²€μ¦λœ μ†”λ£¨μ…˜μ„ κ΅¬ν˜„ν•©λ‹ˆλ‹€.

public class HeoJunHyoung {
    private final String email = "gjwnsgud4016@gmail.com";
    private final String blog = "https://receiver40.tistory.com";
    
    public void contact() {
        System.out.println("Ready to build scalable architecture.");
    }
}

πŸ› οΈ Tech Stack

Backend

Java Spring Boot Spring Cloud Spring Security QueryDSL

Infrastructure & DevOps

Kubernetes Docker ArgoCD GitHub Actions Ubuntu Terraform

Data & Messaging

MySQL PostgreSQL MongoDB Redis Apache Kafka Elastic Search

Testing & Monitoring

k6 Prometheus Grafana



πŸš€ Featured Projects

MSA 기반 λŒ€μš©λŸ‰ νŠΈλž˜ν”½ 처리 μ‹œμŠ€ν…œ

μ£Όμš” κΈ°λŠ₯ 기술적 νŠΉμ§• 및 ν•΄κ²° 과제
ν•˜μ΄λΈŒλ¦¬λ“œ 인프라 β€’ VirtualBox VM 기반 On-Premise Kubernetes 3-Node ν΄λŸ¬μŠ€ν„° 직접 ꡬ좕
β€’ μ™ΈλΆ€ λ©”μ‹œμ§• 인프라(Kafka VM)와 K8s ν΄λŸ¬μŠ€ν„°λ₯Ό λΆ„λ¦¬ν•œ Hybrid Cloud Topology 섀계
데이터 동기화 β€’ Kafka & Debezium(CDC) 을 ν™œμš©ν•œ μ„œλΉ„μŠ€ κ°„ 데이터 μ‹€μ‹œκ°„ 동기화
β€’ Transactional Outbox Pattern을 μ μš©ν•˜μ—¬ λΆ„μ‚° ν™˜κ²½μ—μ„œ 데이터 μ •ν•©μ„± 보μž₯ (SAGA Pattern)
κ³ μ„±λŠ₯ 검색/쑰회 β€’ Split Caching Strategy: 정적 데이터(λ³Έλ¬Έ)와 동적 데이터(쑰회수)의 캐싱 라이프사이클 뢄리
β€’ Redis Write-Back: 쑰회수 λ“± λΉˆλ²ˆν•œ μ—…λ°μ΄νŠΈλ₯Ό λ©”λͺ¨λ¦¬μ—μ„œ 처리 ν›„ 배치 동기화 (DB Lock ν•΄μ†Œ)
μ„±λŠ₯ μ΅œμ ν™” β€’ k6 λΆ€ν•˜ ν…ŒμŠ€νŠΈλ₯Ό ν†΅ν•œ 병λͺ© ꡬ간 식별 및 νŠœλ‹ (쑰회 μ„±λŠ₯ 73% κ°œμ„ )
β€’ 쿼리 μ‹€ν–‰ κ³„νš 뢄석을 ν†΅ν•œ 볡합 인덱슀(Composite Index) 적용 및 Full Table Scan 제거

AWS EKS 기반 ν΄λΌμš°λ“œ λ„€μ΄ν‹°λΈŒ μ•„ν‚€ν…μ²˜μ™€ 벑터 검색을 ν™œμš©ν•œ κ°œμΈν™” μΆ”μ²œ μ„œλΉ„μŠ€

μ£Όμš” κΈ°λŠ₯ 기술적 νŠΉμ§• 및 ν•΄κ²° 과제
Vector Search μΆ”μ²œ β€’ PostgreSQL pgvector ν™•μž₯을 λ„μž…ν•˜μ—¬ μ‚¬μš©μž μ„±ν–₯(User Embedding)κ³Ό μ—¬ν–‰μ§€ κ°„ Cosine Similarity μ—°μ‚° κ΅¬ν˜„
β€’ λ‹¨μˆœ 필터링을 λ„˜μ–΄μ„  μ •κ΅ν•œ μ·¨ν–₯ 기반 λ§€μΉ­ μ•Œκ³ λ¦¬μ¦˜ 섀계
Cloud Native Infra β€’ AWS EKS ν™˜κ²½μ—μ„œ Terraform(IaC)을 ν™œμš©ν•œ 인프라 ν”„λ‘œλΉ„μ €λ‹ 및 관리
β€’ ArgoCD 기반 GitOps νŒŒμ΄ν”„λΌμΈ κ΅¬μΆ•μœΌλ‘œ λ§€λ‹ˆνŽ˜μŠ€νŠΈ λ³€κ²½ 사항 μžλ™ 동기화
ν™•μž₯μ„± μžˆλŠ” μ±„νŒ… β€’ Redis Pub/Sub μ•„ν‚€ν…μ²˜λ₯Ό μ μš©ν•˜μ—¬ 닀쀑 μ„œλ²„ ν™˜κ²½μ—μ„œ WebSocket λ©”μ‹œμ§€ 동기화 문제 ν•΄κ²°
β€’ MongoDBλ₯Ό λ„μž…ν•˜μ—¬ λŒ€μš©λŸ‰ μ±„νŒ… 둜그 μ“°κΈ° μ„±λŠ₯ 확보 및 쑰회 μ΅œμ ν™” (Polyglot Persistence)
μ„±λŠ₯ μ΅œμ ν™” β€’ Redis Write-Back μ „λž΅: κ²Œμ‹œκΈ€ 쑰회수 λ“± λΉˆλ²ˆν•œ μ“°κΈ° 연산을 λ©”λͺ¨λ¦¬μ—μ„œ 처리 ν›„ DB 일괄 반영
β€’ HttpOnly Cookie 핸듀링: λ³΄μ•ˆμ„ μœ„ν•œ μΏ ν‚€ 기반 JWT 인증과 WebSocket ν•Έλ“œμ…°μ΄ν¬ κ°„ 연동 문제 ν•΄κ²°

λŒ€μš©λŸ‰ νŠΈλž˜ν”½ μƒν™©μ—μ„œμ˜ λ™μ‹œμ„± μ œμ–΄μ™€ μ‹€μ‹œκ°„ λž­ν‚Ή μ‹œμŠ€ν…œ μ΅œμ ν™”

μ£Όμš” κΈ°λŠ₯ 기술적 νŠΉμ§• 및 ν•΄κ²° 과제
재고 λ™μ‹œμ„± μ œμ–΄ β€’ Redisson λΆ„μ‚° 락(Distributed Lock)을 λ„μž…ν•˜μ—¬ 닀쀑 μ„œλ²„ ν™˜κ²½μ—μ„œ 재고 차감의 μ›μžμ„± 보μž₯ (Race Condition ν•΄κ²°)
β€’ k6 λΆ€ν•˜ ν…ŒμŠ€νŠΈλ₯Ό 톡해 100λͺ… λ™μ‹œ μš”μ²­ μ‹œ μ •ν™•ν•œ 재고 차감 검증 (Overselling 0건 달성)
μ‹€μ‹œκ°„ λž­ν‚Ή μ‹œμŠ€ν…œ β€’ Redis Sorted Set (ZSet)을 ν™œμš©ν•˜μ—¬ μ£Όλ¬Έ λ°œμƒ μ‹œ νŒλ§€λŸ‰ μ‹€μ‹œκ°„ 집계 및 점수 μ‚°μ • (O(1))
β€’ DB μ •λ ¬ λΆ€ν•˜ 없이 reverseRangeWithScores둜 Top 5 인기 μƒν’ˆ μ¦‰μ‹œ 쑰회 κ΅¬ν˜„
λΆ„μ‚° ν™˜κ²½ μ„Έμ…˜ β€’ Spring Session Data Redisλ₯Ό μ μš©ν•˜μ—¬ Scale-out ν™˜κ²½μ—μ„œλ„ μ •ν•©μ„± μžˆλŠ” 둜그인 μ„Έμ…˜ μœ μ§€
β€’ Redis Caching μ „λž΅(Look Aside)을 톡해 μ£Όλ¬Έ λ‚΄μ—­ λ“± κ³ λΉˆλ„ 쑰회 λ°μ΄ν„°μ˜ 응닡 속도 κ°œμ„ 


πŸ“Š GitHub Stats

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors