Skip to content

๐Ÿค– AI ๊ธฐ๋ฐ˜ ์ฐจ์šฉ์ฆ ์ž๋™ ์ƒ์„ฑ & ์—์Šคํฌ๋กœ ๊ธฐ๋ฐ˜ P2P ๋Œ€์ถœ ํ”Œ๋žซํผ

Notifications You must be signed in to change notification settings

HyunSoo730/DrCha

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿฆ ์ฐจ์šฉ๋ฐ•์‚ฌ - AI ๊ธฐ๋ฐ˜ P2P ๋Œ€์ถœ ์ค‘๊ฐœ ํ”Œ๋žซํผ

์ฐจ์šฉ๋ฐ•์‚ฌ ๋กœ๊ณ 

AI๊ฐ€ ๋งŒ๋“œ๋Š” ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ์ฐจ์šฉ์ฆ, ์—์Šคํฌ๋กœ๋กœ ์•ˆ์ „ํ•œ ๊ธˆ์ „ ๊ฑฐ๋ž˜
๊ฐœ๋ฐœ๊ธฐ๊ฐ„: 2024.08.19 ~ 2024.10.11 (7์ฃผ)

๐Ÿ“Œ ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

๐ŸŒŸ ๊ธฐํš ๋ฐฐ๊ฒฝ

ํ˜„๋Œ€ ์‚ฌํšŒ์—์„œ ๊ฐœ์ธ ๊ฐ„ ๊ธˆ์ „ ๊ฑฐ๋ž˜๋Š” ์ผ์ƒ์ ์ธ ์ผ์ด ๋˜์—ˆ์ง€๋งŒ, ์—ฌ์ „ํžˆ ๋งŽ์€ ์œ„ํ—˜๊ณผ ๋ถˆํŽธํ•จ์„ ๋™๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜๊ธฐ๋กœ ์ž‘์„ฑ๋œ ์ฐจ์šฉ์ฆ์€ ๋ฒ•์  ํšจ๋ ฅ์ด ๋ถˆํ™•์‹คํ•˜๊ณ , ๊ฐœ์ธ ๊ฐ„ ๊ฑฐ๋ž˜๋Š” ์•ˆ์ „์„ฑ์„ ๋ณด์žฅ๋ฐ›๊ธฐ ์–ด๋ ค์šฐ๋ฉฐ, ์ฑ„๋ฌด ๋ถˆ์ดํ–‰ ์‹œ ์ ์ ˆํ•œ ๋Œ€์‘ ๋ฐฉ์•ˆ์„ ์ฐพ๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ์ƒํ™˜ ์ผ์ •๊ณผ ๋‚ด์—ญ ๊ด€๋ฆฌ๊ฐ€ ์ฒด๊ณ„์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š์•„ ๋ถ„์Ÿ์˜ ์†Œ์ง€๊ฐ€ ๋†’์•„์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ’ธ

ํŠนํžˆ ๋ถ„ํ•  ์ƒํ™˜์˜ ๊ฒฝ์šฐ, ๋งค๋ฒˆ ์ˆ˜๊ธฐ๋กœ ์ƒํ™˜ ๋‚ด์—ญ์„ ๊ธฐ๋กํ•˜๊ณ  ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์ด ์žˆ์œผ๋ฉฐ, ์ข…์ข… ๊ธฐ๋ก ๋ˆ„๋ฝ์ด๋‚˜ ์˜ค๋ฅ˜๋กœ ์ด์–ด์ ธ ๋‹น์‚ฌ์ž ๊ฐ„ ์‹ ๋ขฐ ๊ด€๊ณ„๋ฅผ ํ•ด์น˜๋Š” ์›์ธ์ด ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด์˜ ์ˆ˜๊ธฐ ์žฅ๋ถ€ ๋ฐฉ์‹์œผ๋กœ๋Š” ๊ฑฐ๋ž˜์˜ ํˆฌ๋ช…์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์–ด๋ ต๊ณ , ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ƒํ™˜ ํ˜„ํ™ฉ์„ ํ™•์ธํ•˜๋Š” ๊ฒƒ๋„ ํ˜„์‹ค์ ์œผ๋กœ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ“

