
컨ν μ€νΈ. 컨ν μ΄λ, μ»΄ν¬λνΈ
π¦ 1. 컨ν μ€νΈ(Context) — νλ‘κ·Έλ¨μ΄ λμκ°λ ‘μν·νκ²½ μ 보’
ITμμ 컨ν μ€νΈλ
μ΄λ€ μ½λκ° μ€νλλ μκ°μ νκ²½·μν·λΆκ° μ 보 μ 체λ₯Ό μλ―Έν©λλ€.
βοΈ μ΄λμ λ§μ΄ μ°μΌκΉ?
- μλλ‘μ΄λ κ°λ°: Context κ°μ²΄ → μ± λ¦¬μμ€ μ κ·Ό, κΆν νμΈ λ±μ μ¬μ©
- μΉ λ°±μλ: μμ²(Request)μ 컨ν μ€νΈ → μ¬μ©μ, μΏ ν€, μΈμ , IP λ±
- νλ μμν¬ λ΄λΆ: νμ¬ ν¨μκ° μ€νλλ νκ²½(λ³μ, μ€μ , μΈμ¦ μν λ±)
βοΈ μ½κ² μ€λͺ νλ©΄
“μ΄ μ½λκ° μ§κΈ μ΄λ€ μν©μμ μ€ν μ€μΈμ§ μλ €μ£Όλ μ 보 λ¬Άμ”
π¦ 2. 컨ν μ΄λ(Container) — μ±μ μ€ννκΈ° μν ‘λ 립λ μ€ννκ²½ ν¨ν€μ§’
ITμμ 컨ν μ΄λλ μ£Όλ‘ Docker(λ컀) κ°λ μ λ μ¬λ¦¬λ©΄ κ°μ₯ μ νν©λλ€.
βοΈ μ μ
μ ν리μΌμ΄μ κ³Ό κ·Έ μ€νμ νμν λͺ¨λ μμ(λΌμ΄λΈλ¬λ¦¬, OS μΌλΆ, μ€μ )λ₯Ό λ¬Άμ΄μ μ΄λμλ λμΌνκ² μ€νλλλ‘ λ§λ κ°μν κΈ°μ
βοΈ νΉμ§
- μ΄λμ μ€ννλ κ²°κ³Όκ° λμΌν¨
- μλ² κ° μ΄λμ΄ μ¬μ (AWS → Azure μ΄λ κ² μ΄λ κ°λ₯)
- λ¬΄κ±°μ΄ κ°μλ¨Έμ λ³΄λ€ ν¨μ¬ κ°λ³κ³ λΉ λ¦
βοΈ μ½κ² νννλ©΄
“μ±μ λ΄μ ν΄λμ© ν¬μ₯λ°μ€ — μ΄λμ λλ λκ°μ΄ μ λμκ°”
π¦ 3. μ»΄ν¬λνΈ(Component) — μ¬μ¬μ© κ°λ₯ν UI·κΈ°λ₯ λ¨μ
νλ‘ νΈμλ κ°λ°μμ νΉν μ€μν κ°λ μ λλ€.
βοΈ μ μ
μ±μ ꡬμ±νλ 쑰립 κ°λ₯ν λ¨μ κΈ°λ₯ μμ(UI + λ‘μ§)
βοΈ μμ
- λ²νΌ μ»΄ν¬λνΈ
- μΉ΄λ(Card) μ»΄ν¬λνΈ
- λ€λΉκ²μ΄μ λ°
- μ λ ₯νΌ(Form Input)
βοΈ μ΄λμ κ°μ₯ λ§μ΄ μ¬μ©ν κΉ?
- React, Vue, Angular κ°μ νλ‘ νΈμλ νλ μμν¬
- λμμΈ μμ€ν (Figma μ»΄ν¬λνΈ λ±)
βοΈ μ½κ² λ§νλ©΄
“μ± νλ©΄μ λ§λλ λ κ³ λΈλ‘”
π© μΈ κ°λ μμ½ λΉκ΅
| κ°λ | ν΅μ¬ IT μλ―Έ | λΉμ |
| 컨ν μ€νΈ | μ€ν νκ²½, μν μ 보 | νμ¬ μν© μ€λͺ μ |
| 컨ν μ΄λ | μ± μ€νμ© ν΅ν© ν¨ν€μ§ | μ΄λ κ°λ₯ν ν¬μ₯ μμ |
| μ»΄ν¬λνΈ | μ¬μ¬μ© κ°λ₯ν UI·λ‘μ§ λ¨μ | λ κ³ λΈλ‘ |
π¦ ν μμ κΈ°λ³Έ μ μ
μ«μλ₯Ό μ¬λ¬ μ°¨μμΌλ‘ λ°°μ΄ν΄ λμ λ°μ΄ν° ꡬ쑰
μ½κ² λ§νλ©΄ **νμ₯λ ννμ νλ ¬(matrix)**μ λλ€.
π¦ ν μλ₯Ό μ°¨μλ³λ‘ μ½κ² μ΄ν΄νκΈ°
1μ°¨μ ν μ = 벑ν°(Vector)
μ) [3, 7, 9]
→ κΈΈμ΄λ§ μλ μΌλ ¬ λ°μ΄ν°
2μ°¨μ ν μ = νλ ¬(Matrix)
μ)
→ κ°λ‘·μΈλ‘κ° μλ λ°μ΄ν°
3μ°¨μ ν μ
μ) μ¬λ¬ μ₯μ 2D μ΄λ―Έμ§κ° μμ¬ μλ νν
4μ°¨μ ν μ
μ) λ₯λ¬λ μ΄λ―Έμ§ μ
λ ₯ λ°μ΄ν°
(batch, height, width, channel) ꡬ쑰
βοΈ ν λ¬Έμ₯ μ 리
μ€μΉΌλΌ → λ²‘ν° → νλ ¬ → ν μ(λ€μ°¨μ) μμλ‘ μΌλ°νλ κ°λ
π¦ 0μ°¨μ ν μ(μ€μΉΌλΌ, Scalar)λ?
νλμ μ«μλ§ μ‘΄μ¬νλ ν μ
μ¦, μ°¨μμ΄ μλ λ¨μΌ κ°
βοΈ μμ
μ΄λ° κ°λ€μ κΈΈμ΄λ μκ³ , νλ μκ³ , μ΄λ μλ λ¨μΌ μ«μμ£ .
κ·Έλμ ν
μ ꡬ쑰μμ “0μ°¨μ”μ΄λΌκ³ λΆλ¦
λλ€.
π¦ ν μ μ°¨μμ λ€μ μ 리νλ©΄
| 0μ°¨μ | μ€μΉΌλΌ(Scalar) | 3 | λ¨ νλμ μ«μ |
| 1μ°¨μ | 벑ν°(Vector) | [1, 2, 3] | κΈΈμ΄λ§ μλ λ°°μ΄ |
| 2μ°¨μ | νλ ¬(Matrix) | [[1,2],[3,4]] | κ°λ‘·μΈλ‘ ꡬ쑰 |
| 3μ°¨μ μ΄μ | ν μ(Tensor) | μ΄λ―Έμ§, μμ λ°μ΄ν° | λ€μ°¨μ λ°°μ΄ |
π¦ μ 0μ°¨μλ ν μλ‘ μ·¨κΈν κΉ?
βοΈ 1. μνμ μΌλ‘ λ²‘ν°·νλ ¬μ κ°μ₯ κΈ°λ³Έ λ¨μ
벑ν°λ μ€μΉΌλΌκ° λͺ¨μ¬ λ§λ€μ΄μ§κ³ , νλ ¬μ 벑ν°κ° λͺ¨μ¬ λ§λ€μ΄μ§λλ€.
μ¦, μ€μΉΌλΌκ° λͺ¨λ ν
μμ μΆλ°μ μ
λλ€.
βοΈ 2. λ₯λ¬λ μ°μ°μμ νμ
- λ‘μ€(loss) κ° → 0μ°¨μ ν μ
- νΉμ μ°μ° κ²°κ³Όκ° λ¨μΌ κ°μΌ λ → 0μ°¨μ ν μ
- PyTorch, TensorFlow λͺ¨λ μ€μΉΌλΌλ₯Ό **tensor(0D)**λ‘ μ·¨κΈ
π¦ μ λ₯λ¬λμμλ ν μλ₯Ό μΈκΉ?
βοΈ 1. GPUκ° ν μλ₯Ό λΉ λ₯΄κ² κ³μ°νκΈ°μ μ΅μ νλ¨
νλ ¬·λ€μ°¨μ μ°μ°μ λ³λ ¬ μ²λ¦¬νλ λ° λ§€μ° ν¨μ¨μ μ λλ€.
βοΈ 2. λ₯λ¬λ λ°μ΄ν° λλΆλΆμ΄ λ€μ°¨μ ꡬ쑰μ΄κΈ° λλ¬Έ
- μ΄λ―Έμ§ → 4D ν μ
- μμ± → 2D or 3D ν μ
- μμ°μ΄ → λ¬Έμ₯ κΈΈμ΄ × μλ² λ© μ°¨μ = 2D ν μ
- λΉλμ€ → μκ° μΆκΉμ§ ν¬ν¨ν΄μ 5D ν μ
βοΈ 3. λͺ¨λΈ νλΌλ―Έν°(κ°μ€μΉ)λ ν μ
λ₯λ¬λ λͺ¨λΈ λ΄λΆμμ λͺ¨λ κ°(κ°μ€μΉ·λ²‘ν°·νλ ¬)μ΄ ν μ ννλ‘ μ μ₯λ©λλ€.
π¦ ν μλ₯Ό λ± ν λ²μ μ΄ν΄νλ λΉμ
π± λμλ½ μΉΈ λΉμ
- λ°₯(1μΉΈ) = μ€μΉΌλΌ
- λ°μ°¬ 3μΉΈ = 1μ°¨μ 벑ν°
- λ μ€λ‘ μ 리λ μΉΈ λμλ½ = 2μ°¨μ νλ ¬
- λμλ½ μ¬λ¬ μΈ΅ = 3μ°¨μ ν μ
- λμλ½ν© μ¬λ¬ κ° λ¬Άμ = 4μ°¨μ ν μ
μ«μλ₯Ό λ΄λ μΉΈμ΄ λ§μμ§μλ‘ ν μμ μ°¨μμ΄ λμ΄λλ€!
UUIDκ° λμΌ?
**UUID(Universally Unique Identifier)**λ
μ μΈκ³ μ΄λμ, λκ°, μ΄λ€ μμ€ν
μμ λ§λ€μ΄λ κ²ΉμΉμ§ μλ κ³ μ ν μλ³μλ₯Ό λ§λ€κΈ° μν κ·μΉμ
λλ€.
μ½κ² λ§νλ©΄,
μ»΄ν¨ν°κ° μμ±νλ κ±°μ μ λλ‘ μ€λ³΅λμ§ μλ ‘κ³ μ λ²νΈ’
λΌκ³ 보면 λ©λλ€.
π¦ UUIDμ νν(μμ)
- μ΄ 32μ리μ 16μ§μ
- 8-4-4-4-12 νν
- 무μμ + μκ° + νλμ¨μ΄ μ 보 λ±μ κΈ°λ°μΌλ‘ μμ±
π¦ UUIDλ₯Ό μ μ°λκ°?
βοΈ 1. μ€λ³΅λ κ°λ₯μ±μ΄ κ±°μ 0μ κ°κΉμ
μ μΈκ³μμ λμμ λ§λ€μ΄λ κ²ΉμΉ νλ₯ μ΄ μ¬μ€μ μμ΅λλ€.
βοΈ 2. μμλ₯Ό λ§μΆ νμ μλ λ°μ΄ν° μλ³μ μ μ©
λ°μ΄ν°λ² μ΄μ€ PK, μΈμ ID, νμΌλͺ , νΈλνΉ ID λ±μμ μ¬μ©.
βοΈ 3. μλ² μ¬λ¬ λκ° λμμ μμ±ν΄λ μΆ©λ μμ
λΆμ° μμ€ν μμ νΉν μ€μ.
π¦ UUIDμ λ²μ λ μ‘΄μ¬ν¨
| v1 | μκ° + MACμ£Όμ κΈ°λ° |
| v4 | λμ(Random) κΈ°λ° → κ°μ₯ λ§μ΄ μ¬μ© |
| v5 | μ΄λ¦ κΈ°λ° ν΄μ(UUID + λ¬Έμμ΄) |
λλΆλΆμ μλΉμ€μ νλ μμν¬λ UUID v4λ₯Ό κΈ°λ³ΈμΌλ‘ μ¬μ©ν©λλ€.
π© ν λ¬Έμ₯ μμ½
UUIDλ μ μΈκ³μμ κ²ΉμΉμ§ μλ κ³ μ ν IDλ₯Ό μλμΌλ‘ λ§λ€μ΄μ£Όλ κ·κ²©
μν°ν©νΈ ID(Artifact ID)λ?
Maven λλ Gradle κ°μ λΉλ λꡬμμ νλ‘μ νΈλ₯Ό ꡬλΆνλ κ³ μ μ΄λ¦μ
λλ€.
λ³΄ν΅ Java(Spring) νλ‘μ νΈλ₯Ό λ§λ€ λ λ€μκ³Ό κ°μ μ 보λ€μ μ€μ νμ£ :
- groupId
- artifactId
- version
μ΄ μ€μμ **artifactIdλ “νλ‘μ νΈ μ체μ μ΄λ¦”**μ μλ―Έν©λλ€.
β μ½κ² λ§νλ©΄?
μν°ν©νΈ ID = λ΄ νλ‘μ νΈ ν΄λ μ΄λ¦(λν μ΄λ¦)
μλ₯Ό λ€μ΄ my-spring-app κ°μ μ΄λ¦μ΄ μν°ν©νΈ IDκ° λ©λλ€.
λΉλνλ©΄ λ€μκ³Ό κ°μ΄ JAR νμΌ μ΄λ¦μλ ν¬ν¨λ©λλ€:
π§© κ΅¬μ‘°λ‘ λ³΄λ©΄ μ΄λ κ² λ¨
Maven λλ Gradleμμ νλ‘μ νΈλ₯Ό ꡬλ³νκΈ° μν 3κ°μ§ μλ³μ
| groupId | νμ¬/μ‘°μ§/λλ©μΈλͺ (μ: com.example) |
| artifactId | νλ‘μ νΈ κ³ μ μ΄λ¦(μ: my-app) |
| version | λ²μ μ 보(μ: 1.0.0) |
3οΈβ£ URIμ URL, URNμ κ΄κ³
- URL (Uniform Resource Locator): μμΉλ₯Ό μλ €μ£Όλ URI → μ: https://example.com/page
- URN (Uniform Resource Name): μ΄λ¦λ§ μλ €μ£Όλ URI → μ: urn:isbn:0451450523
- URI = URL + URN λ₯Ό ν©μΉ κ°λ
μ¦, URIλ “μμμ μλ³νλ λͺ¨λ κ²”, URLμ “κ·Έ μμμ΄ μ΄λ μλμ§ μλ €μ£Όλ κ²”μ΄μμ.
π‘ μ 리:
- URI = μμμ μλ³νλ μ΄λ¦ν
- URL = μμμ μμΉκΉμ§ μλ €μ£Όλ URI
- URN = μμμ μ΄λ¦λ§ μλ €μ£Όλ URI
ITμμ **BP(Best Practice, λ² μ€νΈ νλν°μ€)**λ₯Ό μ€μ¬μ BPλΌκ³ λ ν©λλ€. μ¦ **“BP = Best Practice”**μμ.
1οΈβ£ BP (Best Practice)
- μ μ: νΉμ IT μμ μ΄λ νλ‘μ νΈλ₯Ό ν λ κ°μ₯ ν¨μ¨μ μ΄κ³ μμ νλ©° κΆμ₯λλ λ°©λ²
- λͺ©μ :
- μ€λ₯ μ΅μν
- μ μ§λ³΄μ νΈλ¦¬
- μ±λ₯ μ΅μ ν
- μμ:
- μ½λ κ΄λ¦¬: Git λΈλμΉ μ λ΅(Git Flow, GitHub Flow)
- 보μ: HTTPS μ μ©, λΉλ°λ²νΈ μνΈν
- ν΄λΌμ°λ μΈνλΌ: IaC(Infrastructure as Code) μ μ©
- DB μ€κ³: μ κ·ν, μΈλ±μ€ νμ©
π‘ ν¬μΈνΈ: “μ κ³μμ μ μ¦λ μ΅μ μ λ°©λ²” → κ·Έλμ μ€μ¬μ BPλΌκ³ λΆλ₯΄κΈ°λ ν©λλ€.
μ¦, ITμμ BP λΉνΌλΌκ³ νλ©΄ κ·Έλ₯ λ² μ€νΈ νλν°μ€λ₯Ό λ»νλ κ±°μμ.
**Docker Composeμμ λ³Όλ₯¨(Volume)**μ μλ―Έλ₯Ό μ½κ² μ€λͺ ν κ²μ.
1οΈβ£ κΈ°λ³Έ κ°λ
- λ³Όλ₯¨(Volume) = λ컀 컨ν μ΄λμ νΈμ€νΈ(μ»΄ν¨ν°) κ°μ λ°μ΄ν°λ₯Ό μꡬμ μΌλ‘ μ μ₯νκ³ κ³΅μ νλ 곡κ°
- 컨ν
μ΄λλ κΈ°λ³Έμ μΌλ‘ μμ νκ²½μ΄μμ.
- 컨ν μ΄λ μμ νμΌμ μ μ₯νλ©΄, 컨ν μ΄λ μμ μ λ°μ΄ν°λ κ°μ΄ μ¬λΌμ§λλ€.
- νμ§λ§ λ³Όλ₯¨μ μ¬μ©νλ©΄ 컨ν μ΄λκ° μμ λμ΄λ λ°μ΄ν°λ μ μ§λ©λλ€.
π‘ μ½κ² λ§νλ©΄:
컨ν μ΄λ μμ νμΌ μ μ₯μκ° “μμ λ°©”μ΄λΌλ©΄, λ³Όλ₯¨μ “μ§ λ° μ°½κ³ ”μ λ°μ΄ν°λ₯Ό 보κ΄νλ κ²κ³Ό κ°μμ.
βοΈ λ¦¬μ‘νΈμμ ꡬ쑰 λΆν΄ ν λΉ (Destructuring Assignment)
리μ‘νΈ(React)μμ **ꡬ쑰 λΆν΄ ν λΉ(Destructuring Assignment)**μ μλ°μ€ν¬λ¦½νΈ(JavaScript)μ λ¬Έλ²μΌλ‘, **κ°μ²΄(Object)**λ **λ°°μ΄(Array)**μμ νμν κ°λ§ κΊΌλ΄μ μλ‘μ΄ λ³μμ ν λΉνλ νΈλ¦¬ν λ°©λ²μ λλ€.
μ΄ λ¬Έλ²μ μ½λλ₯Ό ν¨μ¬ κ°κ²°νκ³ κ°λ μ± μκ² λ§λ€μ΄μ£ΌκΈ° λλ¬Έμ 리μ‘νΈμμ λ§€μ° μμ£Ό μ¬μ©λ©λλ€.
1. π κΈ°λ³Έ μ리 λ° λ¬Έλ²
A. λ°°μ΄ κ΅¬μ‘° λΆν΄
λ°°μ΄μ κ°μ μμλλ‘ λ³μμ ν λΉν©λλ€.
const colors = ['red', 'green', 'blue'];
// ꡬ쑰 λΆν΄ ν λΉμ μ¬μ©νμ§ μμ λ
// const c1 = colors[0];
// const c2 = colors[1];
// ꡬ쑰 λΆν΄ ν λΉ μ¬μ©
const [c1, c2, c3] = colors;
console.log(c1); // 'red'
B. κ°μ²΄ ꡬ쑰 λΆν΄
κ°μ²΄μ **ν€(Key)**μ λμΌν μ΄λ¦μ λ³μλ₯Ό μ μΈνμ¬ κ°μ ν λΉν©λλ€. μμλ μ€μνμ§ μμ΅λλ€.
const user = { name: 'Alice', age: 30, city: 'Seoul' };
// ꡬ쑰 λΆν΄ ν λΉ μ¬μ©
const { name, age } = user;
console.log(name); // 'Alice'
console.log(age); // 30
// cityλ 건λλΈ μ μμ
2. π‘ 리μ‘νΈμμ νμ©λλ λ κ°μ§ ν΅μ¬ μ¬λ‘
ꡬ쑰 λΆν΄ ν λΉμ 리μ‘νΈμ ν΅μ¬ κΈ°λ₯μΈ μ»΄ν¬λνΈμ Propsμ Hooksμμ νμμ μΌλ‘ μ¬μ©λ©λλ€.
A. Props (μμ±) μ²λ¦¬
리μ‘νΈ μ»΄ν¬λνΈλ λΆλͺ¨ μ»΄ν¬λνΈλ‘λΆν° propsλΌλ νλμ κ°μ²΄λ₯Ό μ λ¬λ°μ΅λλ€. μ΄ κ°μ²΄μμ νμν κ°λ€λ§ κΉλνκ² κΊΌλ΄ μΈ λ ꡬ쑰 λΆν΄ ν λΉμ μ¬μ©ν©λλ€.
β μ¬μ© μ (λΆνμν props. λ°λ³΅)
function Welcome(props) {
return <h1>Hello, {props.username}. Your score is {props.score}.</h1>;
}
β μ¬μ© ν (μ½λκ° κ°κ²°ν΄μ§)
// ν¨μ λ§€κ°λ³μμμ λ°λ‘ ꡬ쑰 λΆν΄ ν λΉ
function Welcome({ username, score }) {
return <h1>Hello, {username}. Your score is {score}.</h1>;
}
B. Hooks (μν/State) μ²λ¦¬
useStateμ κ°μ 리μ‘νΈ ν (Hook)μ λ°°μ΄μ λ°νν©λλ€. μ΄ λ°°μ΄μ 첫 λ²μ§Έ μμλ μν κ°μ΄κ³ , λ λ²μ§Έ μμλ μνλ₯Ό μ λ°μ΄νΈνλ ν¨μμ λλ€.
β useStateμ ꡬ쑰 λΆν΄ ν λΉ μ¬μ©
import React, { useState } from 'react';
// useState()λ νμ [νμ¬ μν, μν μ€μ ν¨μ] ννμ λ°°μ΄μ λ°ν
const [count, setCount] = useState(0);
// count: νμ¬ μν κ° (0)
// setCount: countλ₯Ό λ³κ²½ν ν¨μ
3. ⨠ꡬ쑰 λΆν΄ ν λΉμ μ₯μ
- κ°λ μ± ν₯μ: props.λ state.μ κ°μ λ°λ³΅μ μΈ μ λμ¬ μ¬μ©μ νΌν μ μμ΄ μ½λκ° κΉλν΄μ§λλ€.
- μ¬μ©ν κ° λͺ μ: κ°μ²΄μμ μ΄λ€ κ°λ€μ μ€μ λ‘ μ¬μ©ν μ§ λͺ μμ μΌλ‘ μ μ μμ΅λλ€.
- κΈ°λ³Έκ° μ€μ : ꡬ쑰 λΆν΄ μ λ³μμ κΈ°λ³Έκ°(Default Value)μ μ½κ² μ€μ ν μ μμ΅λλ€. (μ: const { size = 'M' } = props;)
Next.js = νλ μμν¬
리μ‘νΈ = λΌμ΄λΈλ¬λ¦¬
π» Next.jsμ Reactμ κ΄κ³ μ 리
λ§μν΄μ£Όμ ꡬλΆμ μΉ κ°λ°, νΉν μλ°μ€ν¬λ¦½νΈ μνκ³μμ λ κΈ°μ μ μν μ κ°μ₯ μ ννκ² μ€λͺ ν©λλ€.
1. 리μ‘νΈ (React): λΌμ΄λΈλ¬λ¦¬ (Library)
- μ μ: μ¬μ©μ μΈν°νμ΄μ€(UI)λ₯Ό ꡬμΆνκΈ° μν JavaScript λΌμ΄λΈλ¬λ¦¬μ λλ€.
- μν :
- μ€μ§ λ·°(View) κ³μΈ΅λ§μ λ΄λΉν©λλ€. μ¦, νλ©΄μ 무μμ 보μ¬μ€μ§(μ»΄ν¬λνΈ)λ₯Ό λ§λλ μν μ μ§μ€ν©λλ€.
- "μ΄λ»κ² λ°μ΄ν°λ₯Ό κ°μ Έμ¬μ§(Fetch)?", "λΌμ°ν μ μ΄λ»κ² ν μ§?", "μ΄λ»κ² μλ²μμ λ λλ§ν μ§(SSR)?" λ±μ λν ν΄κ²°μ± μ μ 곡νμ§ μμ΅λλ€.
- νΉμ§: κ°λ°μκ° μνλ κΈ°λ₯(λΌμ°ν , μν κ΄λ¦¬, λ°μ΄ν° μμ² λ±)μ μ§μ μ ννκ³ μ‘°ν©νμ¬ μ±μ λ§λ€μ΄μΌ ν©λλ€.
2. Next.js: νλ μμν¬ (Framework)
- μ μ: Reactλ₯Ό κΈ°λ°μΌλ‘ ꡬμΆλ νμ€ν(Full-stack) μΉ νλ μμν¬μ λλ€.
- μν :
- Reactμ UI κ΅¬μΆ κΈ°λ₯μ ν¬ν¨νλ©΄μ, λκ·λͺ¨ μ ν리μΌμ΄μ μ λ§λ€ λ νμμ μΈ λͺ¨λ ꡬ쑰μ κΈ°λ₯μ μ 곡ν©λλ€.
- λΌμ°ν , μλ² μ¬μ΄λ λ λλ§(SSR), μ μ μ¬μ΄νΈ μμ±(SSG), API λΌμ°νΈ(λ°±μλ κΈ°λ₯), μ½λ λΆν λ± κ°λ°μ νμν λͺ¨λ κ²μ "νλ μ(λΌλ)" μμ κ°μΆκ³ μμ΅λλ€.
- νΉμ§:
- κ°λ°μκ° μ ν΄μ§ κ·μΉκ³Ό ꡬ쑰(컨벀μ ) μμμ κ°λ°νκ² νμ¬ μμ°μ±μ λμ¬μ€λλ€.
- Reactμ **λ¨μ (SEO μ·¨μ½, μ΄κΈ° λ‘λ© μλ)**μ 보μνκ³ , μν°νλΌμ΄μ¦κΈ μ± κ°λ°μ μ΅μ νλ νκ²½μ μ 곡ν©λλ€.
μμ½νμλ©΄:
- Reactλ "μ§μ μ§μ λ μ°λ λ²½λ"κ³Ό κ°μ΅λλ€. (μ¬λ£)
- Next.jsλ "μ§μ μ§λ λ° νμν μ€κ³λ, μμ¬, 곡ꡬκΉμ§ λͺ¨λ μ 곡νλ κ±΄μ€ ν€νΈ"μ κ°μ΅λλ€. (ꡬ쑰μ νκ²½)
Next.jsλ Reactλ₯Ό ν΅μ¬ μμ§μΌλ‘ μ¬μ©νμ¬ μμ±λ μ ν리μΌμ΄μ μ ꡬμΆνκ² λλ νλ₯ν νλ μμν¬μ λλ€.
Flux μν€ν μ² (Flux Architecture)
Fluxλ Facebook(ν Meta)μμ κ°λ°ν μννΈμ¨μ΄ λμμΈ ν¨ν΄μΌλ‘, νΉν 볡μ‘ν ν΄λΌμ΄μΈνΈ μ¬μ΄λ μΉ μ ν리μΌμ΄μ (μ: React μ±)μμ λ°μ΄ν°μ νλ¦μ κ΄λ¦¬νκΈ° μν΄ κ³ μλμμ΅λλ€. Fluxμ ν΅μ¬μ **λ¨λ°©ν₯ λ°μ΄ν° νλ¦(Unidirectional Data Flow)**μ κ°μ νμ¬ μ ν리μΌμ΄μ μ μμΈ‘ κ°λ₯μ±κ³Ό λλ²κΉ μ©μ΄μ±μ λμ΄λ κ²μ λλ€.
Reactλ λ·°(View)λ₯Ό λ λλ§νλ μν λ§ νκΈ° λλ¬Έμ, 볡μ‘ν μ±μμ λ°μ΄ν° μνλ₯Ό κ΄λ¦¬νκΈ° μν΄ Fluxμ κ°μ ν¨ν΄μ΄ νμν΄μ‘μ΅λλ€.
1. λ¨λ°©ν₯ λ°μ΄ν° νλ¦μ μ€μμ±
κΈ°μ‘΄ MVC(Model-View-Controller) ν¨ν΄μμλ λ°μ΄ν°μ νλ¦μ΄ μλ°©ν₯μΌλ‘ λ°μνμ¬, νλμ λ°μ΄ν° λ³κ²½μ΄ μ¬λ¬ λͺ¨λΈμ μν₯μ μ£Όλ©΄ μν λ³νμ κ²½λ‘λ₯Ό μΆμ νκΈ° μ΄λ €μμ§κ³ λ²κ·Έκ° λ°μνκΈ° μ¬μ μ΅λλ€.
Fluxλ μ΄ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ λ°μ΄ν°κ° νμ νλμ ν΅λ‘λ₯Ό ν΅ν΄μλ§ νλ₯΄λλ‘ κ°μ ν©λλ€.
2. Fluxμ 4κ°μ§ ν΅μ¬ κ΅¬μ± μμ
Flux μν€ν μ²λ λ€μ λ€ κ°μ§ κ΅¬μ± μμλ‘ μ΄λ£¨μ΄μ Έ μμΌλ©°, λ°μ΄ν°λ νμ Action $\rightarrow$ Dispatcher $\rightarrow$ Store $\rightarrow$ Viewμ λ¨μΌ κ²½λ‘λ‘ νλ¦ λλ€.
1. π’ μ‘μ (Action)
- μν : μ ν리μΌμ΄μ μμ λ°μν **λͺ¨λ λ³ν(μ΄λ²€νΈ)**λ₯Ό μΊ‘μνν κ°μ²΄μ λλ€.
- νΉμ§: 무μμ΄ λ°μνλμ§ μ€λͺ νλ **νμ (Type)**κ³Ό λ³κ²½μ νμν **λ°μ΄ν°(Payload)**λ₯Ό ν¬ν¨ν©λλ€.
- μμ: μ¬μ©μκ° "μ’μμ" λ²νΌμ λλ μ λμ μ‘μ (Type: LIKE_POST, Payload: { postId: 123 })
2. π¦ λμ€ν¨μ² (Dispatcher)
- μν : λͺ¨λ μ‘μ μ μ μΌν ν΅λ‘μ΄μ μ€μ νλΈμ λλ€.
- νΉμ§: μ‘μ μ λ°μμ λͺ¨λ μ€ν μ΄μκ² μ λ¬(λΈλ‘λμΊμ€ν )νλ μν μ ν©λλ€. λμ€ν¨μ²λ ν λ²μ νλμ μ‘μ λ§ μ²λ¦¬νλλ‘ λ³΄μ₯νμ¬ λ³΅μ‘ν λ°μ΄ν° λ³κ²½ μμλ₯Ό λ¨μνν©λλ€.
3. πΎ μ€ν μ΄ (Store)
- μν : μ ν리μΌμ΄μ μ μν(State)μ λΉμ¦λμ€ λ‘μ§μ λ΄κ³ μλ κ³³μ λλ€.
- νΉμ§:
- νΉμ λλ©μΈ(μ: μ¬μ©μ μ 보, μ₯λ°κ΅¬λ λͺ©λ‘)κ³Ό κ΄λ ¨λ λͺ¨λ λ°μ΄ν°λ₯Ό κ΄λ¦¬ν©λλ€.
- λμ€ν¨μ²λ‘λΆν° μ‘μ μ λ°μΌλ©΄, κ·Έ νμ μ λ°λΌ μμ μ μνλ₯Ό λ³κ²½ν μ§ κ²°μ ν©λλ€.
- μνλ₯Ό λ³κ²½ν νμλ λ·°μκ² λ³κ²½ μ¬μ€μ μ립λλ€(Emit Change). μ§μ λ°μ΄ν°λ₯Ό μΈλΆμ λ ΈμΆνμ§ μμ΅λλ€.
4. ποΈ λ·° (View)
- μν : μ¬μ©μ μΈν°νμ΄μ€(UI)λ₯Ό λ΄λΉνλ©°, React μ»΄ν¬λνΈκ° μ΄ μν μ μνν©λλ€.
- νΉμ§:
- μ€ν μ΄λ‘λΆν° μν λ³ν μλ¦Όμ λ°μΌλ©΄, μ€ν μ΄μ μ§μ μ κ·Όνμ¬ λ³κ²½λ λ°μ΄ν°λ₯Ό κ°μ Έμ΅λλ€.
- κ°μ Έμ¨ λ°μ΄ν°λ‘ νλ©΄μ λ€μ λ λλ§ν©λλ€.
- μ¬μ©μμμ μνΈμμ©(λ²νΌ ν΄λ¦ λ±)μ΄ λ°μνλ©΄ μλ‘μ΄ μ‘μ μ μμ±νμ¬ λμ€ν¨μ²λ‘ 보λ λλ€.
3. Fluxμ Reduxμ κ΄κ³
Reduxλ Flux ν¨ν΄μ κΈ°λ°μΌλ‘ λ§λ€μ΄μ‘μ§λ§, λͺ κ°μ§ μμΉμ μΆκ°νκ³ λ¨μνν λΌμ΄λΈλ¬λ¦¬μ λλ€.
| νΉμ§ | Flux | Redux |
| Dispatcher | μ체 Dispatcherκ° μμ. | Dispatcherκ° μμ. Storeκ° ν΅ν©νμ¬ κ΄λ¦¬. |
| Store | μ¬λ¬ κ°μ λλ©μΈλ³ Storeκ° μ‘΄μ¬ κ°λ₯. | μ€μ§ νλμ μ€μ μ§μ€μ Storeλ§ μ¬μ©. |
| μ£Όμ μμΉ | λ¨λ°©ν₯ λ°μ΄ν° νλ¦. | λ¨μΌ μ§μ€μ κ·Όμ(Single Source of Truth). |
μ΄μ 리λμ€λ‘ λ°λ!!!
'Project ESG+AI > Tech Basics' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| 31μΌμ°¨. IT κ°λ μ 리 (1) | 2025.11.20 |
|---|---|
| 30μΌμ°¨. IT κ°λ μ 리 (0) | 2025.11.19 |
| 28μΌμ°¨. IT κ°λ μ 리 (0) | 2025.11.17 |
| 27μΌμ°¨. IT κ°λ μ 리 (1) | 2025.11.14 |
| 26μΌμ°¨. IT κ°λ μ 리 (1) | 2025.11.13 |