Skip to content
View minseojo's full-sized avatar

Block or report minseojo

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please donโ€™t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this userโ€™s behavior. Learn more about reporting abuse.

Report abuse
minseojo/README.md

๐Ÿš€ Minseo Jo | Backend Engineer

๐Ÿ‘‹ Introduction

ํ˜„์žฌ ICTWAY์—์„œ 3D GIS ์—”์ง„์„ ๊ณ ๋„ํ™”ํ•˜๊ณ , ๋Œ€๊ทœ๋ชจ ๊ณต๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ถ„์‚ฐ ๋นŒ๋“œ ํŒŒ์ดํ”„๋ผ์ธ์„ ์„ค๊ณ„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๐Ÿ’ผ ICTWAY | 3D GIS ์—”์ง„ & ๋ฐฑ์—”๋“œ ์—”์ง€๋‹ˆ์–ด (2024.12 ~ ์žฌ์ง์ค‘)
  • ๐ŸŽ“ ์ „๋ถ๋Œ€ํ•™๊ต IT์ •๋ณด๊ณตํ•™๊ณผ B.S. (2019.03 ~ 2025.02)
  • ๐Ÿš€ ์†Œํ”„ํŠธ์›จ์–ด ๋งˆ์—์ŠคํŠธ๋กœ 15๊ธฐ ์—ฐ์ˆ˜์ƒ (2024.04 ~ 2024.11)

๐Ÿงฉ Key Projects

1. ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ๋ถ„์‚ฐ ํƒ€์ผ ๋นŒ๋” & CQRS ์•„ํ‚คํ…์ฒ˜ ์ „ํ™˜

  • ๋ฌธ์ œ ์ •์˜: ๊ธฐ์กด NFS ๊ธฐ๋ฐ˜ SQLite ๊ณต์œ  ๊ตฌ์กฐ์—์„œ ๋‹ค์ค‘ ์„œ๋ฒ„๊ฐ€ ๋‹จ์ผ DB ํŒŒ์ผ์— ์ ‘๊ทผํ•˜๋ฉฐ ๋ฐœ์ƒํ•˜๋Š” I/O Lock ๊ฒฝํ•ฉ ๋ฐ ์ˆ˜ํ‰ ํ™•์žฅ ๋ถˆ๊ฐ€ ๋ฌธ์ œ
  • ์„ค๊ณ„ ๋ฐ ํ•ด๊ฒฐ์ฑ…:
    • ์ €์žฅ์†Œ ๋ถ„๋ฆฌ ๋ฐ CQRS ์ ์šฉ: ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” ๋™์‹œ์„ฑ ์ œ์–ด๊ฐ€ ๊ฐ•ํ•œ PostgreSQL๋กœ, ํƒ€์ผ ๋ฐ์ดํ„ฐ(3D Model)๋Š” S3, SeaweedFS ๋“ฑ (๋ถ„์‚ฐ ์Šคํ† ๋ฆฌ์ง€) ๋กœ ์ด๊ด€. ๋นŒ๋“œ(Command)์™€ ์กฐํšŒ(Query)์˜ ๋ฌผ๋ฆฌ์ /๋…ผ๋ฆฌ์  ๊ฒฝ๋กœ๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ I/O ๋ณ‘๋ชฉ ์ œ๊ฑฐ
    • ์ด๋ฒคํŠธ ํŒŒ์ดํ”„๋ผ์ธ: Kafka์™€ Consumer Group์„ ๋„์ž…ํ•˜์—ฌ ์›Œ์ปค ๋…ธ๋“œ๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ์ฆ์„คํ•  ์ˆ˜ ์žˆ๋Š” ๋น„๋™๊ธฐ ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ ํ™˜๊ฒฝ ๊ตฌ์ถ•
  • ๊ตฌํ˜„ ํฌ์ธํŠธ: Transactional Outbox Pattern์„ ์ ์šฉํ•˜์—ฌ DB ์ƒํƒœ ๋ณ€๊ฒฝ๊ณผ ์ด๋ฒคํŠธ ๋ฐœํ–‰์˜ ์›์ž์„ฑ(Atomicity) ๋ณด์žฅ
  • ๊ฒฐ๊ณผ: I/O Lock ๊ฒฝํ•ฉ ํ•ด์†Œ๋กœ ์„œ๋น„์Šค ์•ˆ์ •์„ฑ ํ™•๋ณด ๋ฐ ์›Œ์ปค ๋…ธ๋“œ ์ฆ์„ค์— ๋”ฐ๋ฅธ ์„ ํ˜•์  ํ™•์žฅ(Scale-out) ๊ฐ€๋Šฅ