์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋“ค์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ฐจ์šฉ๋ฐ•์‚ฌ๋Š” AI ๊ธฐ์ˆ ๊ณผ ์—์Šคํฌ๋กœ ์‹œ์Šคํ…œ์„ ๊ฒฐํ•ฉํ•œ ํ˜์‹ ์ ์ธ P2P ๋Œ€์ถœ ์ค‘๊ฐœ ํ”Œ๋žซํผ์„ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค. ๋ฒ•์  ํšจ๋ ฅ์ด ์žˆ๋Š” ์ „์ž ์ฐจ์šฉ์ฆ ๋ฐœํ–‰๋ถ€ํ„ฐ ์•ˆ์ „ํ•œ ๊ฑฐ๋ž˜ ์‹œ์Šคํ…œ, ์ž๋™ํ™”๋œ ์ƒํ™˜ ๊ด€๋ฆฌ๊นŒ์ง€, ๊ฐœ์ธ ๊ฐ„ ๊ธˆ์ „ ๊ฑฐ๋ž˜์— ํ•„์š”ํ•œ ๋ชจ๋“  ์š”์†Œ๋ฅผ ํฌ๊ด„์ ์œผ๋กœ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๐ŸŒŸ

์ฐจ์šฉ๋ฐ•์‚ฌ๋Š” ๋‹จ์ˆœํ•œ ๊ธˆ์ „ ๊ฑฐ๋ž˜ ํ”Œ๋žซํผ์„ ๋„˜์–ด, ๊ฐœ์ธ ๊ฐ„ ๊ธˆ์ „ ๊ฑฐ๋ž˜์˜ ์ƒˆ๋กœ์šด ํŒจ๋Ÿฌ๋‹ค์ž„์„ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์‹ ๋ขฐ์„ฑ, ์•ˆ์ „์„ฑ, ํŽธ์˜์„ฑ์„ ํ•ต์‹ฌ ๊ฐ€์น˜๋กœ ์‚ผ์•„, ๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ์•ˆ์‹ฌํ•˜๊ณ  ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค์–ด๊ฐ€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์•ž์œผ๋กœ๋„ ์ฐจ์šฉ๋ฐ•์‚ฌ๋Š” ์‚ฌ์šฉ์ž๋“ค์˜ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ˜์˜ํ•˜๋ฉฐ ์ง€์†์ ์œผ๋กœ ์„œ๋น„์Šค๋ฅผ ๊ฐœ์„ ํ•˜์—ฌ, ๋” ๋‚˜์€ ๊ธˆ์ „ ๊ฑฐ๋ž˜ ๋ฌธํ™”๋ฅผ ๋งŒ๋“ค์–ด ๋‚˜๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ’ช

๐Ÿ‘ฅ ํŒ€ ์†Œ๊ฐœ

๋ฐฑ์—”๋“œ

์ง€์ข…๊ถŒ ์กฐํ˜„์ˆ˜ ๋ฐ•๊ฒฝ๋ฆผ ๊ฐ•๋ฏผ์„œ
@jijongkwon @HyunSoo730 @g16rim @cjo5929
SSAFY
๐Ÿ‘จโ€๐Ÿ’ป Backend
๐Ÿ›  Infra
SSAFY
๐Ÿ‘จโ€๐Ÿ’ป Backend
SSAFY
๐Ÿ‘จโ€๐Ÿ’ป Backend
SSAFY
๐Ÿ‘จโ€๐Ÿ’ป Backend
๐Ÿค– AI

ํ”„๋ก ํŠธ์—”๋“œ

์ด์ง€์› ๊น€์„ ์›…
@LEEJW1953 @LineHero
SSAFY
๐ŸŽจ Frontend
SSAFY
๐ŸŽจ Frontend

๐Ÿ› ๏ธ ๊ธฐ์ˆ  ์Šคํƒ

๐Ÿ’ป ๊ธฐ์ˆ  ์Šคํƒ ์ž์„ธํžˆ ๋ณด๊ธฐ

๐Ÿ’ป Language

Java TypeScript

๐Ÿ—๏ธ Framework & Library

๐Ÿ”™ Backend

Spring Boot Spring Security Spring Validation JPA Kibana RabbitMQ Grafana

๐Ÿ–ผ๏ธ Frontend

React Tailwind CSS React Query Zustand Express

โš™๏ธ Config

๐Ÿ–ฅ๏ธ Frontend

Node.js Nginx

๐Ÿ”ง Backend

Gradle OpenJDK

๐Ÿค Communication

Git GitLab Jira Figma Mattermost

๐Ÿ—„๏ธ Database

Redis MariaDB MongoDB MySQL

๐Ÿš€ DevOps

Amazon EC2 Jenkins Docker Docker Compose

