
๐ซ ์์๋ก ๋ฐฐ์ฐ๋ ์คํ๋ง ๊ตฌ์กฐ: "๊ธ์ ์ฃผ๋ฌธ ์์คํ "
๊ตฌ์ฑ์์ํ๋ ์ผํ๊ต ๊ธ์ ๋น์
| Controller (์ปจํธ๋กค๋ฌ) | ์ฌ์ฉ์์ ์์ฒญ์ ๋ฐ์ | ํ์์ด “์ค๋ ์ ์ฌ ๋ญ์์?” ํ๊ณ ๋ฌผ์ด๋ด |
| Service (์๋น์ค) | ์ค์ ์ผ์ ์ฒ๋ฆฌํจ | ๊ธ์์ค ์์ค๋ง๊ฐ “์ค๋์ ๊น์น์ฐ๊ฐ๋ ๋ถ๊ณ ๊ธฐ์ผ~”๋ผ๊ณ ํ์ธ |
| Repository (๋ ํฌ์งํ ๋ฆฌ) | ๋ฐ์ดํฐ๋ฒ ์ด์ค(DB)์ ์ ๊ทผ | ๊ธ์ํ๋ฅผ ๋ณด๊ดํ๊ณ ์๋ ‘๊ธ์ํ ํ์ผ’์์ ์ค๋ ๋ฉ๋ด๋ฅผ ์ฐพ์๋ด |
| Entity (์ํฐํฐ) | DB์ ์ ์ฅ๋๋ ์ง์ง ๋ฐ์ดํฐ ํํ | ๊ธ์ํ์ “11์ 4์ผ - ๊น์น์ฐ๊ฐ, ๋ถ๊ณ ๊ธฐ” ์ด๋ ๊ฒ ์ ํ ์ค์ ๋ฐ์ดํฐ |
| DTO (๋ฐ์ดํฐ ์ ์ก์ฉ) | Controller ↔ Service ๊ฐ ๋ฐ์ดํฐ ์ ๋ฌ์ฉ | ์์ค๋ง๊ฐ ๋ฉ๋ด๋ฅผ ์ข ์ด์ ์จ์ ์ ์๋๊ป ๋ณด์ฌ์ฃผ๋ ์ ๋ฌ ์ชฝ์ง |
| VO (๊ฐ ๊ฐ์ฒด) | ์๋ฏธ ์๋ ๊ฐ๋ง ๋ด๋ ๊ฐ์ฒด | ์: ๊ฐ๊ฒฉ, ์ฃผ์, ๋ ์ง ๊ฐ์ ‘ํ ๋ฉ์ด๋ฆฌ์ ์ ๋ณด’ |
| application.yml | ์ ์ฒด ์ค์ ํ์ผ | “์ค๋์ 8์๋ถํฐ ๊ธ์ ์์, ๋ถ ๋๊ธฐ ์๊ฐ 9์” ๊ฐ์ ์ด์ ๊ท์นํ |
| HomeController | ํํ์ด์ง ๊ฐ์ ๊ธฐ๋ณธ ๊ฒฝ๋ก ์ฒ๋ฆฌ | ํ๊ต ์ ๋ฌธ – “์ด์ ์ค์ธ์!” ์ญํ |
| Messenger (๋ฉ์ ์ ) | ์๋ฒ๋ผ๋ฆฌ, ํน์ ์ค์๊ฐ ๋ํ์ฉ | “์ ์๋, ๋ฐ 3๊ฐ๊ฐ ๋ ์ฃผ๋ฌธํ์ด์!”๋ผ๊ณ ๋ค๋ฅธ ๋ถ์์ ์๋ฆผ ๋ณด๋ด๊ธฐ |

