๐LG ์ ํ๋ฌ์ค ์ ๋ ์นด SW ์์นด๋ฐ๋ฏธ 2๊ธฐ ์ตํฉํ๋ก์ ํธ ์ฐ์์๐
๐ ์๋น์ค ๋ฐ๋ก๊ฐ๊ธฐ : https://www.u-ble.com
๐ ๊ด๋ฆฌ์ ํ์ด์ง ๋ฐ๋ก๊ฐ๊ธฐ : https://admin.u-ble.com
๐ก UBLE ์ด๋? : https://www.u-ble.com/intro
ํ๋ก์ ํธ๋ช
: UBLE
ํ๋ก์ ํธ ์ฃผ์ : LG U+ ๋ฉค๋ฒ์ญ ์ ํด์ฒ ์๋ด ์ง๋ ์๋น์ค
ํ๋ก์ ํธ ๊ธฐ๊ฐ : 2025.06.30 - 2025.08.08
๐ง๐ปโ๐ป ํ์ ์๊ฐ
๐ ์์ฌ์
๋ณํ์
ํํ์ฐ
@Yyang-YE
@hayong39
@Eric-HAN-01
ํต๊ณ ๊ด๋ฆฌ ๊ธฐ๋ฅ ์ธํ๋ผ ๊ด๋ฆฌ ๊ฒ์ ๊ธฐ๋ฅ ์ฆ๊ฒจ์ฐพ๊ธฐ ๊ธฐ๋ฅ ๋ก๊น
๊ธฐ๋ฅ
์ธํ๋ผ ๊ด๋ฆฌ ์์
๋ก๊ทธ์ธ ๊ธฐ๋ฅ ์ ํด์ฒ ๋ชฉ๋ก ์กฐํ ๊ธฐ๋ฅ ์ ํด์ฒ ๋งค์ฅ ์ถ์ฒ ๊ธฐ๋ฅ ๋ก๊น
๊ธฐ๋ฅ
๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ ํผ๋๋ฐฑ ๋ฑ๋ก ๋ฐ ์กฐํ ๊ธฐ๋ฅ ๋์ ์์น ๊ด๋ฆฌ ๊ธฐ๋ฅ ์ง๋ ๋ฐ๊ฒฝ ํํฐ๋ง ๊ธฐ๋ฅ ๋งค์ฅ ๋ง์ปค ํด๋ฌ์คํฐ๋ง
์นด์นด์ค ์์
๋ก๊ทธ์ธ ๋ฐ ํ์๊ฐ์
๋ก๊ทธ์์ ๋ฐ ํํด
ํ์ ์ ๋ณด (๋ฉค๋ฒ์ญ ๋ฑ๊ธ/๋ฐ์ฝ๋, ์๋
์์ผ, ์ฑ๋ณ, ๊ด์ฌ ์นดํ
๊ณ ๋ฆฌ) ์์
์ ํด์ฒ ์ฆ๊ฒจ์ฐพ๊ธฐ ๋ฑ๋ก/์ญ์ /์กฐํ
(ํต๊ณ) ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ ์นดํ
๊ณ ๋ฆฌ ๋ฐ ์ ํด์ฒ ๋ธ๋๋
(ํต๊ณ) ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ ๋ ์ง, ์์ผ, ์๊ฐ
(ํต๊ณ) ๋น์ทํ ์ ์ ํ๊ท ๋๋น ์ฌ์ฉ๋
(ํต๊ณ) ์๋ณ ์ฌ์ฉ๋ ๋ด์ญ
2. ์ ํด์ฒ ์กฐํ ๊ธฐ๋ฅ
์ ํด์ฒ ์ ์ฒด ์กฐํ ๋ฐ ํํฐ๋ง
์ ํด์ฒ ์์ธ ์กฐํ
์ ํด์ฒ ์ด๋ฆ/์นดํ
๊ณ ๋ฆฌ ๊ธฐ๋ฐ ๊ฒ์ ๋ฐ ์๋์์ฑ
3. ์ง๋ ๊ธฐ๋ฐ ๋งค์ฅ ์กฐํ ๊ธฐ๋ฅ
ํ์ฌ ๋๋ ์ง์ ์์น ๊ธฐ๋ฐ ๊ทผ์ฒ ์ ํด์ฒ ๋งค์ฅ ์กฐํ (ํด๋ฌ์คํฐ๋ง ์ ์ฉ)
์ ํด์ฒ ๋งค์ฅ ์์ธ ์กฐํ
์ ํด์ฒ ์ด๋ฆ, ๋งค์ฅ ์ด๋ฆ, ์นดํ
๊ณ ๋ฆฌ ๊ธฐ๋ฐ ๊ฒ์ ๋ฐ ์๋์์ฑ
์์ฃผ ๊ฐ๋ ๊ณณ ๋ฑ๋ก/์ญ์
์ ์ ๋ณ ๊ฒ์ ๊ธฐ๋ก, ์ ํด์ฒ ์กฐํ ๊ธฐ๋ก, ๋งค์ฅ ์กฐํ ๊ธฐ๋ก์ ๋ก๊น
์ฝ์ ๋ก๊ทธ ๋ชจ๋ํฐ๋ง ๋ฐ ์๋ฌ ๋ก๊ทธ ๊ฐ์ง ์๋ฆผ ์์คํ
์ค๋๋ ๋ก๊ทธ๋ฅผ ์ ๊ธฐ์ ์ผ๋ก S3์ ์
๋ก๋ํ์ฌ ๊ด๋ฆฌ
์ฌ์ฉ์ ์ ๋ณด(์๋
์์ผ, ์ฑ๋ณ, ๊ด์ฌ ์นดํ
๊ณ ๋ฆฌ), ๋ก๊ทธ(ํด๋ฆญ/๊ฒ์), ์์น ์ ๋ณด ํ์ฉํ์ฌ ์ ํด์ฒ ๋งค์ฅ ์ถ์ฒ
์ถ์ฒ ๊ฒฐ๊ณผ ์บ์ฑ
(ํต๊ณ) ์ ํด์ฒ/์นดํ
๊ณ ๋ฆฌ ํด๋ฆญ ์์
(ํต๊ณ) ์์ 10๊ฐ ์ ํด์ฒ ๋์ ๊ด์ฌ์ฌ ๋ณํ ์ถ์ด
(ํต๊ณ) ์ผ๋ณ ์ธ๊ธฐ ๊ฒ์์ด ์์
(ํต๊ณ) ๊ฒฐ๊ณผ ๋ฏธํฌํจ ๊ฒ์์ด ์์
(ํต๊ณ) ์์ธ ์ง์ญ๊ตฌ ์ด์ฉ ์์
(ํต๊ณ) ์ ํด์ฒ/์นดํ
๊ณ ๋ฆฌ ์ด์ฉ ์์
์๋น์ค์ ๋ํ ํผ๋๋ฐฑ ๋ฑ๋ก/์กฐํ
๐ธ ERD : https://www.erdcloud.com/d/C9vcCB4kCHXRWWczR
1) ๊ฒ์์ฉ INDEX
2) ํต๊ณ์ฉ INDEX
๐ ๏ธ ์์คํ
์ํคํ
์ฒ
์ฌ์ฉ ๊ธฐ์
์ญํ
SpringBoot (ver. 3.5.3)
Backend FrameWork
Spring Security (ver.6.5.1) OAuth2 JWT (ver. 0.12.6)
์ธ์ฆ/์ธ๊ฐ ์์คํ
๊ตฌ์ถ ์์
๋ก๊ทธ์ธ stateless ์ธ์ฆ ๊ตฌํ
Spring Data JPA (ver. 3.5.1)
๋ฐ์ดํฐ ์ ๊ทผ ๊ณ์ธต์ ๋จ์ํ ๋ฐ ์ ์ง๋ณด์์ฑ ํฅ์
QueryDSL (ver. 5.1.0)
ํ์
์์ ์ฑ์ ๋ณด์ฅํ๋ ๋์ ์ฟผ๋ฆฌ ์์ฑ
Spring Batch (ver. 3.5.3)
๋๋ ๋ฐ์ดํฐ์ ์ ๊ธฐ์ ์ฒ๋ฆฌ ๋ก์ง ๊ตฌํ
Springdoc Swagger (ver. 2.2.25)
API ๋ช
์ธ ๋ฌธ์ ์๋ ์์ฑ
Mockito (ver. 5.2.0) JUnit5 (ver. 5.12.2)
ํ
์คํธ ํ๋ ์์ํฌ
FastAPI (ver. 0.116.1)
์ถ์ฒ ์์คํ
์๋ฒ ๊ตฌ์ถ
์ฌ์ฉ ๊ธฐ์
์ญํ
PostgreSQL (ver. 15.13)
์ ์ฒด ๋ฐ์ดํฐ ์ ์ฅ
PGVector
์ถ์ฒ ์์คํ
์ ์๋ฒ ๋ฉ ๊ธฐ๋ฐ ์ ์ฌ๋ ๊ณ์ฐ ์ vector ์ ๋ณด ์ ์ฅ
PostGIS
ํน์ ๊ฑฐ๋ฆฌ ๋ด ๋งค์ฅ ์ ๋ณด ์กฐํ ์ ์ฌ์ฉ
Redis
์ค์ผ์ค๋ฌ ๋ถ์ฐ ๋ฝ ์ ์ฉ ๋ฐ ์ธ์
์บ์ฑ์ ํตํ ์๋ต ์๋ ๊ฐ์
์ฌ์ฉ ๊ธฐ์
์ญํ
Filebeat
์ปจํ
์ด๋ ๋ด JSON ๋ก๊ทธ ํ์ผ์ ์ค์๊ฐ์ผ๋ก ์์งํ์ฌ Logstash๋ก ์ ์ก
Logstash
Filebeat๋ก๋ถํฐ ์ ๋ฌ๋ ๋ก๊ทธ๋ฅผ ํ์ฑ, ๋ณํ, ํํฐ๋งํ์ฌ Elasticsearch์ ์ ์ฌ
Elasticsearch
๊ฒ์ ์์ง / ์ธ๋ฑ์ค ๊ธฐ๋ฐ์ผ๋ก ๋ก๊ทธ๋ฅผ ์ ์ฅ, ๋น ๋ฅธ ๊ฒ์ ์ง์
Kibana
๊ฒ์ ๊ฒฐ๊ณผ ์๊ฐํ ๋ฐ ๋ชจ๋ํฐ๋ง ์ง์ / ๋ก๊ทธ ์๊ฐํ๋ฅผ ํตํด ์ฉ์ดํ ๋ก๊ทธ ๋ถ์ ๊ฐ๋ฅ
์ฌ์ฉ ๊ธฐ์
์ญํ
AWS EC2
์๋น์ค ๋ฐฐํฌ ์๋ฒ
AWS RDS
๊ด๊ณํ DB ํธ์คํ
AWS Route53 AWS Loadbalancer AWS Certificate Manager
๋๋ฉ์ธ ๋ฐ HTTPS ์ ์ฉ
AWS S3
์ ํด์ฒ ๋ก๊ณ ๋ฐ ๋ก๊น
๋ด์ญ ์ ์ฅ
AWS CloudWatch AWS Lambda
์๋ฒ ๋ชจ๋ํฐ๋ง ์์คํ
๊ตฌ์ถ
Docker (ver. 28.0.1)
๊ฐ๋ฐ ๋ฐ ๋ฐฐํฌ ํ๊ฒฝ์ ์ปจํ
์ด๋ ๊ธฐ๋ฐ ๊ตฌ์ฑ
GitHub Actions
CI/CD ์๋ํ
โ๏ธ ๊ธฐ์ ์ ํ ๊ทผ๊ฑฐ
์ ํ ๊ธฐ์
๋์
๋น๊ต ์ค๋ช
PostgreSQL + PostGIS
MySQL
PostgreSQL์ PostGIS ํ์ฅ์ ํตํด ๋ฐ๊ฒฝ ๋ด ๋งค์ฅ ๊ฒ์, ๊ฑฐ๋ฆฌ ๊ณ์ฐ ๊ธฐ๋ฅ์ ์ง์ํฉ๋๋ค. MySQL๋ ๊ณต๊ฐ ์ฟผ๋ฆฌ๋ฅผ ์ ๊ณตํ์ง๋ง ์ ํ๋์ ๊ธฐ๋ฅ์ด ์ ํ์ ์ด๋ผ PostgreSQL์ ์ ํํ์์ต๋๋ค.
pgvector
Elasticsearch Vector / Faiss
pgvector๋ ๋ฒกํฐ์ RDB ๋ฐ์ดํฐ๋ฅผ ํ๋์ DB์์ ํตํฉ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ElasticSearch๋ ํ
์คํธ ๊ฒ์์๋ ๊ฐ์ ์ด ์์ง๋ง ๋ฒกํฐ ์ ํ๋ ์ธก๋ฉด์์ ๋ถ๋ฆฌํ๋ฉฐ, Faiss๋ ๋ณ๋์ ์ธํ๋ผ ๊ด๋ฆฌ๊ฐ ํ์ํ์ฌ pgvector๋ฅผ ์ ํํ์์ต๋๋ค.
ELK (Elasticsearch, Logstash, Kibana)
AWS CloudWatch Agent
ELK๋ ์คํ์์ค ๊ธฐ๋ฐ์ด๊ณ , Logstash์ ํ์ฉํ ์ปค์คํ
ํ๋ ์ ๊ทํ์ FastAPI์ Spring์ ๋ก๊ทธ ํตํฉ์ด ๊ฐ๋ฅํฉ๋๋ค. CloudWatch Agent๋ AWS ์๋น์ค์ ์ข
์์ ์ด๋ฉฐ ์ปค์คํ
์ฒ๋ฆฌ ์ ์ฐ์ฑ์ด ๋ฎ์ ELK๋ฅผ ์ ํํ์์ต๋๋ค.
ํ๋ฉด
๊ธฐ๋ฅ
โจ ์ฌ์ฉ์ ์ ๋ณด ๋ฐ ๊ด์ฌ์ฌ ๊ธฐ๋ฐ ์ ํด์ฒ ์ถ์ฒ ์ฌ์ฉ์์ ๋์ด, ์ฑ๋ณ, ๊ด์ฌ ์นดํ
๊ณ ๋ฆฌ ๋ฑ ํ๋กํ ์ ๋ณด๋ฅผ ๋ถ์ํ์ฌ ๋ง์ถคํ LGU+ ๋ฉค๋ฒ์ญ ์ ํด์ฒ๋ฅผ ์ถ์ฒํฉ๋๋ค.
๐ LGU+ ๋ฉค๋ฒ์ญ ์ ํด์ฒ ํํ ์ ๋ณด ๊ฐ ์ ํด์ฒ์ ์์ธํ ํํ ์ ๋ณด๋ฅผ ์กฐํํ๊ณ , ํ ์ธ ๋ฐ ์ด๋ฒคํธ ๋ฑ์ ์ต์ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค.
๐ฅ ์ค์๊ฐ ์ธ๊ธฐ ๋ฉค๋ฒ์ญ ์ ํด์ฒ ์ ๋ณด ํ์ฌ ์๊ฐ ๊ธฐ์ค์ผ๋ก ์ฌ์ฉ์๋ค์ด ๊ฐ์ฅ ๋ง์ด ๋ฐฉ๋ฌธํ ์ธ๊ธฐ ์ ํด์ฒ ์ ๋ณด๋ฅผ ์ค์๊ฐ์ผ๋ก ์ ๊ณตํฉ๋๋ค.
๐ ์๋ ์์ฑ ๊ธฐ๋ฅ์ ํ์ฌํ ๊ฒ์ ๊ธฐ๋ฅ (์ ํด์ฒ) ์ ํด์ฒ ๋ฐ ํค์๋ ๊ฒ์ ์, ์ฌ์ฉ์ ์
๋ ฅ์ ๋ฐ๋ผ ์๋ ์์ฑ ๋ฐ ์ถ์ฒ ๊ฒ์์ด๋ฅผ ์ค์๊ฐ์ผ๋ก ์ ๊ณตํฉ๋๋ค.
๐บ ์ง๋ ๊ธฐ๋ฐ ์ ํด์ฒ ํ์ ์ฌ์ฉ์์ ํ์ฌ ์์น ์ฃผ๋ณ์ ์กด์ฌํ๋ LGU+ ์ ํด์ฒ๋ฅผ ์ง๋์์์ ํ์ธํ ์ ์์ผ๋ฉฐ, ๋งค์ฅ ํด๋ฆญ ์ ์์ธ ์ ๋ณด๊ฐ ์ ๊ณต๋ฉ๋๋ค.
๐ ์ฌ์ฉ์ ์ง์ ์์น ์ ์ฅ ์ฌ์ฉ์๊ฐ ์์ฃผ ๋ฐฉ๋ฌธํ๊ฑฐ๋ ๊ด์ฌ ์๋ ์์น๋ฅผ ์ง์ ํ์ฌ ๋น ๋ฅด๊ฒ ํ์ํ ์ ์๋๋ก ์ ์ฅํ ์ ์์ต๋๋ค.
โก ์๋ ์์ฑ ๊ธฐ๋ฅ์ ํ์ฌํ ์ ํด์ฒ ๋งค์ฅ ๊ฒ์ ๊ธฐ๋ฅ (์ง๋) ์ ํด์ฒ ์ด๋ฆ์ด๋ ํค์๋๋ฅผ ์
๋ ฅํ ๋, ๊ด๋ จ ๋งค์ฅ์ ์๋ ์์ฑ ํํ๋ก ์ค์๊ฐ์ผ๋ก ์ ์ํ์ฌ ๋น ๋ฅด๊ฒ ํ์ํ ์ ์์ต๋๋ค.
โญ ์ ํด์ฒ ์ฆ๊ฒจ์ฐพ๊ธฐ ๊ด์ฌ ์๋ ์ ํด์ฒ๋ฅผ ์ฆ๊ฒจ์ฐพ๊ธฐ๋ก ์ ์ฅํ์ฌ ์ธ์ ๋ ์ง ์ฝ๊ฒ ๋ค์ ํ์ธํ ์ ์๋๋ก ์ง์ํฉ๋๋ค.
โ๏ธ ์ฌ์ฉ์ ์ ๋ณด ๋ฐ ๊ด์ฌ ์นดํ
๊ณ ๋ฆฌ ๋ฑ ์ค์ ์ง์(๋ง์ดํ์ด์ง) ์ฌ์ฉ์ ํ๋กํ ์ ๋ณด, ๊ด์ฌ ์นดํ
๊ณ ๋ฆฌ, ๋ฉค๋ฒ์ญ ๋ฑ๊ธ, ๋ฐ์ฝ๋ ๋ฒํธ ๋ฑ ๋ค์ํ ์ค์ ์ ๋ง์ดํ์ด์ง์์ ๊ด๋ฆฌํ ์ ์๋๋ก ์ง์ํฉ๋๋ค.
๐ซ ๋ฐ์ฝ๋ ๊ธฐ๋ฐ ๋ฉค๋ฒ์ญ ํํ ์ฌ์ฉ ์ฌ์ฉ์๊ฐ ๋ฑ๋กํ ๋ฐ์ฝ๋ ๋ฒํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ค์ ์ฌ์ฉํ ์ ์๋ ๋ฉค๋ฒ์ญ ๋ฐ์ฝ๋๋ฅผ ์๋ ์์ฑํ์ฌ ์ ํด์ฒ์์ ํํ์ ๋ฐ์ ์ ์๋๋ก ์ง์ํฉ๋๋ค.
๐ ์ ์ ๊ฐ์ธ ๋ฐ ์ ์ฒด ์ฌ์ฉ์ ํ๊ท ๊ธฐ์ค ํํ ์ฌ์ฉ ํต๊ณ ์กฐํ ๊ฐ์ธ์ ํํ ์ฌ์ฉ๋๊ณผ ์ ์ฒด ์ฌ์ฉ์ ํ๊ท ์ฌ์ฉ๋์ ๋น๊ตํ์ฌ ์๊ฐ์ ์ผ๋ก ์ ๊ณตํฉ๋๋ค.
๐ ํํ ์ฌ์ฉ ๋ด์ญ ์กฐํ ์ฌ์ฉ์๊ฐ ์ค์ ์ฌ์ฉํ ์ ํด์ฒ ํํ์ ์ฌ์ฉ ๋ด์ญ๊ณผ ๋ ์ง, ์ฌ์ฉ์ฒ, ํ ์ธ์จ ๋ฑ์ ์์ธ ์ ๋ณด๋ฅผ ์กฐํํ ์ ์๋๋ก ์ ๊ณตํฉ๋๋ค.