๐ŸŽจ Etc

Llama 2



๐Ÿ’ช ์ฃผ์š” ๊ธฐ๋Šฅ

โญ๏ธ AI ์ฐจ์šฉ์ฆ ์ž๋™ ์ƒ์„ฑ ๋ฐ ๊ด€๋ฆฌ

LLM ๋ชจ๋ธ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ฌ์šฉ์ž ๊ฐ„ ๋Œ€ํ™” ์ปจํ…์ŠคํŠธ๋ฅผ ๋ถ„์„ํ•˜๊ณ  ๋ฒ•์  ๊ตฌ์†๋ ฅ์„ ๊ฐ–์ถ˜ ์ฐจ์šฉ์ฆ์„ ์ž๋™ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์‹ค๋ช… ๊ณ„์ขŒ ์ธ์ฆ ์‹œ์Šคํ…œ๊ณผ ์—ฐ๋™ํ•˜์—ฌ ๊ฑฐ๋ž˜ ๋‹น์‚ฌ์ž์˜ ์‹ ์›์„ ๊ฒ€์ฆํ•˜๊ณ , ์•ˆ์ „ํ•œ ์˜จ๋ผ์ธ ์ €์žฅ์†Œ์—์„œ ์ฐจ์šฉ์ฆ์„ ์ฒด๊ณ„์ ์œผ๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์ฐจ์šฉ์ฆ์€ ๋ฒ•์  ํšจ๋ ฅ์ด ์žˆ๋Š” PDF ํ˜•ํƒœ๋กœ ์ œ๊ณต๋˜์–ด ์ถ”ํ›„ ๋ฒ•์  ๋ถ„์Ÿ ๋ฐœ์ƒ ์‹œ ์ฆ๋น™ ์ž๋ฃŒ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ“

ํ•ต์‹ฌ ๊ธฐ๋Šฅ

  • AI ๊ธฐ๋ฐ˜ ์ฐจ์šฉ์ฆ ์ž‘์„ฑ: ์ฑ„ํŒ… ๋Œ€ํ™”๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์ž๋™์œผ๋กœ ์ฐจ์šฉ์ฆ ์ดˆ์•ˆ ์ž‘์„ฑ
  • ๊ณ„์ขŒ ์ธ์ฆ ์‹œ์Šคํ…œ: 1์› ์†ก๊ธˆ์„ ํ†ตํ•œ ์‹ค๋ช… ๊ณ„์ขŒ ์ธ์ฆ
  • ๋ฌธ์„œ ๊ด€๋ฆฌ ์ฒด๊ณ„: ์ฐจ์šฉ์ฆ ์ด๋ ฅ ๊ด€๋ฆฌ ๋ฐ ์•ˆ์ „ํ•œ ๋ณด๊ด€
  • PDF ๋ณ€ํ™˜: ๋ฒ•์  ํšจ๋ ฅ์ด ์žˆ๋Š” ํ˜•ํƒœ์˜ PDF ๋ฌธ์„œ ์ถœ๋ ฅ ๊ธฐ๋Šฅ

โญ๏ธ ์•ˆ์ „ํ•œ ๊ฑฐ๋ž˜ ์‹œ์Šคํ…œ

์—์Šคํฌ๋กœ ๊ธฐ๋ฐ˜์˜ ์•ˆ์ „ํ•œ ๊ฑฐ๋ž˜ ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ์ฑ„๊ถŒ์ž์™€ ์ฑ„๋ฌด์ž ๋ชจ๋‘๋ฅผ ๋ณดํ˜ธํ•ฉ๋‹ˆ๋‹ค. ๋ถ„ํ•  ์ƒํ™˜ ๊ธฐ๋Šฅ์œผ๋กœ ์œ ์—ฐํ•œ ๊ฑฐ๋ž˜๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๋ชจ๋“  ๊ฑฐ๋ž˜ ๋‚ด์—ญ์€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค. ๐Ÿฆ

์ฃผ์š” ํŠน์ง•

  • ์—์Šคํฌ๋กœ ์‹œ์Šคํ…œ: ์•ˆ์ „ํ•œ ์ค‘๊ฐœ ๊ฑฐ๋ž˜ ๋ณด์žฅ
  • ๋ถ„ํ•  ์ƒํ™˜ ๊ด€๋ฆฌ: ์ฒด๊ณ„์ ์ธ ๋ถ„ํ•  ์ƒํ™˜ ์ผ์ • ๊ด€๋ฆฌ
  • ์‹ค์‹œ๊ฐ„ ๊ฑฐ๋ž˜ ์ถ”์ : ๋ชจ๋“  ๊ฑฐ๋ž˜ ๋‚ด์—ญ ์‹ค์‹œ๊ฐ„ ๊ธฐ๋ก