๐ง ์ฝ๊ฒ ๊ธฐ์ตํ๋ ๋ฐฉ๋ฒ
- Controller → “๋ง์ ๋ค์ด์ฃผ๋ ์ฌ๋”
- Service → “์ผ์ ์ฒ๋ฆฌํ๋ ์ฌ๋”
- Repository → “์๋ฃ๋ฅผ ๊บผ๋ด์ค๋ ์ฌ๋”
- Entity → “์ง์ง ๋ฐ์ดํฐ”
- DTO → “๋ฐ์ดํฐ ์ ๋ฌ ์ชฝ์ง”
- VO → “ํ ๋ฉ์ด๋ฆฌ ๊ฐ”
- application.yml → “์ค์ ํ”
- Messenger → “๋ค๋ฅธ ์ฌ๋์๊ฒ ์๋ฆผ ๋ณด๋ด๋ ๋ฉ์ ์ ”
- HomeController → “์ ๊ตฌ(ํํ์ด์ง)”
์ ์ฒด ๊ฐ๋ ์์ฝ
์คํ๋ง(Spring) ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณดํต ๋ค์๊ณผ ๊ฐ์ ๋ ์ด์ด(layer) ๊ตฌ์กฐ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค:
Controller → Service → Repository → Database
↓
DTO/VO/Entity
๊ทธ๋ฆฌ๊ณ application.yml์ ์ค์ ํ์ผ, Messenger๋ HomeController๋ ํน์ ๊ธฐ๋ฅ ์ปจํธ๋กค๋ฌ๋ก ์ดํดํ์๋ฉด ๋ฉ๋๋ค.
๐งฉ ๊ฐ ๊ตฌ์ฑ ์์ ์ญํ ๊ณผ ๊ด๊ณ
1๏ธโฃ Controller (์ปจํธ๋กค๋ฌ)
- ์ญํ : ์ฌ์ฉ์์ ์์ฒญ(Request)์ ๋ฐ์ ์ฒ๋ฆฌํ๊ณ , ์๋ต(Response)์ ๋ฐํํฉ๋๋ค.
- ์: /home, /api/message ๊ฐ์ URL ์์ฒญ์ ๋ฐ์
- ํ๋ฆ:
- ์ฌ์ฉ์๊ฐ ๋ธ๋ผ์ฐ์ ๋ ์ฑ์์ ์์ฒญ → ์ปจํธ๋กค๋ฌ์์ ๋ฐ์
- ์์ฒญ ๋ฐ์ดํฐ๋ฅผ DTO๋ก ๋งคํ
- Service ํธ์ถ → ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ์๋ต์ผ๋ก ๋ฐํ

2๏ธโฃ DTO (Data Transfer Object)
- ์ญํ : ํด๋ผ์ด์ธํธ ↔ ์๋ฒ ๊ฐ ๋ฐ์ดํฐ ์ ๋ฌ์ฉ ๊ฐ์ฒด
- ํน์ง: DB ์ํฐํฐ(Entity)์๋ ๋ณ๋.
- ์ด์ : ๋ณด์ ๋ฐ ์ ์ง๋ณด์๋ฅผ ์ํด DB ๋ชจ๋ธ์ ๊ทธ๋๋ก ๋ ธ์ถํ์ง ์๊ธฐ ์ํจ.

3๏ธโฃ VO (Value Object)
- ์ญํ : “๊ฐ ๊ทธ ์์ฒด๋ก ์๋ฏธ๊ฐ ์๋ ๊ฐ์ฒด”
- ์์: Money, Address, Email ๊ฐ์ ๋ถ๋ณ ๊ฐ์ฒด
- ์ฐจ์ด์ : DTO๋ “๋ฐ์ดํฐ ์ ๋ฌ์ฉ”, VO๋ “์๋ฏธ ์๋ ๊ฐ ํํ์ฉ”
4๏ธโฃ Entity
- ์ญํ : ์ค์ DB ํ ์ด๋ธ๊ณผ 1:1 ๋งคํ๋๋ ๊ฐ์ฒด
- ์์: @Entity ์ด๋ ธํ ์ด์ ์ด ๋ถ์ ํด๋์ค
- DTO์์ ์ฐจ์ด: Entity๋ DB์ฉ, DTO๋ ํต์ ์ฉ

