
Maven์ Group ID์ Artifact ID ๊ฐ๋ ์ ๋ฆฌ
Maven์์ ๋ํ๋์๋ฅผ ๊ตฌ์ฑํ๋ ํต์ฌ ์์๋ Group ID, Artifact ID, Version์ ๋๋ค. ์ด ์ค Group ID์ Artifact ID๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์๋ณํ๋ “์ฃผ์ ์ฒด๊ณ”๋ผ๊ณ ์ดํดํ๋ฉด ๊ฐ์ฅ ํธํฉ๋๋ค.
๐งฉ Group ID๋?
Group ID๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(ํ๋ก์ ํธ)๊ฐ ์ํ ์กฐ์ง, ํ์ฌ, ํน์ ๋๋ฉ์ธ ๊ตฌ์กฐ๋ฅผ ๋ํ๋
๋๋ค.
์:
- org.springframework.boot
- com.fasterxml.jackson.core
โ ์ฝ๊ฒ ์ดํดํ๊ธฐ
ํ๊ตญ ์ฃผ์ ์ฒด๊ณ๋ก ๋น์ ํ๋ฉด
- ์/๊ตฐ/๊ตฌ์ฒ๋ผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ํ “ํฐ ๊ทธ๋ฃน”์ ๋ํ๋ด๋ ๊ฐ๋ ์ ๋๋ค.
- ํ์ฌ๋ ์กฐ์ง ๋จ์๋ก ๋ฌถ์ด์ ์ถฉ๋์ ๋ฐฉ์งํ๋ ค๋ ๋ชฉ์ ์ด ์์ต๋๋ค.
๐ฆ Artifact ID๋?
Artifact ID๋ ์ค์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(๋ชจ๋)์ ์ด๋ฆ์
๋๋ค.
์:
- spring-boot-starter-web
- jackson-databind
โ ์ฝ๊ฒ ์ดํดํ๊ธฐ
์ฃผ์๋ก ์น๋ฉด
- ๋๋ก๋ช /๊ฑด๋ฌผ ์ด๋ฆ์ ํด๋นํฉ๋๋ค.
- ๊ฐ์ Group ID ์๋์ ์ฌ๋ฌ ๊ฐ์ Artifact ID๊ฐ ์กด์ฌํ ์ ์์ต๋๋ค.
๐ Group ID + Artifact ID ๊ด๊ณ
๋์ ํฉ์น๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์กฐ๊ฐ ๋ฉ๋๋ค:
์ด ์ ์ฒด๊ฐ “ํน์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ์ผํ๊ฒ ์๋ณํ๋ ID” ์ญํ ์ ํฉ๋๋ค.
โญ ๊ทธ๋๋ค(Gradle)์์๋ ์ด๋ป๊ฒ ๋ถ๋ฅด๋?
Gradle๋ Maven๊ณผ ๋์ผํ ๊ฐ๋ ์ ์ฌ์ฉํ์ง๋ง, ํ๊ธฐ ๋ฐฉ์์ด ๋ค๋ฆ ๋๋ค.
๐ Maven ๋ฐฉ์(XML)
๐ Gradle ๋ฐฉ์(Groovy DSL)
๐ Gradle ๋ฐฉ์(Kotlin DSL)
โ Gradle์์ ๋ถ๋ฅด๋ ์ด๋ฆ
Gradle์์๋ ์ด๊ฒ์ **“GAV ์ขํ(GAV coordinates)”**๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ
- Group
- Artifact
- Version
์ ์ฝ์์ ๋๋ค.
๋๋ ๋จ์ํ Dependency Notation(์์กด์ฑ ํ๊ธฐ) ๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
์ฆ, Gradle๋ ์ฌ์ค Group ID, Artifact ID ๊ฐ๋
์ ๊ทธ๋๋ก ์ฌ์ฉํ๋ฉฐ
ํ๊ธฐ๋ฒ๋ง group:artifact:version ํํ๋ก ๋ฐ๋ ๊ฒ์
๋๋ค.
๐ ์์ฝ
Maven
- Group ID: ์กฐ์ง/๋๋ฉ์ธ
- Artifact ID: ํ๋ก์ ํธ(๋ชจ๋) ์ด๋ฆ
→ XML ํ๊ทธ๋ก ๊ฐ๊ฐ ๋ช ์
Gradle
- ๊ฐ๋ ์ ๋์ผ
- 'group:artifact:version' ํํ๋ก ํ ์ค์ ํ๊ธฐ
- “Dependency Notation” ํน์ “GAV ์ขํ”๋ผ๊ณ ๋ถ๋ฆ
๋ค์์คํ์ด์ค(namespace)์ ์ญํ ๊ณผ ์๋ฏธ
ํ๋ก๊ทธ๋๋ฐ์ด๋ ์ค์ ํ์ผ์์ **๋ค์์คํ์ด์ค(namespace)**๋ผ๋ ์ฉ์ด๊ฐ ๋์ค๋ฉด, ๋ณดํต “์ด๋ฆ๋ค์ด ์๋ก ์ถฉ๋ํ์ง ์๋๋ก ๊ตฌ๋ถํ๋ ๊ณต๊ฐ(๋ฒ์)”์ ์๋ฏธํฉ๋๋ค.
์ฝ๊ฒ ๋งํ๋ฉด ๋๋ช
์ด์ธ์ ๊ตฌ๋ถํ๊ธฐ ์ํ ์ฑ(ๅง) ๊ฐ์ ๊ฐ๋
์ด๋ผ๊ณ ์ดํดํ์๋ฉด ๋ฉ๋๋ค.
๐งฉ ๋ค์์คํ์ด์ค๊ฐ ํ์ํ ์ด์
1) ์ด๋ฆ ์ถฉ๋ ๋ฐฉ์ง
๋ค๋ฅธ ๊ณณ์์ ๋์ผํ ์ด๋ฆ(ํด๋์ค, ํจ์, XML ํ๊ทธ ๋ฑ)์ ์ฌ์ฉํด๋
- ์ด๋ ๊ทธ๋ฃน์ ์ํ ๊ฒ์ธ์ง
- ์ด๋ค ์ญํ ์ ๊ฐ์ง ๊ฒ์ธ์ง
์ ๊ตฌ๋ถํ ์ ์๊ฒ ํฉ๋๋ค.
์:
- com.example.User
- com.company.project.User
๋ ํด๋์ค ์ด๋ฆ์ด User์ฌ๋, ๋ค์์คํ์ด์ค๊ฐ ๋ฌ๋ผ์ ๋ฌธ์ ์์.
๐งญ ๋ค์์คํ์ด์ค์ ์ค์ ์ญํ
โ ๋ช ํํ ๋ถ๋ฅ
์ฝ๋๋ ์ค์ ํ์ผ์ ์ฒด๊ณ์ ์ผ๋ก ์ ๋ฆฌํ๊ณ , ๋ฌด์ธ๊ฐ๊ฐ “์ด๋์ ์ํ๋์ง” ์๋ ค์ค๋๋ค.
โก ์ค์ฝํ ์ ๊ณต
“์ด ์ด๋ฆ์ ์ด ์์ญ(scope)์์๋ง ์๋ฏธ๋ฅผ ๊ฐ์ง๋ค”๋ ๊ฒ์ ๋ช ์ํฉ๋๋ค.
โข ์ถฉ๋ ํผํ๊ธฐ
์ฌ๋ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ชจ๋์์ ๊ฐ์ ์ด๋ฆ์ ์จ๋
๋ค์์คํ์ด์ค๊ฐ ๋ค๋ฅด๋ฉด ๋
๋ฆฝ์ ์ผ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
๐งฑ ์์๋ก ์ดํดํ๊ธฐ
๐ฉ XML(Spring, Maven ๋ฑ)
XML์์ ๋ค์์คํ์ด์ค๋ ๋ณดํต URI ํํ๋ก ๋์ค๋ฉฐ,
ํด๋น ํ๊ทธ๊ฐ ์ด๋ค ์คํค๋ง๋ฅผ ๋ฐ๋ฅด๋์ง ์๋ ค์ค๋๋ค.
์ฌ๊ธฐ์
- default beans ํ๊ทธ๋ Spring Bean ์ค์ ์
- context:... ํ๊ทธ๋ Context ๊ธฐ๋ฅ์
ํํํ๋๋ก ๊ตฌ๋ถํ๋ ์ญํ .
๐ฆ Java ํจํค์ง
์ฌ๊ธฐ์ com.example.service๊ฐ ๋ค์์คํ์ด์ค ์ญํ ์ ํฉ๋๋ค.
๐จ Kotlin / Swift / C#์ namespace ๊ตฌ๋ฌธ
๊ฐ ์ธ์ด์์ ๋น์ทํ ์ค์ฝํ ๊ตฌ๋ถ ์ญํ ์ ํฉ๋๋ค.
๐ ํ ์ค ์์ฝ
๋ค์์คํ์ด์ค๋ “์ด๋ฆ์ ์ฒด๊ณ์ ์ผ๋ก ๊ตฌ๋ถํ๋ ์ฃผ์ ์ฒด๊ณ”๋ก, ์ถฉ๋ ๋ฐฉ์ง์ ๊ตฌ์กฐํ๋ฅผ ์ํ ํต์ฌ ๊ฐ๋ ์ ๋๋ค.
## ๐ ๋ค์์คํ์ด์ค(namespace)์ ์ปจํ ์คํธ(context)์ ๊ด๊ณ
๋ ์ฉ์ด๋ ๋น์ทํ ๋๋์ด์ง๋ง ์ญํ ์ ์์ ํ ๋ค๋ฆ ๋๋ค.
๐งฉ 1. ๋ค์์คํ์ด์ค = ์ด๋ฆ์ ๊ตฌ๋ถํ๋ ‘์ฃผ์ ์ฒด๊ณ’
- ๋์ผํ ์ด๋ฆ์ ์์๊ฐ ์ฌ๋ฌ ๊ณณ์์ ๋ฑ์ฅํด๋
“์ด๋ ๊ทธ๋ฃน์ ์ํ ๊ฒ์ธ์ง”๋ฅผ ๋ช ํํ ํด์ฃผ๋ ์ญํ - ์ฆ, ์ด๋ฆ ์ถฉ๋์ ๋ง๋ ์ฅ์น
์์
- Java ํจํค์ง: com.example.project
- XML ์คํค๋ง URI
- Kotlin, C#, Swift์ namespace ํค์๋
๐ 2. ์ปจํ ์คํธ(context) = ์ํฉ·ํ๊ฒฝ·๋งฅ๋ฝ ๊ทธ ์์ฒด
์ปจํ ์คํธ๋ผ๋ ๋จ์ด๋ “ํ์ฌ ์ด๋ค ํ๊ฒฝ, ์ํ, ๋งฅ๋ฝ์์ ๋์ํ๋๊ฐ”๋ฅผ ์๋ฏธํฉ๋๋ค.
IT์์๋ ํนํ ๋ค์์ฒ๋ผ ์ฐ์ ๋๋ค:
โ ์คํ ์ปจํ ์คํธ
ํ๋ก๊ทธ๋จ์ด ์ด๋ค ๋ณ์๋ฅผ ์๊ณ ์๊ณ ์ด๋ค ์ํ์ธ์ง ๋ํ๋ด๋ ์ ๋ณด.
โ ์น ์ปจํ ์คํธ(Spring)
Bean์ด ์ด๋ค ํ๊ฒฝ์์ ๋ก๋๋๊ณ ๊ด๋ฆฌ๋๋์ง ํํํ๋ “์ดํ๋ฆฌ์ผ์ด์ ํ๊ฒฝ”.
โ DI ์ปจํ ์คํธ
์คํ๋ง์ ApplicationContext์ฒ๋ผ
- ์ด๋ค ๋น์ด ๋ฑ๋ก๋์ด ์๊ณ
- ์ด๋ค ์ค์ ์ ๋ก๋ํ๋ฉฐ
- ์ด๋ค ํ๋กํผํฐ๊ฐ ์ ์ฉ๋๋์ง
๋ฅผ ๋ํ๋ด๋ “๋ฐํ์ ์ปจํ ์ด๋”.
๐ 3. ๋ ๊ฐ๋ ์ ์ง์ ์ ์ธ ์ฐ๊ฒฐ์ ์์ (์ญํ ์ด ์์ ํ ๋ค๋ฆ)
ํ์ง๋ง ๊ฐ์ XML ๋ฌธ์์์ ํจ๊ป ๋์ค๋ ๊ฒฝ์ฐ๊ฐ ์์ด
ํท๊ฐ๋ฆด ์ ์์ต๋๋ค.
์)
์ฌ๊ธฐ์:
- xmlns:context="..." → ๋ค์์คํ์ด์ค
→ ์ด๋ค ํ๊ทธ๋ฅผ ์ฌ์ฉํ ์ ์๋์ง(์คํค๋ง)๋ฅผ ๊ฒฐ์ - <context:component-scan> → ์ปจํ
์คํธ ๊ด๋ จ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ํ๊ทธ
→ ์คํ๋ง์ ApplicationContext ์ค์ ์ ์ํฅ์ ์ค
์ด ๋๋ฌธ์
**“context ๋ค์์คํ์ด์ค”**์
“context ๊ธฐ๋ฅ(ApplicationContext)”
์ด ํ๊ณณ์์ ๋ฑ์ฅํ๋ฉฐ ํท๊ฐ๋ฆด ์ ์์.
โญ ์ฝ๊ฒ ์์ฝํ๋ฉด
- ๋ค์์คํ์ด์ค = ํ๊ทธ, ํด๋์ค, ํจ์ ์ด๋ฆ์ด ์ด๋์ ์ํ๋์ง ๊ตฌ๋ถํ๋ ‘์ด๋ฆ์ ์ฃผ์’
- ์ปจํ ์คํธ = ํ๋ก๊ทธ๋จ์ด ์ด๋ค ํ๊ฒฝ/์ํ/๋งฅ๋ฝ์์ ๋์ํ๋์ง์ ๋ํ ์ ๋ณด
๐ ๋์ ์ด๋ฆ์ด ๋น์ทํด ๋ณด์ด์ง๋ง ์ ํ ๋ค๋ฅธ ์์ญ์ ๊ฐ๋ ์ ๋๋ค.
ํด๋๊น์ง๋ฉด ํจํค์ง? ๋ฆฌ
1๏ธโฃ ํจํค์ง (Package)
- ์ ์: ๊ด๋ จ ์๋ ํด๋์ค, ์ธํฐํ์ด์ค, ์๋ธํจํค์ง ๋ฑ์ ๋ฌถ์ด ๋์ ํด๋ ๋จ์์ ๋ ผ๋ฆฌ์ ๊ทธ๋ฃน.
- ๋ชฉ์ : ์ด๋ฆ ์ถฉ๋ ๋ฐฉ์ง, ์ฝ๋ ๊ตฌ์กฐํ, ๊ด๋ฆฌ ํธ์.
- ์ธ์ด๋ณ ์:
- Java: java.util, com.example.project
- Python: os, sys, numpy (numpy๋ ํจํค์ง ์์ ์ฌ๋ฌ ๋ชจ๋์ด ์์)
- ํน์ง:
- ๋จ์ํ ์ฝ๋๋ฅผ ๊ตฌ์กฐํํ๋ ์ญํ
- ์ค์ค๋ก ์คํ๋์ง๋ ์์
- ๋ค๋ฅธ ์ฝ๋์์ importํด์ ์ฌ์ฉ
2๏ธโฃ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (Library)
- ์ ์: ๊ฐ๋ฐ์๊ฐ ์ฌ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ฅ๋ค์ ๋ชจ์. (์ฝ๋ + ์๋ฃ + API)
- ๋ชฉ์ : ๋ฐ๋ณต์ ์ธ ์ฝ๋๋ฅผ ์ง์ ๋ง๋ค ํ์ ์์ด ๊ธฐ๋ฅ ํ์ฉ.
- ์ธ์ด๋ณ ์:
- Java: Apache Commons, Gson
- Python: NumPy, Pandas, Requests
- ํน์ง:
- ์ด๋ฏธ ๋ง๋ค์ด์ง ๊ธฐ๋ฅ์ ์ ๊ณต
- ์คํ ๊ฐ๋ฅํ ์ฝ๋๊ฐ ํฌํจ๋ ์ ์์
- ์ค์น/์ถ๊ฐ ํ ํ๋ก์ ํธ์์ ํธ์ถํด์ ์ฌ์ฉ
3๏ธโฃ ํต์ฌ ์ฐจ์ด
| ๋ชฉ์ | ์ฝ๋ ๊ตฌ์กฐํ, ๋ค์์คํ์ด์ค ๊ด๋ฆฌ | ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๊ธฐ๋ฅ ์ ๊ณต |
| ๊ตฌ์ฑ | ํด๋์ค, ๋ชจ๋, ์๋ธํจํค์ง | ์ฌ๋ฌ ํจํค์ง + API + ์ฝ๋ |
| ์คํ | ์์ฒด ์คํ ๋ถ๊ฐ | ๊ธฐ๋ฅ ํธ์ถ ๊ฐ๋ฅ |
| ์์ | java.util, os | NumPy, Gson |
๐ก ์ฝ๊ฒ ๊ธฐ์ตํ๋ ๋ฐฉ๋ฒ:
- ํจํค์ง = ์ฝ๋ ์ ๋ฆฌํจ
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ = ์ด๋ฏธ ๋ง๋ค์ด์ง ๋๊ตฌ์์