โญ๏ธ ์‹ค์‹œ๊ฐ„ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜

๊ฑฐ๋ž˜ ๋‹น์‚ฌ์ž ๊ฐ„์˜ ์›ํ™œํ•œ ์†Œํ†ต์„ ์œ„ํ•œ 1:1 ์ฑ„ํŒ… ์‹œ์Šคํ…œ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์ฑ„ํŒ… ๋‚ด์—ญ์€ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณด๊ด€๋˜๋ฉฐ, ์ค‘์š”ํ•œ ๋ฉ”์‹œ์ง€๋Š” ์ฆ‰์‹œ ์•Œ๋ฆผ์„ ํ†ตํ•ด ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ๐Ÿ’ฌ

์‹œ์Šคํ…œ ํŠน์ง•

  • 1:1 ์ฑ„ํŒ…: ๊ฑฐ๋ž˜ ๋‹น์‚ฌ์ž ๊ฐ„ ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ… ์ง€์›
  • ์ฑ„ํŒ… ํžˆ์Šคํ† ๋ฆฌ: ๋Œ€ํ™” ๋‚ด์—ญ ๋ณด๊ด€ ๋ฐ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ
  • ์•Œ๋ฆผ ์„ค์ •: ๋งž์ถคํ˜• ์•Œ๋ฆผ ์„ค์ • ๊ธฐ๋Šฅ

โญ๏ธ ๊ฑฐ๋ž˜ ํ˜„ํ™ฉ ๋Œ€์‹œ๋ณด๋“œ

์ง๊ด€์ ์ธ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ํ†ตํ•ด ์ง„ํ–‰ ์ค‘์ธ ๋ชจ๋“  ๊ฑฐ๋ž˜ ํ˜„ํ™ฉ์„ ํ•œ๋ˆˆ์— ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ฑฐ๋ž˜ ์ด๋ ฅ๊ณผ ํ†ต๊ณ„ ๊ธฐ๋Šฅ์„ ํ•จ๊ป˜ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ“Š

ํ•ต์‹ฌ ๊ธฐ๋Šฅ

  • ๊ฑฐ๋ž˜ ๋ชฉ๋ก: ์ง„ํ–‰ ์ค‘์ธ ๊ฑฐ๋ž˜ ๋ชฉ๋ก ์‹ค์‹œ๊ฐ„ ์ œ๊ณต
  • ์ƒ์„ธ ์ •๋ณด: ๊ฐ ๊ฑฐ๋ž˜๋ณ„ ์ƒ์„ธ ์ •๋ณด ์กฐํšŒ

โญ๏ธ ์Šค๋งˆํŠธ ์•Œ๋ฆผ ์„ผํ„ฐ

์ƒํ™˜ ์ผ์ •, ์ž…๊ธˆ ํ™•์ธ, ๋…์ด‰ ๋“ฑ ์ค‘์š”ํ•œ ์•Œ๋ฆผ์„ ๋‹ค์–‘ํ•œ ์ฑ„๋„์„ ํ†ตํ•ด ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์นด์นด์˜คํ†ก๊ณผ ์•ฑ ๋‚ด ์•Œ๋ฆผ์„ ํ†ตํ•ด ์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ๋†“์น˜์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ””

์•Œ๋ฆผ ๊ธฐ๋Šฅ

  • ์ž๋™ ์•Œ๋ฆผ: ์ƒํ™˜ ๊ธฐ์ผ ๋ฐ ๋…์ด‰ ์ž๋™ ์•Œ๋ฆผ
  • ๋ฉ€ํ‹ฐ ์ฑ„๋„: ์•ฑ ๋‚ด ์•Œ๋ฆผ ๋ฐ ์นด์นด์˜คํ†ก ์•Œ๋ฆผ ๋™์‹œ ์ง€์›
  • ์•Œ๋ฆผ ์„ค์ •: ์‚ฌ์šฉ์ž(์ฑ„๊ถŒ์ž) ๋งž์ถคํ˜• ์•Œ๋ฆผ ์„ค์ • ๊ธฐ๋Šฅ

๐Ÿ“ฑ ํ™”๋ฉด ๊ตฌ์„ฑ