5๏ธโฃ Service (์๋น์ค)
- ์ญํ : ๋น์ฆ๋์ค ๋ก์ง์ ์ํํ๋ ๊ณ์ธต
- ํ๋ฆ: ์ปจํธ๋กค๋ฌ๊ฐ ๋ฐ์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ํธ์ถํ๊ณ , ๋ก์ง์ ์ํํ ํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํฉ๋๋ค.

6๏ธโฃ Repository (๋ ํฌ์งํ ๋ฆฌ)
- ์ญํ : ์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ๋ ๊ณ์ธต
- ํ๋ฆ: Service → Repository → DB

7๏ธโฃ Messenger (๋ฉ์ ์ , ์: Kafka, RabbitMQ, WebSocket)
- ์ญํ : ์๋ฒ ๊ฐ ๋ฉ์์ง ์ก์์ or ์ค์๊ฐ ํต์ ์ฒ๋ฆฌ
- ์์น: Service ๋จ ๋๋ ๋ณ๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ์์ ์ฌ์ฉ๋จ
๐ํ๋ฆ ์์
Controller → Service → (DB ์ ์ฅ + ๋ฉ์์ง ๋ฐํ)
8๏ธโฃ HomeController
- ์ญํ : ํ ํ๋ฉด์ด๋ ๊ธฐ๋ณธ ๊ฒฝ๋ก(/) ์ฒ๋ฆฌ์ฉ ์ปจํธ๋กค๋ฌ
- ๋ณดํต: ํ์ด์ง ๋ฐํ(view) ํน์ ์ด๊ธฐ ๋ฐ์ดํฐ ์ ์ก ๋ด๋น
9๏ธโฃ application.yml
- ์ญํ : ์ ํ๋ฆฌ์ผ์ด์ ์ ์ญ ์ค์ ํ์ผ
- ์: DB ์ฐ๊ฒฐ ์ ๋ณด, ํฌํธ ๋ฒํธ, ๋ฉ์์ง ๋ธ๋ก์ปค ์ค์ , ๋ก๊ทธ ์ค์ ๋ฑ

๐ ์ ์ฒด ํ๋ฆ ์์ฝ ๋ค์ด์ด๊ทธ๋จ
[Client] ↓ (HTTP ์์ฒญ) [Controller] ↓ (DTO ๋ณํ) [Service] ↓ (๋น์ฆ๋์ค ๋ก์ง) [Repository] ↓ [Database] ↑ (Entity ์ ์ฅ/์กฐํ) [Service] ↑ [Controller] ↑ (์๋ต DTO) [Client]