2. ๊ณต๊ฐ„ ๋ฐ์ดํ„ฐ ๋ฒ„์ „๊ด€๋ฆฌ(Git-like) ๋ฐ Selective Rebuild ์‹œ์Šคํ…œ

  • ๋ฌธ์ œ ์ •์˜: ์ผ๋ถ€ ์˜์—ญ ์ˆ˜์ • ์‹œ์—๋„ ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ๋นŒ๋“œํ•ด์•ผ ํ•˜๋Š” ๋น„ํšจ์œจ(์ˆ˜๋ฐฑ ์‹œ๊ฐ„) ๋ฐ ์ด๋ ฅ ๊ด€๋ฆฌ(History)์˜ ๋ถ€์žฌ
  • ์„ค๊ณ„ ๋ฐ ํ•ด๊ฒฐ์ฑ…:
    • Git-like ๋ฒ„์ „ ๊ด€๋ฆฌ: ํƒ€์ผ ๋ฐ์ดํ„ฐ์— Content-Addressable Storage(CAS) ๋ฐฉ์‹์„ ์ ์šฉ, ๋ณ€๊ฒฝ๋œ ๋…ธ๋“œ๋งŒ ์ƒˆ๋กœ์šด ํ•ด์‹œ๋กœ ์ €์žฅํ•˜๊ณ  ๋ณ€๊ฒฝ ์—†๋Š” ๋…ธ๋“œ๋Š” ๊ธฐ์กด ํ•ด์‹œ๋ฅผ ํฌ์ธํŒ…ํ•˜๋Š” Merkle Tree๊ตฌ์กฐ ์„ค๊ณ„
    • Selective Rebuild: ๋ณ€๊ฒฝ๋œ ๊ณต๊ฐ„ ๋ฒ”์œ„(BBox)๋ฅผ ๊ฐ์ง€ํ•˜์—ฌ ์˜ํ–ฅ๋ฐ›๋Š” ํƒ€์ผ๋งŒ ๋ถ€๋ถ„์ ์œผ๋กœ ์žฌ์ƒ์„ฑํ•˜๋Š” ์ฆ๋ถ„ ๋นŒ๋“œ(Incremental Build) ๊ตฌํ˜„
  • ๊ฒฐ๊ณผ: ์ „์ฒด ์žฌ๋นŒ๋“œ(์ˆ˜๋ฐฑ ์‹œ๊ฐ„) โ†’ ๋ณ€๊ฒฝ ๊ตฌ๊ฐ„๋งŒ ์ˆ˜ ๋ถ„(Minute) ๋‚ด ์žฌ๋นŒ๋“œ ๊ฐ€๋Šฅ, ์ค‘๋ณต ๋ฐ์ดํ„ฐ ์ œ๊ฑฐ(Deduplication)๋กœ ์Šคํ† ๋ฆฌ์ง€ ๋น„์šฉ ์ตœ์ ํ™”