๐Ÿ’ฌ AI ๊ธฐ๋ฐ˜ ์ฐจ์šฉ์ฆ ์ž๋™ ์ƒ์„ฑ

๋Œ€ํ™” ๊ธฐ๋ฐ˜ ์‹ค์‹œ๊ฐ„ ์ฐจ์šฉ์ฆ ์ž‘์„ฑ ๊ณผ์ •
๐Ÿ  ๋ฉ”์ธ ํ™”๋ฉด ๐Ÿ“Š ๊ฑฐ๋ž˜ ๋‚ด์—ญ

์ง๊ด€์ ์ธ ๋Œ€์‹œ๋ณด๋“œ ํ™”๋ฉด

์ƒ์„ธํ•œ ๊ฑฐ๋ž˜ ๊ธฐ๋ก ๊ด€๋ฆฌ
๐Ÿ“ ๊ฑฐ๋ž˜ ๋ชฉ๋ก ๐Ÿ” ๊ณ„์ขŒ ์ธ์ฆ

์ง„ํ–‰ ์ค‘์ธ ๋ชจ๋“  ๊ฑฐ๋ž˜ ํ˜„ํ™ฉ ์กฐํšŒ

1์› ์ธ์ฆ์„ ํ†ตํ•œ ์•ˆ์ „ํ•œ ๊ณ„์ขŒ ํ™•์ธ

๐Ÿ’ก ์ฃผ์š” ํŠน์ง•

  • ์‹ค์‹œ๊ฐ„ ์ฐจ์šฉ์ฆ ์ž‘์„ฑ: AI๊ฐ€ ๋Œ€ํ™”๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์ž๋™์œผ๋กœ ์ฐจ์šฉ์ฆ์„ ์ž‘์„ฑ
  • ์ง๊ด€์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค: ์‚ฌ์šฉ์ž ์นœํ™”์ ์ธ UI/UX ์„ค๊ณ„
  • ์•ˆ์ „ํ•œ ์ธ์ฆ ์‹œ์Šคํ…œ: 1์› ๊ณ„์ขŒ ์ธ์ฆ์„ ํ†ตํ•œ ์‹ ์› ํ™•์ธ
  • ์ƒ์„ธํ•œ ๊ฑฐ๋ž˜ ๊ด€๋ฆฌ: ๋ชจ๋“  ๊ฑฐ๋ž˜ ๋‚ด์—ญ์„ ํ•œ๋ˆˆ์— ํ™•์ธ

๐Ÿ—๏ธ ์ธํ”„๋ผ ์•„ํ‚คํ…์ฒ˜

์ธํ”„๋ผ ์•„ํ‚คํ…์ฒ˜

์ €ํฌ ํ”„๋กœ์ ํŠธ์˜ ์ธํ”„๋ผ ์•„ํ‚คํ…์ฒ˜๋Š” ์•ˆ์ •์ ์ด๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๋ชจ๋†€๋ฆฌ์‹ ๊ตฌ์กฐ๋กœ ์„ค๊ณ„๋˜์—ˆ์œผ๋ฉฐ, AI ์„œ๋น„์Šค ํ†ตํ•ฉ๊ณผ ์„ฑ๋Šฅ ๊ฐœ์„ ์„ ์œ„ํ•œ ์ง€์†์ ์ธ ๊ณ ๋„ํ™”๋ฅผ ์ง„ํ–‰ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

๐Ÿ‘ 1. ํ˜„์žฌ ์•„ํ‚คํ…์ฒ˜ (๋ชจ๋†€๋ฆฌ์‹)

๋„คํŠธ์›Œํฌ ๋ฐ ๋ณด์•ˆ

  • EC2 ์ธ์Šคํ„ด์Šค์—์„œ 80(HTTP)๊ณผ 443(HTTPS) ํฌํŠธ๋งŒ ์™ธ๋ถ€์— ๊ฐœ๋ฐฉํ•˜์—ฌ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Nginx๋ฅผ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๋“ค์–ด์˜ค๋Š” ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ์„ ๊ด€๋ฆฌํ•˜๊ณ  ์ ์ ˆํžˆ ๋ผ์šฐํŒ…ํ•ฉ๋‹ˆ๋‹ค.
  • /: ํ”„๋ก ํŠธ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ๋ผ์šฐํŒ…
  • /api: ๋ฐฑ์—”๋“œ API ์„œ๋ฒ„๋กœ ์š”์ฒญ ์ „๋‹ฌ
  • /ai: Meta AI ๋ฐ LangChain ์„œ๋น„์Šค๋กœ ์š”์ฒญ ์ „๋‹ฌ