โ๏ธ application.yml์ ์ด ๋ชจ๋ ๋์์ ์ํ ํ๊ฒฝ ์ค์ ์ ๊ด๋ฆฌํฉ๋๋ค.
๐ฌ Messenger๋ ์ค์๊ฐ ํต์ ์ด๋ ๋น๋๊ธฐ ๋ฉ์์ง ์ ๋ฌ์ฉ์ผ๋ก ์ค๊ฐ์ ์ถ๊ฐ๋ ์ ์์ต๋๋ค.
๐ซ ์์๋ก ๋ฐฐ์ฐ๋ ์คํ๋ง ๊ตฌ์กฐ: "๊ธ์ ์ฃผ๋ฌธ ์์คํ "
๊ตฌ์ฑ์์ํ๋ ์ผํ๊ต ๊ธ์ ๋น์
| Controller (์ปจํธ๋กค๋ฌ) | ์ฌ์ฉ์์ ์์ฒญ์ ๋ฐ์ | ํ์์ด “์ค๋ ์ ์ฌ ๋ญ์์?” ํ๊ณ ๋ฌผ์ด๋ด |
| Service (์๋น์ค) | ์ค์ ์ผ์ ์ฒ๋ฆฌํจ | ๊ธ์์ค ์์ค๋ง๊ฐ “์ค๋์ ๊น์น์ฐ๊ฐ๋ ๋ถ๊ณ ๊ธฐ์ผ~”๋ผ๊ณ ํ์ธ |
| Repository (๋ ํฌ์งํ ๋ฆฌ) | ๋ฐ์ดํฐ๋ฒ ์ด์ค(DB)์ ์ ๊ทผ | ๊ธ์ํ๋ฅผ ๋ณด๊ดํ๊ณ ์๋ ‘๊ธ์ํ ํ์ผ’์์ ์ค๋ ๋ฉ๋ด๋ฅผ ์ฐพ์๋ด |
| Entity (์ํฐํฐ) | DB์ ์ ์ฅ๋๋ ์ง์ง ๋ฐ์ดํฐ ํํ | ๊ธ์ํ์ “11์ 4์ผ - ๊น์น์ฐ๊ฐ, ๋ถ๊ณ ๊ธฐ” ์ด๋ ๊ฒ ์ ํ ์ค์ ๋ฐ์ดํฐ |
| DTO (๋ฐ์ดํฐ ์ ์ก์ฉ) | Controller ↔ Service ๊ฐ ๋ฐ์ดํฐ ์ ๋ฌ์ฉ | ์์ค๋ง๊ฐ ๋ฉ๋ด๋ฅผ ์ข ์ด์ ์จ์ ์ ์๋๊ป ๋ณด์ฌ์ฃผ๋ ์ ๋ฌ ์ชฝ์ง |
| VO (๊ฐ ๊ฐ์ฒด) | ์๋ฏธ ์๋ ๊ฐ๋ง ๋ด๋ ๊ฐ์ฒด | ์: ๊ฐ๊ฒฉ, ์ฃผ์, ๋ ์ง ๊ฐ์ ‘ํ ๋ฉ์ด๋ฆฌ์ ์ ๋ณด’ |
| application.yml | ์ ์ฒด ์ค์ ํ์ผ | “์ค๋์ 8์๋ถํฐ ๊ธ์ ์์, ๋ถ ๋๊ธฐ ์๊ฐ 9์” ๊ฐ์ ์ด์ ๊ท์นํ |
| HomeController | ํํ์ด์ง ๊ฐ์ ๊ธฐ๋ณธ ๊ฒฝ๋ก ์ฒ๋ฆฌ | ํ๊ต ์ ๋ฌธ – “์ด์ ์ค์ธ์!” ์ญํ |
| Messenger (๋ฉ์ ์ ) | ์๋ฒ๋ผ๋ฆฌ, ํน์ ์ค์๊ฐ ๋ํ์ฉ | “์ ์๋, ๋ฐ 3๊ฐ๊ฐ ๋ ์ฃผ๋ฌธํ์ด์!”๋ผ๊ณ ๋ค๋ฅธ ๋ถ์์ ์๋ฆผ ๋ณด๋ด๊ธฐ |

