1. 물리 κ³μΈ΅ (Physical Layer):
2. λ°μ΄ν° λ§ν¬ κ³μΈ΅ (Data Link Layer):
3. λ€νΈμν¬ κ³μΈ΅ (Network Layer):
4. μ μ‘ κ³μΈ΅ (Transport Layer):
5. μΈμ κ³μΈ΅ (Session Layer):
6. νν κ³μΈ΅ (Presentation Layer):
7. μμ© κ³μΈ΅ (Application Layer):
μΈμ
κΈ°λ° μΈμ¦μ μ¬μ©μκ° μΈμ¦μ μλ£νλ©΄
μλ²λ μΈμ¦ μ 보λ₯Ό μΈμ
μ΄λΌκ³ νλ λ³λμ 곡κ°(λ©λͺ¨λ¦¬ νΉμ DB λ±)μ μ μ₯νκ³
μλ² μΈ‘μμ μ¬μ©μ μνλ₯Ό κ΄λ¦¬ν©λλ€.
ν ν° κΈ°λ° μΈμ¦μ μ¬μ©μ μνλ₯Ό μλ²μ μ μ₯νμ§ μκ³ ,
ν΄λΌμ΄μΈνΈμμ ν ν°μ λ³λμ κ³΅κ° (localStorage, Cookie)μ μ μ₯ν ν,
μλ²μμ μμ²(Request) ν λλ§λ€ ν ν°μ ν¨κ» 보λ΄κ³ μλ²λ μ΄ ν ν°μ κ²μ¦νκ³ μΈκ°ν©λλ€.
μ΄λ, JWT(Json Web Token)μ κ°μ ν ν° νμμ΄ μ¬μ©λ μ μμ΅λλ€.
JWT (JSON Web Token):
JWTλ μΉμμ μ¬μ©λλ JSON νμμ ν ν°μ λν νμ€ κ·κ²©μΌλ‘,
μ£Όλ‘ μ¬μ©μμ μΈμ¦ λλ μΈκ° μ 보λ₯Ό μλ²μ ν΄λΌμ΄μΈνΈ κ°μ μμ νκ² κ΅ννκ³ μ μ₯νκΈ° μν΄ μ¬μ©λλ€.
JWTλ μΈ κ°μ§ λΆλΆμΌλ‘ μ΄λ£¨μ΄μ§λ©°, κ° λΆλΆμ μ (.)μΌλ‘ ꡬλΆλλ€.
μ΄ λΆλΆμ Header, Payload, Signatureλ‘ κ΅¬μ±λλ€.
Header (ν€λ)λ νμ κ³Ό μ¬μ©νλ ν΄μ μκ³ λ¦¬μ¦ λ± λ κ°μ§ μ 보λ₯Ό JSON νμμΌλ‘ ν¬ν¨νκ³ μλ€.
Payload (νμ΄λ‘λ)λ ν ν°μ ν¬ν¨λ μ λ³΄μΈ ν΄λ μμ λ΄κ³ μλ€. ν΄λ μμ μ’
λ₯λ
λ±λ‘λ ν΄λ μ (Registered Claims), κ³΅κ° ν΄λ μ (Public Claims), λΉκ³΅κ° ν΄λ μ (Private Claims)λ±μ΄ μλ€.
Signature (μλͺ
)μ ν ν°μ μ ν¨μ±μ κ²μ¦νλλ° μ¬μ©λλ€.
ν€λμ νμ΄λ‘λλ₯Ό ν¬ν¨νλ ν ν° λ΄μ©, κ·Έλ¦¬κ³ λΉλ° ν€λ₯Ό μ¬μ©νμ¬ μμ±λλ©°,
ν ν°μ΄ μ λ’°νλ λ°κΈμλ‘λΆν° μμμ νμΈν μ μλ€.
Refresh Token:
Refresh Tokenμ μΌλΆ μΈμ¦ μμ€ν
μμ μ¬μ©λλ©°,
μ£Όλ‘ μλ μ‘μΈμ€ ν ν°μ΄ λ§λ£λ λ μλ‘μ΄ μ‘μΈμ€ ν ν°μ λ°κΈλ°κΈ° μν΄ μ¬μ©λλ€.
μ¬μ©μλ μ‘μΈμ€ ν ν°μ΄ λ§λ£λλλΌλ
μ¬μ©μ μ΄λ¦κ³Ό μνΈλ₯Ό λ€μ μ
λ ₯νμ§ μκ³ λ Refresh Tokenμ μ¬μ©νμ¬
μλ‘μ΄ μ‘μΈμ€ ν ν°μ λ°κΈλ°μ μ μλ€.
Access Token:
Access Tokenμ μ£Όλ‘ μΈμ¦ λ° κΆν λΆμ¬ μμ€ν
μμ μ¬μ©λλ©°,
νΉμ 리μμ€μ λν μ‘μΈμ€ κΆνμ λΆμ¬νκ±°λ
μ¬μ©μλ₯Ό λμ νμ¬ μμ
μ μννκΈ° μν΄ μ¬μ©λλ ν ν° μ νμ΄λ€.
μΌλ°μ μΌλ‘ Access Tokenμ μλͺ
μ΄ μ§§μΌλ©°,
ν΄λΌμ΄μΈνΈ μ ν리μΌμ΄μ
μ΄ μλ² λ¦¬μμ€μ μ κ·Όν λ μ¬μ©λλ€.
OAuth(Open Authorization)μ μΈν°λ· μ¬μ©μκ° λΉλ°λ²νΈλ₯Ό 곡μ νμ§ μκ³
λ€λ₯Έ μΉμ¬μ΄νΈλ μ ν리μΌμ΄μ
μ μμ μ μ 보μ λν μ κ·Ό κΆνμ λΆμ¬νλ κ°λ°©ν νμ€μ΄λ€.
μ΄λ₯Ό ν΅ν΄ 보μκ³Ό κ°μΈ μ 보 보νΈκ° κ°νλλ©°,
μ¬μ©μκ° μ΄λ€ λ°μ΄ν°μ λν μ‘μΈμ€ κΆνμ λΆμ¬νκ³ μλμ§μ λν ν¬λͺ
μ±μ μ 곡νλ€.
OAuthλ μ£Όλ‘ μμ
λ―Έλμ΄ νλ«νΌμμμ
μμ
λ―Έλμ΄ νλ«νΌμμμ λ‘κ·ΈμΈ λ° λ°μ΄ν° 곡μ ,
ν΄λΌμ°λ μλΉμ€μμμ νμΌ μ‘μΈμ€ κΆν λΆμ¬,
λ€λ₯Έ μ ν리μΌμ΄μ
μ λν API νΈμΆ κΆν λΆμ¬ λ± λ€μν μ¬λ‘μμ νμ©λλ€.
ν΄λμ€ν νλ‘κ·Έλλ°μ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° (OOP) ν¨λ¬λ€μμ λ°λ₯΄κ³ ,
ν΄λμ€λ₯Ό μ¬μ©νμ¬ λ°μ΄ν°μ λ©μλλ₯Ό ν¨κ» μ μνκ³ κ°μ²΄λ₯Ό μμ±νλ λ°©μμ΄λ©°,
μμκ³Ό λ€νμ±μ κ°μ‘°ν©λλ€.
ν¨μν νλ‘κ·Έλλ°μ ν¨μλ₯Ό μΌκΈ μλ―ΌμΌλ‘ μ·¨κΈνλ©°,
ν¨μλ₯Ό λ³μμ ν λΉνκ±°λ ν¨μμ 맀κ°λ³μλ‘ μ λ¬νλ©°, ν¨μλ₯Ό λ°νν μ μμ΅λλ€.
μ£Όλ‘ λ°μ΄ν°λ₯Ό ν¨μλ‘ μ²λ¦¬νκ³ λΆμμ©μ μ΅μννκΈ° μν΄ μ¬μ©ν©λλ€.
ν΄λμ€ν νλ‘κ·Έλλ°κ³Ό ν¨μν νλ‘κ·Έλλ°μ μ£Όμ μ°¨μ΄λ μ κ·Ό λ°©μμ
λλ€.
ν΄λμ€ν νλ‘κ·Έλλ°μ κ°μ²΄μ μνλ₯Ό μ€μ¬μΌλ‘ νλ©° λ°μ΄ν°μ λ©μλλ₯Ό μΊ‘μνν©λλ€.
λ°λ©΄ ν¨μν νλ‘κ·Έλλ°μ ν¨μμ λ°μ΄ν° λ³νμ μ€μ¬μΌλ‘ νλ©°
ν¨μλ₯Ό λͺ¨λνλ λ¨μλ‘ μ¬μ©νμ¬ μ½λλ₯Ό ꡬμ±ν©λλ€.
ex. ν¨μν νλ‘κ·Έλλ°μ μ£Όλ‘ μ¬μ©νλ©°,
μ΄ μ€νμΌμ μ νν μ΄μ λ ν¨μλ₯Ό λͺ¨λνλ λ¨μλ‘ μ‘°ν©νμ¬ μ½λλ₯Ό μμ±ν μ μκΈ° λλ¬Έμ
λλ€.
μ΄λ₯Ό ν΅ν΄ μ½λμ μ¬μ¬μ©μ±μ λμ΄κ³ μ μ§ λ³΄μλ₯Ό λμ± ν¨μ¨μ μΌλ‘ μνν μ μμ΅λλ€.
ex.
ν΄λμ€ν νλ‘κ·Έλλ°μ μ£Όλ‘ νμ©νμΌλ©°,
ν΄λμ€ν νλ‘κ·Έλλ°μ μ½λμ ꡬ쑰νμ λͺ¨λνλ₯Ό κ°ννκ³ , μ μ§ λ³΄μ κ°λ₯μ±μ ν₯μμν€λ©°,
κ°μ²΄ μ§ν₯ λμμΈ μμΉμ μ€μνμ¬ μ¬μ¬μ©μ±μ λμΌ μ μκΈ° λλ¬Έμ
λλ€.
μ΄λ‘ μΈν΄ μμ μ μ΄κ³ ν¨μ¨μ μΈ λ€νΈμν¬ μ ν리μΌμ΄μ
μ κ°λ°νλ λ° ν° λμμ΄ λ μ μλ€λ μ΄μ μ΄ μμ΅λλ€.
CI (Continuous Integration(μ§μμ ν΅ν©)):
CIλ μννΈμ¨μ΄ κ°λ° νλ‘μΈμ€μμ μ¬λ¬ κ°λ°μκ° νμ
νμ¬ μμ€ μ½λ λ³κ²½ μ¬νμ μ§μμ μΌλ‘ ν΅ν©νλ κ°λ
μ
λλ€.
μ΄λ μ½λ λ³κ²½ μ¬νμ΄ μΆ©λνκ±°λ λ¬Έμ κ° λ°μνλ κ²μ λ°©μ§νκΈ° μν΄ κ°λ°μκ° μμ£Ό μ½λλ₯Ό 곡μ νκ³ ,
μλμΌλ‘ λΉλνκ³ ν
μ€νΈνμ¬ ν΅ν©νλ νλ‘μΈμ€λ₯Ό ν¬ν¨ν©λλ€.
μ΄λ₯Ό ν΅ν΄ μ½λ νμ§μ μ μ§νκ³ κ°λ°μλ€μ΄ λ³κ²½ μ¬νμ λΉ λ₯΄κ² 곡μ νκ³ ν μ€νΈν μ μλλ‘ ν©λλ€.
CD (Continuous Delivery(μ§μμ μ λ¬) λλContinuous Deployment(μ§μμ λ°°ν¬)):
CDλ CIμ ν
μ€νΈλ₯Ό ν΅κ³Όν μ½λ λ³κ²½ μ¬νμ μλμΌλ‘ νλ‘λμ
νκ²½μ λ°°ν¬νλ κ°λ
μ λνλ
λλ€.
Continuous Delivery(μ§μμ μ λ¬) (CD):
μ½λ λ³κ²½ μ¬νμ΄ CIμ ν
μ€νΈλ₯Ό ν΅κ³Όν ν,
μλμΌλ‘ νλ‘λμ
νκ²½μΌλ‘ μ λ¬λ μ€λΉκ° λ μνλ₯Ό μ μ§ν©λλ€.
μ΄κ²μ λ³κ²½ μ¬νμ΄ νλ‘λμ
νκ²½μΌλ‘ μ λ¬λκΈ° μν΄ μΆκ°μ μΈ μΉμΈ λλ νλ‘μΈμ€κ° νμν μ μμμ μλ―Έν©λλ€.
λ³κ²½ μ¬νμ νλ‘λμ
μΌλ‘ λ°°ν¬λ μ μμ§λ§,
λ°°ν¬ νλ‘μΈμ€μ μ΅μ’
μΉμΈμ μλμΌλ‘ μ΄λ£¨μ΄μ§λλ€.
Continuous Deployment(μ§μμ λ°°ν¬) (CD):
μ½λ λ³κ²½ μ¬νμ΄ CIμ ν
μ€νΈλ₯Ό ν΅κ³Όν ν μλμΌλ‘ νλ‘λμ
νκ²½μΌλ‘ λ°°ν¬λλ κ°λ
μ λνλ
λλ€.
λ³κ²½ μ¬νμ΄ μλμΌλ‘ λ°°ν¬λλ©°,
μ΄ λͺ¨λΈμ λ°°ν¬ νλ‘μΈμ€λ₯Ό μλννκ³ λΉ λ₯Έ μννΈμ¨μ΄ 릴리μ€λ₯Ό κ°λ₯νκ² ν©λλ€.
TDD(Test Driven Development) ν
μ€νΈ μ£Όλ κ°λ°μ μννΈμ¨μ΄ κ°λ° λ°©λ²λ‘ μ€ νλλ‘,
κΈ°μ‘΄μ κ°λ° νλ‘μΈμ€μ λ€λ₯΄κ² ν
μ€νΈ μΌμ΄μ€λ₯Ό λ¨Όμ μμ±ν νμ
μ€μ μ½λλ₯Ό κ°λ°νκ³ λ¦¬ν©ν λ§νλ κ°λ° μ μ°¨μ
λλ€.
짧μ κ°λ° μ£ΌκΈ°μ λ°λ³΅μ μ€μμνλ©°, μ μμΌ λ°©λ²λ‘ μ€ νλμΈ eXtreme Programming(XP)μμ μ£Όλ‘ μ¬μ©λλ©°,
μ΄κ²μ "Test-First" κ°λ
μ κ·Όκ±°ν©λλ€.
μ΄λ₯Ό νμ©νμ¬ TDDλ₯Ό ν΅ν΄ μ½λμ μ λ’°μ±μ λμ΄κ³ μ μ§ λ³΄μλ₯Ό μ©μ΄νκ² λ§λ€ μ μμ΅λλ€.
(eXtreme Programming(XP):
("Test-First" κ°λ
:
1. Fast: μ λ ν
μ€νΈλ λΉ λ₯΄κ² μ€νλκ³ λΉ λ₯΄κ² κ²°κ³Όλ₯Ό μμμΌ νλ€.
2. Isolated / Independent: μ λ ν
μ€νΈλ κ·Έ μ체λ§μΌλ‘ μ€νλμ΄μΌ νλ€.
3. Repeatable: μ λ ν
μ€νΈλ λ°λ³΅ κ°λ₯ν΄μΌ νλ€.
4. Self-validating: μ λ ν
μ€νΈλ μ체 κ²μ¦μ΄ κ°λ₯ν΄μΌ νλ€.
5. Thorough / Timely: μ λ ν
μ€νΈλ μ² μ νκ³ μ μ ν λμ μμ±λμ΄μΌ νλ€.)
νλ‘μΈμ€λ μ»΄ν¨ν°μμ μ€νλλ λ
립μ μΈ νλ‘κ·Έλ¨μ μΈμ€ν΄μ€μ
λλ€.
κ° νλ‘μΈμ€λ μ체 λ©λͺ¨λ¦¬ 곡κ°κ³Ό μμ€ν
μμ(CPU μκ°, νμΌ λ° μ
μΆλ ₯ μ₯μΉ)μ ν λΉλ°κ³ ,
νλ‘μΈμ€λ μλ‘ μμ ν λ
립λμ΄ μμ΄ νλμ νλ‘μΈμ€κ° μ€λ₯λ₯Ό μΌμΌμΌλ λ€λ₯Έ νλ‘μΈλ μ€λ₯λ₯Ό λ°μ§ μμ΅λλ€.
μ°λ λλ μ΄λ ν νλ‘κ·Έλ¨ λ΄μμ, νΉν λ‘μΈμ€ λ΄μμ μ€νλλ λ
립μ μΈ μ€ν νλ¦μ λ¨μμ
λλ€.
κ°μ νλ‘μΈμ€ λ΄μμ λ€λ₯Έ μ°λ λμ 곡μ λ©λͺ¨λ¦¬ 곡κ°κ³Ό μμμ μ¬μ©νλ©°,
μ΄λ‘ μΈν΄ μ°λ λ κ° λ°μ΄ν° 곡μ μ ν΅μ μ΄ κ°λ¨νκ² μ΄λ£¨μ΄μ§λλ€.
νμ§λ§ μ΄λ¬ν 곡μ λ‘ μΈν΄ μ°λ λ κ°μ λκΈ°ν μΆ©λ λ¬Έμ κ° λ°μν μ μμ΅λλ€.
μ°¨μ΄μ :
νλ‘μΈμ€λ μλ‘ μμ ν λ
립λμ΄ μμ΄ νλμ νλ‘μΈμ€μ μ€λ₯κ° λ€λ₯Έ νλ‘μΈμ€μ μν₯μ λ―ΈμΉμ§ μμ§λ§,
νλ‘μΈμ€ κ°μ ν΅μ μ΄ λ³΅μ‘νκ³ λΉμ©μ΄ λ§μ΄ λ€κ³ , μμ λ§μ κ³ μ 곡κ°κ³Ό μμμ ν λΉλ°μ μ¬μ©ν©λλ€.
λ°λ©΄μ, μ°λ λλ κ°μ νλ‘μΈμ€μμ μ€νλλ©°,
μ°λ λ κ°μ ν΅μ λΉκ΅μ κ°λ¨νκ³ λΉ λ₯Έ κ²μ λΉν΄,
λ€λ₯Έ μ€λ λμ 곡κ°κ³Ό μμμ 곡μ νλ©΄μ μ¬μ©νλ€λ μ°¨μ΄μ μ΄ μμ΅λλ€.
λ©ν° νλ‘μΈμ€λ μ¬λ¬ κ°μ λ
립μ μΈ νλ‘μΈμ€κ° λμμ μ€νλλ κ²μ νλ€.
κ° νλ‘μΈμ€λ μ체 λ©λͺ¨λ¦¬ 곡κ°μ κ°μ§λ©°, μλ‘ κ°μνμ§ μμΌλ©°, λ
립μ μΌλ‘ μ€νλλ€.
νλμ νλ‘μΈμ€κ° μ€λ₯λ‘ μΈν΄ μ’ λ£λλλΌλ λ€λ₯Έ νλ‘μΈμ€λ κ³μν΄μ μ€νλλ€.
λ€μ€ μ½μ΄ CPUλ₯Ό νμ©νμ¬ λ³λ ¬ μ²λ¦¬λ₯Ό ꡬννλ λ° μ¬μ©λλ€.
μμ μ±μ ν보νλ€λ μ₯μ μ κ°μ§μ§λ§ νλ‘μΈμ€ κ° ν΅μ μ΄ λ³΅μ‘νκ³
μ€λ²ν€λκ° λ°μνμ¬ μ±λ₯μ΄ μ νλλ κ²½μ°κ° μλ€.
λ©ν°μ°λ λλ νλμ νλ‘μΈμ€ λ΄μμ μ¬λ¬ κ°μ μ€λ λκ° λμμ μ€νλλ κ²μ μλ―Ένλ€.
μ€λ λλ κ°μ νλ‘μΈμ€ λ΄μμ 곡μ λ λ©λͺ¨λ¦¬ 곡κ°μ κ°μ§λ©°, μ΄λ‘ μΈν΄ μ€λ λ κ° ν΅μ μ΄ κ°λ¨νκ³ λΉ λ₯΄λ€.
λ©ν°μ°λ λλ₯Ό μ¬μ©νλ©΄ μ€λ λ κ°μ λ°μ΄ν° 곡μ μ μμ λΆλ°°κ° μ½κ³ λΉ λ₯΄κ² μ΄λ£¨μ΄μ§λ€.
κ·Έλ¬λ μ€λ λ κ°μ λκΈ°νμ κ²½μ 쑰건 λ¬Έμ λ₯Ό μ²λ¦¬ν΄μΌ νλ 볡μ‘μ±μ΄ μμΌλ©°,
μ€λ₯ νλκ° μ 체 νλ‘μΈμ€μ μν₯μ μ€ μ μκ³ , λ¨μΌ νλ‘μΈμ€μ κ²½μ° ν¨κ³Όλ₯Ό κΈ°λνκΈ° μ΄λ ΅λ€.
쿼리 μ΅μ νλ λ°μ΄ν°λ² μ΄μ€ μμ€ν
μμ
λ°μ΄ν°λ₯Ό ν¨μ¨μ μΌλ‘ κ²μνκ³ μ²λ¦¬νκΈ° μν΄ SQL 쿼리μ μ€ν κ³νμ κ°μ νλ κ³Όμ μ μλ―Ένλ©°,
μ£Όλ‘ λ°μ΄ν°λ² μ΄μ€ μ±λ₯μ ν₯μμν€κ³ μλ΅ μκ°μ μ€μ΄λ λ° μ€μν μν μ ν©λλ€.
쿼리 μ΅μ ν λ°©λ²μ μ£Όλ‘
μΈλ±μ€ μ¬μ©:
λ°μ΄ν°λ₯Ό λ² μ΄μ€μμ νμν μ 보λ₯Ό μ°ΎκΈ° μν΄ μΈλ±μ€λ₯Ό νμ©νλ€.
ν΅κ³ μ 보 νμ©:
λ°μ΄ν°λ² μ΄μ€λ ν΅κ³ μ 보λ₯Ό κΈ°λ°μΌλ‘ ν λ°μ΄ν° μ‘μΈμ€ λ° μ²λ¦¬ λ°©λ²μ μ΅μ ννλ€.
μμ€ν
λͺ¨λν°λ§:
λ°μ΄ν°λ² μ΄μ€ μμ€ν
μ λͺ¨λν°λ§νμ¬ μ±λ₯ μ΄μλ₯Ό μλ³νκ³ μ‘°μΉνμ¬ μ€ν
μ λΆνλ λ³λͺ© νμμ μ€μΈλ€.
μΊμ±:
μ΄μ μ μ€νν 쿼리 κ²°κ³Όλ₯Ό μΊμμ μ μ₯νμ¬ λμΌν μΏΌλ¦¬κ° λ€μ μ€νλ λ λ°μ΄ν°λ² μ΄μ€μ μ κ·Όνμ§ μκ³ μΊμμμ κ²°κ³Όλ₯Ό λ°ννλ€.
νν°μ
λ° νν°μ
λ:
λμ©λ ν
μ΄λΈμ νν°μ
μΌλ‘ λλμ΄ λ°μ΄ν° κ΄λ¦¬ λ° μΏΌλ¦¬ μ±λ₯μ μ΅μ ννλ€.
DB λ‘μ§μ μ΅μννλ κ²μ μ±λ₯μ ν₯μμν€κ³ μ μ§ λ³΄μλ₯Ό κ°μννλ λ° λμμ΄ λ©λλ€.
μλ₯Ό λ€μ΄, μ΄λ¬ν λ°©λ²μΌλ‘ DB λ‘μ§μ μ΅μνν μ μλ€.
EX.
μΌκ΄λ λ°μ΄ν° λͺ¨λΈλ§:
λ°μ΄ν°λ² μ΄μ€ ν
μ΄λΈκ³Ό μν
ν
λ₯Ό μΌκ΄μ± μκ² μ€κ³νκ³
μ€λ³΅ λ°μ΄ν°λ₯Ό μ€μ΄κ³ μΌκ΄μ±μ μ μ§νμ¬ λ°μ΄ν° μ€λ³΅μ μ΅μννκ³ λ¬΄κ²°μ±μ μ μ§νλ€.
λΉμ¦λμ€ λ‘μ§ μ΅μ ν:
λ°μ΄ν°λ² μ΄μ€μμ λΉμ¦λμ€ λ‘μ§μ μνν기보λ€λ λΉμ¦λμ€ λ‘μ§μ μ ν리μΌμ΄μ
λ 벨μμ μ²λ¦¬νλ€.
λ°μ΄ν°λ² μ΄μ€λ λ°μ΄ν° μ μ₯κ³Ό κ΄λ¦¬μ μ€μ μ λλ κ²μ΄ μ’λ€.
μΊμ±:
λ°λ³΅μ μΌλ‘ λμΌν λ°μ΄ν°λ₯Ό κ²μν΄μΌ νλ κ²½μ°,
κ²μ κ²°κ³Όλ₯Ό μΊμνμ¬ λ°μ΄ν°λ² μ΄μ€ μμ²μ μ΅μνν μ μλ€.
λ°°μΉ μμ
:
λλμ λ°μ΄ν°λ₯Ό μ²λ¦¬ν΄μΌ ν λλ λ°°μΉ μμ
μ μ¬μ©νμ¬,
λ°μ΄ν°λ² μ΄μ€ λΆνλ₯Ό μ΅μνν μ μλ€.
νλ‘νμΌλ§κ³Ό λͺ¨λν°λ§:
λ°μ΄ν°λ² μ΄μ€ μ±λ₯μ λͺ¨λν°λ§νκ³ ,
쿼리 μ€ν κ³νμ λΆμνμ¬ λ³λͺ© νμμ νμ
νκ³ μ΅μ ν μμ
μ μννλ€.
ν μ€νΈ μ½λλ μννΈμ¨μ΄ κ°λ° κ³Όμ μμ κ°λ°λ μννΈμ¨μ΄μ κΈ°λ₯κ³Ό λμμ νμΈνκ³ κ²μ¦νκΈ° μν μ½λμ λλ€.
ν
μ€νΈ μ½λλ₯Ό μμ±νλ μ΄μ λ
1. κ°λ°λ¨κ³ μ΄κΈ°μ λ¬Έμ λ₯Ό λ°κ²¬νκ² λμμ€λ€.
2. κ°λ°μκ° λμ€μ μ½λλ₯Ό 리ν©ν λ§νκ±°λ λΌμ΄λΈλ¬λ¦¬ μ
λ°μ΄νΈ λ±μμ κΈ°μ‘΄ κΈ°λ₯μ΄ μ¬λ°λ₯΄κ² μλνλ μ§λ₯Ό μ μ μλ€.
3. κΈ°λ₯μ λν λΆνμ€μ±μ κ°μμν¬ μ μλ€.
4. μμ€ν
μ λν μ€μ λ¬Έμλ₯Ό μ 곡νλ€.(λ¨μ ν
μ€νΈ μμ²΄κ° λ¬Έμλ‘ μ¬μ© κ°λ₯)
λ±μ΄ μμ΅λλ€.
EX.
μ£Όλ‘ ν
μ€νΈ μ½λλ₯Ό νμ©ν λλ
API μλν¬μΈνΈμ μμ²κ³Ό μλ΅ κ²μ¦μΌλ‘ νΉμ API μλν¬μΈνΈλ₯Ό νΈμΆνκ³ μμ² λ° μλ΅ λ°μ΄ν°λ₯Ό κ²μ¦νλ ν
μ€νΈ μ½λλ₯Ό μμ±νμ¬ APIμ κΈ°λ₯μ νμΈν©λλ€.
λλ, μΈλΆ μλΉμ€λ μμ‘΄μ±μ΄ μλ κ²½μ°, ν΄λΉ μλΉμ€λ₯Ό λͺ¨μ(Mock)λ‘ λ체νμ¬ ν
μ€νΈλ₯Ό μ§νν©λλ€.
μ΄λ κ² νλ©΄ μΈλΆ μλΉμ€μ μμ‘΄νμ§ μκ³ λ ν΄λΉ μλΉμ€μμ ν΅ν©μ κ²μ¦ν μ μμ΅λλ€.
Array(λ°°μ΄)λ κ³ μ λ ν¬κΈ°μ μ°μλ λ©λͺ¨λ¦¬ 곡κ°μ λ°μ΄ν° μμλ₯Ό μ μ₯νλ μ ν λ°μ΄ν° ꡬ쑰μ
λλ€.
λ©λͺ¨λ¦¬ μμμ μ°μμ μΌλ‘ μ μ₯λμ΄ μλ νΉμ§μ κ°κ³ μμ΄ indexλ₯Ό ν΅ν μ κ·Όμ΄ μ©μ΄ν©λλ€.
νμ§λ§. λ°°μ΄μ ν¬κΈ°λ μ²μ μμ±ν λ μ νλ©° μ΄νμλ λ³κ²½ν μ μμ΅λλ€.
LinkedList(μ°κ²° 리μ€νΈ)λ μ¬λ¬ κ°μ λ
Έλλ€μ΄ μμ°¨μ μΌλ‘ μ°κ²°λ ννλ₯Ό κ°λ μλ£ κ΅¬μ‘°μ΄λ©°,
κ° λ
Έλλ λ©λͺ¨λ¦¬μ μ΄λ€ μμΉμλ μ μ₯λ μ μμΌλ©°, λ
Έλ κ°μ μ°κ²°μ ν΅ν΄ λ°μ΄ν°μ μ κ·Όν©λλ€.
νμ§λ§, λλ€ μ‘μΈμ€κ° λΉν¨μ¨μ μ΄λ©°, μ μμΉμ λ°μ΄ν°μ μ κ·Όνλ €λ©΄ μ²μλΆν° μμ°¨μ μΌλ‘ λ
Έλλ₯Ό νμν΄μΌ ν©λλ€.
λ°°μ΄μ λΉ λ₯Έ λλ€ μ‘μΈμ€μ κ³ μ ν¬κΈ°μ 컬λ μ
μ λ€λ£° λ μ μ©νλ©°,
μ°κ²° 리μ€νΈλ λμ μΈ λ°μ΄ν° μΆκ°/μμ μ λ©λͺ¨λ¦¬ λμ ν λΉμ΄ νμνκ±°λ μμ°¨μ μΈ λ°μ΄ν° μ²λ¦¬ μμ
μ μ ν©ν©λλ€.
AWS S3λ κ°μ²΄ μ€ν λ¦¬μ§ μλΉμ€λ‘, νμΌ, λ°μ΄ν° λ° λ―Έλμ΄ μλ£λ₯Ό μ μ₯νκ³ κ΄λ¦¬νλ λ° μ¬μ©λ©λλ€.
μ£Όλ‘ νμΌ λ° λ°μ΄ν° λ°±μ
, μΉ νΈμ€ν
, λ―Έλμ΄ μ€ν 리μ§, λ°μ΄ν° 곡μ λ±μ λͺ©μ μΌλ‘ μ¬μ©λ©λλ€.
AWS EC2λ κ°μ μλ²λ₯Ό νΈμ€ν
νκΈ° μν μλΉμ€λ‘, μ¬μ©μκ° νμμ λ°λΌ κ°μ μλ²λ₯Ό μμ±νκ³ μ¬μ©μκ° νμμ λ°λΌ ꡬμ±ν μ μμ΅λλ€.
μ£Όλ‘ μ ν리μΌμ΄μ
μ μ€ννκ³ νμ₯νλ λ° μ¬μ©λλ©°, κ°μ μλ²λ₯Ό λμ μΌλ‘ μ‘°μ νμ¬ νΈλν½μ λ³λμ μ μνκ² λμν μ μμ΄ μ μ©ν©λλ€.
EX. μ¬μ© κ²½ν
AWS EC2λ₯Ό μ΄μ©νμ¬ μΉ μ ν리μΌμ΄μ
μ νΈμ€ν
νκ³ κ΄λ¦¬ν μ μ΄ μμ΅λλ€.
μλ₯Ό λ€μ΄, νμν 보μ κ·Έλ£Ή λ° λ€νΈμν¬ κ΅¬μ±μ μ€μ νμ¬ μΈλ°μ΄λ λ° μμλ°μ΄λ νΈλν½μ κ΄λ¦¬νκ³ ,
μΉ μ ν리μΌμ΄μ
μ νΈμ€ν
νκ³ κ΄λ¦¬ν κ²½νμ΄ μμ΅λλ€.
μ λ ¬ μκ³ λ¦¬μ¦μ μ»΄ν¨ν° 곡νμμ μ€μνκ² λ€λ£¨λ λ¬Έμ λ‘,
μ΄λ€ λ°μ΄ν° μ
μ΄ μ£Όμ΄μ‘μ λ μ΄λ₯Ό μ ν΄μ§ μμλλ‘ λμ΄νμ¬ μ¬λ°°μΉνλ λ¬Έμ μ
λλ€.
1. λ²λΈ μ λ ¬ (Bubble Sort):
λ²λΈ μ λ ¬μ μ΄μν λ μμλ₯Ό λΉκ΅νκ³ νμν κ²½μ° μλ‘ κ΅νν©λλ€.
μκ° λ³΅μ‘λλ μ΅μ
, νκ· , μ΅μ λͺ¨λ O(n^2)μ΄λ©°, λ°λΌμ ν° λ°μ΄ν° μ
μ λν΄μλ λΉν¨μ¨μ μ
λλ€.
2. μ½μ
μ λ ¬ (Insertion Sort):
λ°°μ΄μ μ λ ¬λ λΆλΆκ³Ό μ λ ¬λμ§ μμ λΆλΆμΌλ‘ λλκ³ , μ λ ¬λμ§ μμ μμλ₯Ό μ μ ν μμΉμ μ½μ
ν©λλ€.
μκ° λ³΅μ‘λλ O(n^2)μ΄λ©° μμ ν¬κΈ°μ λ°μ΄ν°μ μ ν©ν©λλ€.
3. μ ν μ λ ¬ (Selection Sort):
μ£Όμ΄μ§ λ°°μ΄μμ κ°μ₯ μμ μμλ₯Ό μ°Ύμ μ μΌ μμΌλ‘ μ΄λμν΅λλ€.
μκ° λ³΅μ‘λλ O(n^2)μ΄λ©°, λ²λΈ μ λ ¬κ³Ό μ½μ
μ λ ¬κ³Ό μ μ¬ν μ±λ₯μ 보μ
λλ€.
4. λ³ν© μ λ ¬ (Merge Sort):
λΆν μ 볡μ μ¬μ©νμ¬ λ°°μ΄μ λ°μΌλ‘ λλ λ€μ, λΆλΆ λ°°μ΄μ λ³ν©νλ©΄μ μ λ ¬ν©λλ€.
νμ O(n log n)μ μκ° λ³΅μ‘λλ₯Ό κ°μ§λ©°, μμ μ μΈ μ λ ¬ μκ³ λ¦¬μ¦ μ€ νλμ
λλ€.
5. ν΅ μ λ ¬ (Quick Sort):
λΆν μ 볡 λ°©μμ μ¬μ©νλ λΉ λ₯Έ μ λ ¬ μκ³ λ¦¬μ¦ μ€ νλμ
λλ€.
νκ· μκ° λ³΅μ‘λλ O(n log n)μ΄μ§λ§ μ΅μ
μ κ²½μ°μλ O(n^2)μ΄ λ μ μμΌλ©°, λμ©λ λ°μ΄ν°λ₯Ό λΉ λ₯΄κ² μ λ ¬ν μ μμ΅λλ€.
(
O(n^2)(O μ μ κ³±): μ
λ ₯ λ°μ΄ν° ν¬κΈ° nμ λν΄ μ΄μ°¨ λ€νμμΌλ‘ μ±μ₯νλ μκ³ λ¦¬μ¦,
O(n log n)(O μ λ‘κ·Έ μ): μ
λ ₯ λ°μ΄ν° ν¬κΈ° nμ λν΄ λ‘κ·Έ μ νμΌλ‘ μ±μ₯νλ μκ³ λ¦¬μ¦
)