์ปจํ…Œ์ด๋„ˆํ™”

  • ๋ชจ๋“  ์„œ๋น„์Šค(ํ”„๋ก ํŠธ์—”๋“œ, ๋ฐฑ์—”๋“œ, AI ์„œ๋น„์Šค, Redis ๋“ฑ)๋Š” ๋‹จ์ผ EC2 ์ธ์Šคํ„ด์Šค ๋‚ด์—์„œ Docker ์ปจํ…Œ์ด๋„ˆ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
  • Docker Compose๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์ค‘ ์ปจํ…Œ์ด๋„ˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ •์˜ํ•˜๊ณ  ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • Redis ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์บ์‹ฑ ๋ฐ ์„ธ์…˜ ๊ด€๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

CI/CD ํŒŒ์ดํ”„๋ผ์ธ

  • GitLab์„ ์‚ฌ์šฉํ•˜์—ฌ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , Webhook์„ ํ†ตํ•ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  • Jenkins๋ฅผ CI/CD ๋„๊ตฌ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์ž๋™ํ™”๋œ ๋นŒ๋“œ, ํ…Œ์ŠคํŠธ, ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • MatterMost ์—ฐ๋™์„ ํ†ตํ•ด ๋ฐฐํฌ ์ƒํƒœ(์„ฑ๊ณต/์‹คํŒจ)๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํŒ€์›๋“ค์—๊ฒŒ ์•Œ๋ฆฝ๋‹ˆ๋‹ค.

๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๋กœ๊น…

  • Grafana๋ฅผ ํ†ตํ•œ ์‹ค์‹œ๊ฐ„ ์‹œ์Šคํ…œ ๋ชจ๋‹ˆํ„ฐ๋ง ๊ตฌํ˜„
  • ๋ฐฐํฌ ์ด๋ ฅ ๋ฐ ์„ฑ๋Šฅ ๋ฉ”ํŠธ๋ฆญ์Šค ์‹œ๊ฐํ™”

๐Ÿ‘ 2. ํ–ฅํ›„ ๊ฐœ์„  ๊ณ„ํš

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์ „ํ™˜ ๊ฒ€ํ† 

  • AI ์„œ๋น„์Šค๋ฅผ ๋…๋ฆฝ์ ์ธ ์„œ๋น„์Šค๋กœ ๋ถ„๋ฆฌ
  • ์„œ๋น„์Šค๋ณ„ ๋…๋ฆฝ์ ์ธ ์Šค์ผ€์ผ๋ง ๊ฐ€๋Šฅํ•˜๋„๋ก ๊ตฌ์กฐ ๊ฐœ์„ 
  • ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์„ ์œ„ํ•œ Kubernetes ๋„์ž… ๊ณ ๋ ค
  • Blue/Green ๋ฐฐํฌ ์ „๋žต์„ ํ†ตํ•ด ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ๋ฅผ ๊ตฌํ˜„ํ•  ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค.
    • ์ƒˆ๋กœ์šด ๋ฒ„์ „์„ Green ํ™˜๊ฒฝ์— ๋ฐฐํฌ
    • ํ…Œ์ŠคํŠธ ์™„๋ฃŒ ํ›„ ํŠธ๋ž˜ํ”ฝ์„ Blue์—์„œ Green์œผ๋กœ ์ „ํ™˜
    • ๋ฌธ์ œ ๋ฐœ์ƒ ์‹œ ์ฆ‰์‹œ ์ด์ „ ๋ฒ„์ „(Blue)์œผ๋กœ ๋กค๋ฐฑ ๊ฐ€๋Šฅ

์„ฑ๋Šฅ ์ตœ์ ํ™”

  • ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ ๋„์ž…์„ ํ†ตํ•œ ํŠธ๋ž˜ํ”ฝ ๋ถ„์‚ฐ
  • ์บ์‹ฑ ์ „๋žต ๊ณ ๋„ํ™”

๐Ÿ”ง ๋‚ด ์—ญํ• (์กฐํ˜„์ˆ˜) : ๋ฐฑ์—”๋“œ ์‹œ์Šคํ…œ ๊ตฌํ˜„ (์ฐจ์šฉ๋ฐ•์‚ฌ ์ฑ„๋ฌด ์ƒํ™˜ ํ”„๋กœ์„ธ์Šค)