๐ง ์ฝ๊ฒ ๊ธฐ์ตํ๋ ๋ฐฉ๋ฒ
- Controller → “๋ง์ ๋ค์ด์ฃผ๋ ์ฌ๋”
- Service → “์ผ์ ์ฒ๋ฆฌํ๋ ์ฌ๋”
- Repository → “์๋ฃ๋ฅผ ๊บผ๋ด์ค๋ ์ฌ๋”
- Entity → “์ง์ง ๋ฐ์ดํฐ”
- DTO → “๋ฐ์ดํฐ ์ ๋ฌ ์ชฝ์ง”
- VO → “ํ ๋ฉ์ด๋ฆฌ ๊ฐ”
- application.yml → “์ค์ ํ”
- Messenger → “๋ค๋ฅธ ์ฌ๋์๊ฒ ์๋ฆผ ๋ณด๋ด๋ ๋ฉ์ ์ ”
- HomeController → “์ ๊ตฌ(ํํ์ด์ง)”
1. โ๏ธ ์ปจํธ๋กค๋ฌ (Controller)
- ์ญํ : ์ฌ์ฉ์์ ์์ฒญ(Request)์ ๋ฐ์๋ค์ด๊ณ ์๋ต(Response)์ ์ฒ๋ฆฌํ๋ ์ต์์ ์ง์ ์ ์ ๋๋ค.
- ์ฃผ์ ์ฑ
์:
- HTTP ์์ฒญ(GET, POST, PUT, DELETE ๋ฑ)์ ์ ์ ํ ๋งคํํ๊ณ ์์ ํฉ๋๋ค.
- ์์ฒญ์ ์ ํจ์ฑ์ ๊ฐ๋จํ ๊ฒ์ฆํ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฅผ DTO(Data Transfer Object) ๋ฑ์ ํํ๋ก ๋ณํํฉ๋๋ค.
- ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง ์ฒ๋ฆฌ๋ ์๋น์ค ๊ณ์ธต์ ์์ํฉ๋๋ค.
- ์๋น์ค ๊ณ์ธต์ผ๋ก๋ถํฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ ์ฌ์ฉ์์๊ฒ HTTP ์๋ต์ผ๋ก ๋ฐํํฉ๋๋ค.
- ํน์ง: ์ ํ๋ฆฌ์ผ์ด์ ์ ์ธ๋ถ ์ธํฐํ์ด์ค ์ญํ ์ ํ๋ฉฐ, ๊ฐ๋ฒผ์ด ์ญํ (Thin Controller)์ ์ ์งํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
2. ๐ก๏ธ ์๋น์ค (Service)
- ์ญํ : ํต์ฌ์ ์ธ ๋น์ฆ๋์ค ๋ก์ง(Business Logic)์ ์ฒ๋ฆฌํ๋ ๊ณ์ธต์ ๋๋ค.
- ์ฃผ์ ์ฑ
์:
- ๋ฐ์ดํฐ์ ๊ฐ๊ณต, ๊ณ์ฐ, ๊ท์น ์ ์ฉ ๋ฑ ์ค์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ํํด์ผ ํ๋ ์์ ์ ์ฒ๋ฆฌํฉ๋๋ค.
- ์ฌ๋ฌ ๋ ํฌ์งํ ๋ฆฌ(Repository)๋ฅผ ์กฐํฉํ์ฌ ๋ณต์กํ ํธ๋์ญ์ ์ ๊ด๋ฆฌํ๊ฑฐ๋ ์ฌ๋ฌ ์ํฐํฐ๋ฅผ ์กฐ์ํ๋ ์์ ์ ์ํํฉ๋๋ค.
- ์ปจํธ๋กค๋ฌ๋ก๋ถํฐ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ , ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์ปจํธ๋กค๋ฌ์ ๋ฐํํฉ๋๋ค.
- ํน์ง: ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฅ๋ถ์ด๋ฉฐ, ์ปจํธ๋กค๋ฌ์ ๋ ํฌ์งํ ๋ฆฌ ์ฌ์ด์์ ์ค์ฌ์ ์ญํ ์ ํฉ๋๋ค. ๋๋ถ๋ถ์ '์'์ '์ด๋ป๊ฒ'์ ๋ํ ๋ก์ง์ด ์ฌ๊ธฐ์ ํฌํจ๋ฉ๋๋ค.
3. ๐ ๋ ํฌ์งํ ๋ฆฌ (Repository)
- ์ญํ : ๋ฐ์ดํฐ๋ฒ ์ด์ค(DB)์์ ํต์ ์ ์ ๋ดํ๋ ๊ณ์ธต์ ๋๋ค.
- ์ฃผ์ ์ฑ
์:
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ์ฌ CRUD (Create, Read, Update, Delete) ์์ ์ ์ํํฉ๋๋ค.
- SQL ์ฟผ๋ฆฌ๋ ORM(Object-Relational Mapping) ๋ฉ์๋ ๋ฑ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์กฐํ, ์ ์ฅ, ์์ , ์ญ์ ํฉ๋๋ค.
- ์๋น์ค ๊ณ์ธต์๋ ๊ฐ์ฒด ์งํฅ์ ์ธ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ์ฌ, ์๋น์ค ๊ณ์ธต์ด ๋ฐ์ดํฐ ์ ๊ทผ ๋ฐฉ์(DB ์ข ๋ฅ ๋ฑ)์ ๋ํด ์ ํ์ ์๋๋ก ์ถ์ํํฉ๋๋ค.
- ํน์ง: ๋ฐ์ดํฐ ์์์ฑ(Persistence)์ ์ฒ๋ฆฌํ๋ฉฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ ๊ธฐ์ ์ด ๋ณ๊ฒฝ๋์ด๋ ์๋น์ค ๊ณ์ธต์ ์ํฅ์ ์ต์ํํฉ๋๋ค.
4. ๐ ์ํฐํฐ (Entity)
- ์ญํ : ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ๊ณผ 1:1๋ก ๋งคํ๋๋ ๊ฐ์ฒด์ ๋๋ค. ๋ฐ์ดํฐ ์์ฒด๋ฅผ ํํํฉ๋๋ค.
- ์ฃผ์ ์ฑ
์:
- ๋ฐ์ดํฐ์ ๊ตฌ์กฐ๋ฅผ ์ ์ํฉ๋๋ค (ํ๋, ๋ฐ์ดํฐ ํ์ ).
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ **๋ ์ฝ๋(row)**๋ฅผ ๊ฐ์ฒด ํํ๋ก ๋ํ๋ ๋๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๋ ์ต์ํ์ ๋ก์ง(์: ๊ฐ ๊ฒ์ฆ)์ ํฌํจํ ์ ์์ผ๋, ๋ณต์กํ ๋น์ฆ๋์ค ๋ก์ง์ ์๋น์ค ๊ณ์ธต์ ๋๋ ๊ฒ์ด ์ผ๋ฐ์ ์ ๋๋ค.
- ํน์ง: ์ ํ๋ฆฌ์ผ์ด์ ๋ด์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํฐ ๋ชจ๋ธ์ด๋ฉฐ, ์์์ฑ ์ปจํ ์คํธ(Persistence Context, ORM ์ฌ์ฉ ์)์ ์ํด ๊ด๋ฆฌ๋ฉ๋๋ค.
๐บ๏ธ ๋ฐ์ดํฐ ํ๋ฆ ์์ฝ
์ด ๋ค ๊ฐ์ง ๊ตฌ์ฑ ์์๋ ๋ณดํต ๋ค์๊ณผ ๊ฐ์ ์์๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
- ์ฌ์ฉ์ ์์ฒญ (HTTP) $\rightarrow$ ์ปจํธ๋กค๋ฌ (์์ฒญ ์์ ๋ฐ ์ ํจ์ฑ ๊ฒ์ฆ)
- ์ปจํธ๋กค๋ฌ $\rightarrow$ ์๋น์ค (๋น์ฆ๋์ค ๋ก์ง ์ฒ๋ฆฌ ์์)
- ์๋น์ค $\rightarrow$ ๋ ํฌ์งํ ๋ฆฌ (๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ ์์ฒญ)
- ๋ ํฌ์งํ ๋ฆฌ $\rightarrow$ ์ํฐํฐ (DB์์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๊ฑฐ๋ ์ ์ฅํ ๋ ์ฌ์ฉ)
- ๋ ํฌ์งํ ๋ฆฌ $\rightarrow$ ์๋น์ค (์ํฐํฐ ๊ฐ์ฒด ๋ฐํ)
- ์๋น์ค $\rightarrow$ ์ปจํธ๋กค๋ฌ (์ต์ข ์ฒ๋ฆฌ ๊ฒฐ๊ณผ ๋ฐํ)
- ์ปจํธ๋กค๋ฌ $\rightarrow$ ์ฌ์ฉ์ ์๋ต (JSON/HTML ๋ฑ)
'Project ESG+AI > Tech Basics' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| 20์ผ์ฐจ. IT ๊ฐ๋ ์ ๋ฆฌ (1) | 2025.11.05 |
|---|---|
| 19์ผ์ฐจ. IT ๊ฐ๋ ์ ๋ฆฌ (0) | 2025.11.04 |
| 18์ผ์ฐจ. IT ๊ฐ๋ ์ ๋ฆฌ (0) | 2025.11.03 |
| 17์ผ์ฐจ. IT ๊ฐ๋ ์ ๋ฆฌ (0) | 2025.10.31 |
| 16์ผ์ฐจ. IT ๊ฐ๋ ์ ๋ฆฌ (0) | 2025.10.30 |