*@Component**์ **@Transactional**์ ์๋ก ๋ค๋ฅธ ์ญํ ์ ํ๊ณ , ๋์ํ๋ **๋จ๊ณ(๋ผ์ดํ์ฌ์ดํด)**๋ ๋ค๋ฆ ๋๋ค. ๋จ๊ณ๋ณ๋ก ์ฐจ๊ทผ์ฐจ๊ทผ ์ค๋ช ํ ๊ฒ์.
1๏ธโฃ @Component์ ๋จ๊ณ (์คํ๋ง Bean ๋ฑ๋ก๊ณผ ๊ด๋ฆฌ)
@Component๋ ์คํ๋ง์์ Bean์ผ๋ก ๋ฑ๋ก๋ ์ ์๋ ๊ฐ์ฒด์์ ํ์ํฉ๋๋ค.
์คํ๋ง์ ์ปดํฌ๋ํธ๋ฅผ ์ปจํ
์ด๋ ์์์ ๊ด๋ฆฌํฉ๋๋ค.
๋์ ๋จ๊ณ:
- ์ปดํฌ๋ํธ ์ค์บ (Component Scan)
- ์คํ๋ง์ด ์ง์ ๋ ํจํค์ง ์์์ @Component, @Service, @Repository, @Controller ๋ฑ์ ์ฐพ์๋ ๋๋ค.
- ์: @Component๊ฐ ๋ถ์ MyService ํด๋์ค ๋ฐ๊ฒฌ
- Bean ์ ์ ์์ฑ
- ๋ฐ๊ฒฌ๋ ํด๋์ค ์ ๋ณด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก BeanDefinition ์์ฑ
- Bean ์ธ์คํด์ค ์์ฑ
- ์คํ๋ง์ด ํด๋์ค์ ์์ฑ์ ํธ์ถ๋ก ๊ฐ์ฒด๋ฅผ ๋ง๋ญ๋๋ค.
- ์์กด์ฑ ์ฃผ์
(Dependency Injection)
- ์์ฑ๋ Bean์ ํ๋/์์ฑ์/Setter์ ๋ค๋ฅธ Bean์ ์ฃผ์
- Bean ์ด๊ธฐํ
- @PostConstruct๋ ์ด๊ธฐํ ๋ฉ์๋ ํธ์ถ ๊ฐ๋ฅ
- Bean ์ฌ์ฉ
- ์คํ๋ง ์ปจํ ์ด๋์์ ํ์ํ ๋ getBean() ํน์ ์๋ ์ฃผ์ (@Autowired)์ผ๋ก ์ฌ์ฉ
2๏ธโฃ @Transactional์ ๋จ๊ณ (ํธ๋์ญ์ ๊ด๋ฆฌ)
@Transactional์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํธ๋์ญ์
์ ์ฒ๋ฆฌํ ๋ ์ฌ์ฉํฉ๋๋ค.
์ฃผ๋ก ์๋น์ค ๊ณ์ธต์ ๋ถ์ฌ DB ์์
์ ์์์ ์ผ๋ก ์ฒ๋ฆฌํ๊ฒ ํฉ๋๋ค.
๋์ ๋จ๊ณ:
- ํ๋ก์ ์์ฑ
- ์คํ๋ง AOP๊ฐ @Transactional์ด ๋ถ์ Bean์ ํ๋ก์ ๊ฐ์ฒด๋ก ๊ฐ์๋๋ค.
- ์ค์ Bean ํธ์ถ ์ /ํ์ ํธ๋์ญ์ ์์/์ปค๋ฐ/๋กค๋ฐฑ ๋ก์ง์ด ๋ค์ด๊ฐ๋๋ค.
- ๋ฉ์๋ ํธ์ถ
- ํด๋ผ์ด์ธํธ๊ฐ ์๋น์ค ๋ฉ์๋ ํธ์ถ → ํ๋ก์๊ฐ ๊ฐ๋ก์ฑ
- ํธ๋์ญ์
์์
- ํ๋ก์๊ฐ TransactionManager๋ฅผ ํตํด DB ํธ๋์ญ์ ์์
- ์ค์ ๋น์ฆ๋์ค ๋ก์ง ์ํ
- ์๋น์ค์ ์ค์ ๋ฉ์๋ ํธ์ถ
- ํธ๋์ญ์
์๋ฃ
- ๋ฉ์๋ ์ ์ ์ข ๋ฃ → ์ปค๋ฐ
- ์์ธ ๋ฐ์ → ๋กค๋ฐฑ
- ํธ๋์ญ์
์ข
๋ฃ
- ๋ฆฌ์์ค ํด์ , DB ์ฐ๊ฒฐ ๋ฐํ
๐น ํต์ฌ ์ฐจ์ด
| ์ญํ | Bean์ผ๋ก ๋ฑ๋ก, DI ๊ฐ๋ฅ | DB ํธ๋์ญ์ ๊ด๋ฆฌ |
| ๊ด๋ฆฌ ์ฃผ์ฒด | ์คํ๋ง ์ปจํ ์ด๋ | ์คํ๋ง AOP + TransactionManager |
| ๋จ๊ณ ํต์ฌ | ์ค์บ → ์์ฑ → DI → ์ด๊ธฐํ → ์ฌ์ฉ | ํ๋ก์ → ํธ๋์ญ์ ์์ → ๋ก์ง ์ํ → ์ปค๋ฐ/๋กค๋ฐฑ → ์ข ๋ฃ |
| ์ ์ฉ ์์น | ํด๋์ค | ๋ฉ์๋ ๋๋ ํด๋์ค |
๐ก ํ
- @Component ์์ผ๋ฉด ์คํ๋ง์ด Bean์ผ๋ก ๋ง๋ค์ง ๋ชปํ๋ฏ๋ก @Transactional๋ ์๋ ์ ํจ
- @Service์ @Repository๋ ์ฌ์ค์ @Component + ์๋ฏธ ๋ถ์ฌ(์๋น์ค ๋ ์ด์ด/DB ๋ ์ด์ด)
- @Transactional์ AOP ๊ธฐ๋ฐ ํ๋ก์๋ผ์ ์๊ธฐ ์์ ๋ฉ์๋ ํธ์ถ์ ํธ๋์ญ์ ์ ์ฉ ์ ๋จ
Next.js๋ React ๊ธฐ๋ฐ ํ๋ ์์ํฌ์ด๊ธฐ ๋๋ฌธ์, Docker๋ก ์ปจํ ์ด๋ํํด์ ์ด๋์๋ ๋์ธ ์ ์์ด์. ๋ค๋ง ์ด์ ํ๊ฒฝ์ธ์ง ๊ฐ๋ฐ ํ๊ฒฝ์ธ์ง์ ๋ฐ๋ผ Docker ์ค์ ์ด ์กฐ๊ธ ๋ฌ๋ผ์ง๋๋ค. ๋จ๊ณ๋ณ๋ก ์ค๋ช ํ ๊ฒ์.
1๏ธโฃ ์ค๋น ์ฌํญ
- Next.js ํ๋ก์ ํธ (package.json, next.config.js ๋ฑ)
- Node.js ์ค์น ์ด๋ฏธ์ง (๋ณดํต node:18-alpine ์ถ์ฒ)
- Docker ์ค์น
2๏ธโฃ Dockerfile ์์
Next.js ์ฑ์ Production ๋ชจ๋๋ก ๋น๋ํด์ ๋์ฐ๋ ์์์ ๋๋ค.
๐น ์ค๋ช
- npm install --production → ํ๋ก๋์ ์ ํ์ํ ํจํค์ง๋ง ์ค์น
- npm run build → Next.js๋ฅผ SSR/Static ๋น๋
- npm start → ๋น๋๋ ์ฑ ์คํ (SSR ์๋ฒ)
- ์ปจํ ์ด๋ ํฌํธ 3000 ๋ ธ์ถ → ์ธ๋ถ์์ ์ ๊ทผ ๊ฐ๋ฅ
3๏ธโฃ Docker Compose ์์ (Spring + Next ์ฐ๋ ๊ฐ๋ฅ)
- frontend → Next.js ์ฑ
- backend → Spring Boot API
- Next.js์์ API ์์ฒญ ์ http://backend:8080/api/...๋ก ์ ๊ทผ ๊ฐ๋ฅ (๋์ปค ๋คํธ์ํฌ ๋ด๋ถ)
4๏ธโฃ ์ฃผ์ ์ฌํญ
- **๊ฐ๋ฐ ๋ชจ๋(npm run dev)**๋ก๋ Docker ๋์ฐ๊ธฐ ๋น์ถ์ฒ → ๋ผ์ด๋ธ ๋ฆฌ๋ก๋ฉ์ด ์ปจํ ์ด๋ ์์์ ์ ๋๋ก ์ ๋จ
- ํ๊ฒฝ ๋ณ์๋ .env.production ๋๋ Docker ํ๊ฒฝ ๋ณ์๋ก ์ฃผ์
- SSR ๊ธฐ๋ฅ ์ฌ์ฉ ์, Node ์๋ฒ๊ฐ ํญ์ ์คํ๋์ด์ผ ํจ (์ ์ export๋ง ํ๋ next export๋ ๋ณ๋ ์๋ฒ ๋ถํ์)
๐ก ์์ฝ:
- Next.js๋ React ๊ธฐ๋ฐ → Dockerํ ๊ฐ๋ฅ
- Production ํ๊ฒฝ์ npm run build + npm start ๋ฐฉ์ ๊ถ์ฅ
- Spring + Next๋ฅผ ํจ๊ป ๋์ธ ๋ Docker Compose ํ์ฉ ๊ฐ๋ฅ
โ 1. Sonnet → Anthropic Claude ๋ชจ๋ธ ๊ณ์ด
Anthropic์ Claude๋ผ๋ AI ๋ชจ๋ธ์ ๋ด๊ณ ์๊ณ ,
๊ทธ ์์์ ๋ชจ๋ธ ์ฌ์ด์ฆ๋ฅผ ์์
์ฉ์ด๋ก ๊ตฌ๋ถํฉ๋๋ค.
| Haiku | ๊ฐ์ฅ ๋น ๋ฅด๊ณ ๊ฐ๋ฒผ์ | ์ฝ๋ ์๋์์ฑ, ๋น ๋ฅธ ์ง์ |
| Sonnet | ์ค๊ฐ๊ธ(๊ท ํํ) | ์ผ๋ฐ ์์ + ๊ฐ๋ฐ์ฉ |
| Opus | ๊ฐ์ฅ ํฌ๊ณ ์ฑ๋ฅ ์ต๊ณ | ์ฌ์ธต reasoning, ๊ธด ๋ฌธ์ ์ฒ๋ฆฌ |
โก Sonnet์ Claude 3.5 Sonnet ํํ๋ก ๋ง์ด ์ฐ์
โก API ๊ตฌ์กฐ๋ Claude ๊ณ์ด ๊ณ ์ ๋ฐฉ์์ ๋ฐ๋ฆ
โ 2. Cursor๊ฐ ์ ๊ณตํ๋ ๋ชจ๋ธ๋ค
Cursor๋ IDE(๊ฐ๋ฐ ์๋ํฐ)์ด์ง๋ง, ์์ฒด ๋ชจ๋ธ์ ๋ง๋ ๊ฒ ์๋๋ผ
๋ค์ํ ํ์ฌ์ ๋ชจ๋ธ์ ์ ํํด ์ฌ์ฉํ ์ ์๊ฒ ํ ํ๋ซํผ์ด์์.
Cursor์์ ๋ณดํต ์ ํํ ์ ์๋ ๋ชจ๋ธ:
- GPT-4/4o/5 (OpenAI)
- Claude 3.5 Sonnet (Anthropic)
- LLaMA ๊ณ์ด (Meta)
- Cursor ์์ฒด ํ๋ ๋ชจ๋ธ
โก Cursor๋ ๋ชจ๋ธ์ ์ ๊ณตํ๋ ํ๋ซํผ์ผ ๋ฟ, ๋ชจ๋ธ ์ ์์๋ ์๋
๐จ 3-2. ๊ธฐ๋ฅ ์ฐจ์ด
| ๊ธฐ๋ฅ | Claude Sonnet | GPT ๊ณ์ด |
| ์ฅ๋ฌธ ์ฒ๋ฆฌ | Claude ์ฐ์ธ (๊ธด ์ปจํ ์คํธ ๊ฐํจ) | ์์ฆ ๋ง์ด ๋น์ทํด์ง |
| ์ฝ๋ ์์ฑ/์์ | GPT ๊ณ์ด์ด ๋ ์์ ์ | Sonnet๋ ๊ฐํ์ง๋ง GPT๊ฐ ๋ ๋ณดํธ์ |
| ์ธ์ด ์ดํด(ํ๊ตญ์ด ํฌํจ) | Claude ๊ฐํจ | GPT๋ ๋งค์ฐ ๊ฐํจ |
| ๋๊ตฌ ํธ์ถ(Functions) | ์ง์ํ์ง๋ง ๋ฐฉ์ ๋ค๋ฆ | GPT๊ฐ ๋ ๊ฐ๋ ฅํ๊ณ ์ํ๊ณ ๋์ |
| ํ์ผ ๋ถ์ | Claude๊ฐ ๋์ฉ๋์ ๊ฐํจ | GPT๋ ์ง์ |
โ 4. Cursor ์์์ ์ฌ์ฉ๋ฒ ์ฐจ์ด
Cursor์์๋ ์ฌ์ค Sonnet์ด๋ GPT๋ ์ฌ์ฉ๋ฒ์ ๊ฑฐ์ ๋์ผํฉ๋๋ค.
์๋ํ๋ฉด:
- Cursor UI๊ฐ ๋ชจ๋ธ API ํธ์ถ ๋ฐฉ์์ ํต์ผํด๋์
- ์ฌ์ฉ์๋ ๋จ์ํ “๋ชจ๋ธ๋ง ์ ํ”ํ๋ฉด ๋จ
๐ฅ ์ฆ, Cursor์์๋ ๋ชจ๋ธ ์ ํ๋ง ๋ค๋ฅด๊ณ , ์ฌ์ฉ๋ฒ์ ๋์ผํด์.
โญ ์ต์ข ์์ฝ
โ Sonnet = Claude ๋ชจ๋ธ(Anthropic)
→ ๊ธด ๋ฌธ์ ์ดํด, ๋
ผ๋ฆฌ ์ถ๋ก ์ ๊ฐํจ
→ API ๋ฐฉ์์ Claude ๊ณ ์ ํฌ๋งท
โ Cursor = ๋ชจ๋ธ ์ ๊ณต “ํ๋ซํผ”
→ OpenAI / Anthropic / LLaMA ๋ฑ ์ฌ๋ฌ ๋ชจ๋ธ ์ฌ์ฉ ๊ฐ๋ฅ
→ ์ฌ์ฉ๋ฒ์ ๊ฑฐ์ ๋์ผ (๋ชจ๋ธ๋ง ์ ํ)
โ ์ฌ์ฉ๋ฒ ์ฐจ์ด๋ “API ๋ฐฉ์๊ณผ ๋ชจ๋ธ ํน์ฑ”
→ Cursor ๋ด๋ถ์์๋ ๊ฑฐ์ ๋์ผํ UI๋ก ์ฌ์ฉ
→ API ์ง์ ์ธ ๋๋ง ์ฐจ์ด ํผ
โ 4. ์ค์ ์ฌ์ฉ๋ฒ์ ์ฐจ์ด
| Cursor ์์์ ์ฌ์ฉ๋ฒ | ๊ฑฐ์ ๊ฐ์ (๋ชจ๋ธ๋ง ์ ํ) | ๋์ผ |
| ์๊ฐ ์คํ์ผ | ๋ถ์์ ·๋ ผ๋ฆฌ์ ·์ ๊ตํจ | ์ง๊ด์ ·์ค์ฉ์ ·์ฝ๋ ์ค์ฌ |
| ์๋ต ์คํ์ผ | ์ฅ๋ฌธ ๋ถ์, ๋ฌธ๋งฅ ๊น์ | ์ฝ๋ ์์ฑ์ด ๋น ๋ฆ |
| ํ์ผ ํธ์ง ๋ฅ๋ ฅ | ์ ํํ๊ณ ์์ ์ | ๊ณต๊ฒฉ์ ์ผ๋ก ์ฝ๋ ์์ฑ·์์ |
| ํ๊ตญ์ด | ์์ฃผ ์์ฐ์ค๋ฌ์ | ๋งค์ฐ ์ข์, Sonnet๋ณด๋ค ์ด์ง ๋ฑ๋ฑํ ๋๋ ์์ |
'Project ESG+AI > Tech Basics' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| 30์ผ์ฐจ. IT ๊ฐ๋ ์ ๋ฆฌ (0) | 2025.11.19 |
|---|---|
| 29์ผ์ฐจ. IT ๊ฐ๋ ์ ๋ฆฌ (0) | 2025.11.18 |
| 27์ผ์ฐจ. IT ๊ฐ๋ ์ ๋ฆฌ (1) | 2025.11.14 |
| 26์ผ์ฐจ. IT ๊ฐ๋ ์ ๋ฆฌ (1) | 2025.11.13 |
| 25์ผ์ฐจ. IT ๊ฐ๋ ์ ๋ฆฌ (0) | 2025.11.12 |