์ฐจ์šฉ์ฆ ์ƒ์„ฑ๋ถ€ํ„ฐ ์ƒํ™˜๊นŒ์ง€ ์ „์ฒด ๊ฑฐ๋ž˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ๋ฐฑ์—”๋“œ ์‹œ์Šคํ…œ์„ ์„ค๊ณ„ํ•˜๊ณ  ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. Event Driven ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋„์ž…ํ•˜์—ฌ ์‹ค์‹œ๊ฐ„ ์ž…๊ธˆ ๊ฐ์ง€ ๋ฐ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ ์ž๋™ํ™”๋œ ์ƒํ™˜ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ–ˆ์œผ๋ฉฐ, ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ์„ ๋ณด์žฅํ–ˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ๊ฐ€์ƒ๊ณ„์ขŒ์™€ ์ฐจ์šฉ์ฆ์„ 1:1๋กœ ๋งคํ•‘ํ•˜์—ฌ ์•ˆ์ „ํ•œ ์—์Šคํฌ๋กœ ๊ธฐ๋ฐ˜์˜ ์ฑ„๋ฌด ์ƒํ™˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ฐจ์šฉ ๋ฐ•์‚ฌ ์ฑ„๋ฌด ์ƒํ™˜ ํ”„๋กœ์„ธ์Šค

1. ๊ฑฐ๋ž˜ ํ”„๋กœ์„ธ์Šค ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„

  • ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ: ์‹ค์‹œ๊ฐ„ ์ž…๊ธˆ ๊ฐ์ง€ ๋ฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ Event Driven ์•„ํ‚คํ…์ฒ˜ ๊ตฌํ˜„
  • ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ: @EventListener์™€ @Async ํ™œ์šฉํ•œ ํšจ์œจ์ ์ธ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ
  • ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ: ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ๋ฅผ ํ†ตํ•œ ์•ˆ์ „ํ•œ ๊ฑฐ๋ž˜ ๋ณด์žฅ

2. ํ•ต์‹ฌ ๋ชจ๋“ˆ ๊ตฌํ˜„

  • ๊ฐ€์ƒ๊ณ„์ขŒ ๊ด€๋ฆฌ: ์ฐจ์šฉ์ฆ๊ณผ 1:1 ๋งคํ•‘๋˜๋Š” ๊ฐ€์ƒ๊ณ„์ขŒ ์‹œ์Šคํ…œ ๊ตฌํ˜„
  • ์ž๋™ํ™”๋œ ์ด์ฒด: ์ž…๊ธˆ ๊ฐ์ง€๋ถ€ํ„ฐ ์ฑ„๊ถŒ์ž ๊ณ„์ขŒ ์ด์ฒด๊นŒ์ง€ ์ž๋™ํ™”
  • ์ƒํƒœ ๊ด€๋ฆฌ: ์ฐจ์šฉ์ฆ ์ƒํƒœ ๋ฐ ์ž”์•ก ์‹ค์‹œ๊ฐ„ ๋™๊ธฐํ™”

๐Ÿ” ๊ธฐ์ˆ ์  ๊ฐœ์„ ์‚ฌํ•ญ

1. ์‹œ์Šคํ…œ ์ตœ์ ํ™”

  • ํด๋ง ๋ฐฉ์‹์—์„œ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜๋กœ ์ „ํ™˜ํ•˜์—ฌ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ ํšจ์œจํ™”
  • ์ค‘๋ณต ๋ฐ์ดํ„ฐ ์ œ๊ฑฐ๋ฅผ ํ†ตํ•œ API ์‘๋‹ต ์ตœ์ ํ™”
  • ๋น„๋™๊ธฐ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๋กœ ์‹œ์Šคํ…œ ์„ฑ๋Šฅ ํ–ฅ์ƒ

2. ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๊ฐœ์„ 

  • DTO ๊ตฌ์กฐ ์ตœ์ ํ™”๋กœ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๊ฐ์†Œ
  • ํšจ์œจ์ ์ธ ๊ฑฐ๋ž˜ ๋‚ด์—ญ ์กฐํšŒ ์‹œ์Šคํ…œ ๊ตฌํ˜„
  • ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ ์ „๋žต ์ˆ˜๋ฆฝ ๋ฐ ์ ์šฉ

๐ŸŽ‰ Flow Chart

๊ฑฐ๋ž˜ ํ”„๋กœ์„ธ์Šค ํ”Œ๋กœ์šฐ์ฐจํŠธ