3. 3D GIS ์—”์ง„ ์ž๋ฃŒ๊ตฌ์กฐ ๊ณ ๋„ํ™” (3D Tiles 1.1)

  • ๋ฌธ์ œ ์ •์˜: 3D ๋ชจ๋ธ ๋ Œ๋”๋ง ์‹œ ๋ฐœ์ƒํ•˜๋Š” ํŠธ๋ฆฌ ํƒ์ƒ‰ ๋ณ‘๋ชฉ ๋ฐ ๋Œ€์šฉ๋Ÿ‰ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ „์†ก ์ง€์—ฐ
  • ์„ค๊ณ„ ๋ฐ ํ•ด๊ฒฐ์ฑ…: Explicit JSON ๊ตฌ์กฐ๋ฅผ Implicit Tiling(๊ทœ์น™ ๊ธฐ๋ฐ˜ ์ธ์ฝ”๋”ฉ) ์œผ๋กœ ์ „ํ™˜ํ•˜์—ฌ ๋žœ๋ค ์•ก์„ธ์Šค ๊ตฌํ˜„
  • ๊ตฌํ˜„ ํฌ์ธํŠธ: ํƒ€์ผ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํŠธ๋ฆฌ ํƒ์ƒ‰ $O(\log_{4} N)$์—์„œ ์ขŒํ‘œ ๊ธฐ๋ฐ˜ ๋žœ๋ค ์•ก์„ธ์Šค $O(1)$ ๋กœ ์ตœ์ ํ™”
  • ๊ฒฐ๊ณผ: ๋ Œ๋”๋ง FPS ์•ฝ 30% ํ–ฅ์ƒ, ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์šฉ๋Ÿ‰ 30~40% ์ ˆ๊ฐ

๐Ÿ”ฅ Interests

1. ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ๋ฐ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆฌ๋ฐ (Distributed Systems)

  • EDA (Event-Driven Architecture): Kafka๋ฅผ ํ™œ์šฉํ•œ ๊ฒฐํ•ฉ๋„ ๋‚ฎ์€(Decoupled) ๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ดํ”„๋ผ์ธ ์„ค๊ณ„
  • Storage Optimization: ํŒŒ์ผ ์‹œ์Šคํ…œ๊ณผ ์˜ค๋ธŒ์ ํŠธ ์Šคํ† ๋ฆฌ์ง€(SeaweedFS, MinIO)์˜ I/O ํŠน์„ฑ์„ ๊ณ ๋ คํ•œ ์ตœ์ ํ™”
  • Reliability: ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•ด๋„ ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์‹ค๋˜์ง€ ์•Š๋Š” ๋‚ด๊ฒฐํ•จ์„ฑ(Fault Tolerance) ๊ตฌ์กฐ ์„ค๊ณ„

2. ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ ๋ฐ ํŠธ๋žœ์žญ์…˜ (Data Consistency)

  • Distributed Transaction: MSA ํ™˜๊ฒฝ์—์„œ SAGA, Outbox ํŒจํ„ด์„ ํ†ตํ•œ ์ตœ์ข…์  ์ผ๊ด€์„ฑ(Eventual Consistency) ํ™•๋ณด
  • Resilience: ๋„คํŠธ์›Œํฌ ๋‹จ์ ˆ๊ณผ ์‹คํŒจ๋ฅผ ๋ณ€์ˆ˜๊ฐ€ ์•„๋‹Œ ์ƒ์ˆ˜๋กœ ๊ฐ€์ •ํ•˜๊ณ , ๋ฉฑ๋“ฑ์„ฑ๊ณผ ์žฌ์‹œ๋„ ์ „๋žต์„ ํ†ตํ•ด ํšŒ๋ณต ํƒ„๋ ฅ์„ฑ ํ™•๋ณด

๐Ÿ›  Tech Stack

Category Stack
Languages Java, C#, Python, JavaScript
Backend Spring Boot(MVC), JPA/Hibernate
Data & Messaging PostgreSQL, MySQL, Redis, MongoDB, Apache Kafka
Infra & DevOps AWS(EC2, RDS, S3, Lambda), Docker, GitHub Actions
Monitoring Grafana, k6, Prometheus

๐Ÿ“š Blog

์‹œ์Šคํ…œ ์„ค๊ณ„์˜ ๊ทผ๊ฑฐ์™€ ์˜คํ”ˆ์†Œ์Šค ๋™์ž‘ ์›๋ฆฌ๋ฅผ ํ•™์Šตํ•˜๊ณ  ์ •๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ‘‰ ๋ธ”๋กœ๊ทธ ์ „์ฒด ๋ณด๊ธฐ (virtualworld.tistory.com)


๐Ÿ“ซ Contact

Pinned Loading

  1. minseojo minseojo Public

    1