โšก ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

1. ์ฃผ๊ธฐ์  ํด๋ง ๋ฐฉ์‹์˜ ๋ฆฌ์†Œ์Šค ๋‚ญ๋น„

Problem:
- ๋ชจ๋“  ํ™œ์„ฑ ์ฐจ์šฉ์ฆ์˜ ๊ฐ€์ƒ๊ณ„์ขŒ๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ํด๋งํ•˜์—ฌ ์ž…๊ธˆ ํ™•์ธ
- ๋ถˆํ•„์š”ํ•œ API ํ˜ธ์ถœ ๋ฐœ์ƒ
- ์‹œ์Šคํ…œ ๋ฆฌ์†Œ์Šค ๊ณผ๋‹ค ์‚ฌ์šฉ
- ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ ๋ถˆ๊ฐ€๋Šฅ

Solution:
- ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜ ๋„์ž…
- ์ž…๊ธˆ ๋ฐœ์ƒ ์‹œ์—๋งŒ ์ด๋ฒคํŠธ ๋ฐœ์ƒ ๋ฐ ์ฒ˜๋ฆฌ
- @EventListener์™€ @Async๋ฅผ ํ™œ์šฉํ•œ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ
- ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ ๋ฐ ์‹œ์Šคํ…œ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ ์ตœ์ ํ™”

2. ๊ฑฐ๋ž˜ ๋‚ด์—ญ ์กฐํšŒ ์‹œ ์ค‘๋ณต ๋ฐ์ดํ„ฐ ์ „์†ก

Problem:
- ๊ฑฐ๋ž˜ ๋‚ด์—ญ ์กฐํšŒ ์‹œ ๋งค ๊ฑฐ๋ž˜๋งˆ๋‹ค ๋™์ผํ•œ ์ฑ„๊ถŒ์ž/์ฑ„๋ฌด์ž ์ •๋ณด ์ค‘๋ณต ์ „์†ก
- ๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ์ „์†ก์œผ๋กœ ์ธํ•œ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜
- ์‘๋‹ต ๋ฐ์ดํ„ฐ ํฌ๊ธฐ ์ฆ๊ฐ€

Solution:
- ์‘๋‹ต DTO ๊ตฌ์กฐ ์ตœ์ ํ™”
- ๊ณตํ†ต ์ •๋ณด๋Š” ์ƒ์œ„ ๋ ˆ๋ฒจ์—์„œ ํ•œ ๋ฒˆ๋งŒ ํฌํ•จ
- ๊ฐœ๋ณ„ ๊ฑฐ๋ž˜๋Š” ํ•„์š”ํ•œ ์ •๋ณด๋งŒ ํฌํ•จํ•˜๋Š” ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌ์„ฑ
- ๋ฐ์ดํ„ฐ ์ „์†ก๋Ÿ‰ ๊ฐ์†Œ ๋ฐ ์‘๋‹ต ๊ตฌ์กฐ ๊ฐœ์„ 

3. ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ์‹œ ์˜ˆ์™ธ ์ƒํ™ฉ

Problem:
- ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ์ค‘ ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์–ด๋ ค์›€
- ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ์‹คํŒจ ์‹œ ํ›„์† ์กฐ์น˜ ํ•„์š”
- ํŠธ๋žœ์žญ์…˜ ๊ฒฝ๊ณ„ ์„ค์ • ๋ฌธ์ œ

Solution:
- @Async ๋ฉ”์†Œ๋“œ์— @Transactional ์ ์šฉ
- ์˜ˆ์™ธ ๋ฐœ์ƒ ์‹œ ๋กœ๊น… ๋ฐ ์•Œ๋ฆผ ์ฒ˜๋ฆฌ
- AsyncUncaughtExceptionHandler ๊ตฌํ˜„

๐Ÿ”ฎ ํ–ฅํ›„ ๊ฐœ์„  ๊ณ„ํš

  • ์ฐจ์šฉ์ฆ ์ƒํƒœ ๊ด€๋ฆฌ ๋กœ์ง ๊ณ ๋„ํ™”
  • ์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ ๋„์ž…

About

๐Ÿค– AI ๊ธฐ๋ฐ˜ ์ฐจ์šฉ์ฆ ์ž๋™ ์ƒ์„ฑ & ์—์Šคํฌ๋กœ ๊ธฐ๋ฐ˜ P2P ๋Œ€์ถœ ํ”Œ๋žซํผ

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published