λΌμ΄λΈλ¬λ¦¬: 곡ν΅μΌλ‘ μ¬μ©λ μ μλ νΉμ ν κΈ°λ₯λ€μ λͺ¨λνν κ²μ μλ―Έ
β»ν΄λλͺ
,νμΌλͺ
λ± κ·μΉμ΄ μκ³ νλ μμν¬μ λΉν΄ μμ λ‘μ
νλ μμν¬: 곡ν΅μΌλ‘ μ¬μ©λ μ μλ νΉμ ν κΈ°λ₯λ€μ λͺ¨λνν κ²μ μλ―Έ
β»ν΄λλͺ
,νμΌλͺ
λ± κ·μΉμ΄ μμΌλ©°, λΌμ΄λΈλ¬λ¦¬μ λΉν΄ μ격νλ€.
μμ: μμ ν΄λμ€κ° λΆλͺ¨ ν΄λμ€μ λ©μλ λ±μ μμλ°μ μ¬μ©, μμ ν΄λμ€μμ μΆκ° λ° νμ₯μ ν μ μλ κ²μ λ§νλ€. μ¬μ¬μ©μ±, μ€λ³΅μ± μ΅μν μΌλ° ν΄λμ€, μΆμ ν΄λμ€ κΈ°λ°μΌλ‘ ꡬν
ꡬν: λΆλͺ¨ μΈν°νμ΄μ€λ₯Ό μμ ν΄λμ€μμ μ¬μ μνμ¬ κ΅¬ν, μμκ³Ό λ¬λ¦¬ λ°λμ λΆλͺ¨ ν΄λμ€μ λ©μλλ₯Ό μ¬μ μνμ¬ κ΅¬νν΄μΌν¨
μΈν°νμ΄μ€λ₯Ό κΈ°λ°μΌλ‘ ꡬν
πλμμΈ ν¨ν΄
- νλ‘κ·Έλ¨μ μ€κ³ν λ λ°μνλ λ¬Έμ μ λ€μ κ°μ²΄ κ°μ μνΈ κ΄κ³ λ±μ μ΄μ©νμ¬ ν΄κ²°ν μ μλλ‘ νλμ 'κ·μ½' ννλ‘ λ§λ€μ΄ λμ κ²μ μλ―Έ
πμ±κΈν€ ν¨ν΄
- νλμ ν΄λμ€μ νλμ μΈμ€ν΄μ€λ§ κ°μ§λ ν¨ν΄. λ³΄ν΅ λ°μ΄ν°λ² μ΄μ€ μ°κ²° λͺ¨λμ λ§μ΄ μ¬μ©νλ€.
- λ€λ₯Έ λͺ¨λλ€μ΄ μΈμ€ν΄μ€λ₯Ό 곡μ νλ©° μ¬μ©ν¨μΌλ‘, μΈμ€ν΄μ€ μμ± λΉμ©μ μ€μΌ μ μμ§λ§, μμ‘΄μ±μ΄ λμ μ§λ λ¨μ μ΄ μλ€.
- πμλ°μμμ μ±κΈν€ ν¨ν΄
public class Singleton {
private static class singleInstanceHolder {
private static final Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance(){
return singleInstanceHolder.INSTANCE;
}
}
public class HelloWorld {
public static void main(String[] args){
Singleton a = Singleton.getInstance();
Singleton b = Singleton.getInstance();
System.out.println(a.hashCode());
System.out.println(b.hashCode());
if(a==b){
System.out.println(true);
}
}
}
- λ¨μ
- TDD(Test Driven Development)μ κ±Έλ¦Όλμ΄ λλ€.
TDDμνμ λ¨μν
μ€νΈλ₯Ό μ£Όλ‘νλλ° λ¨μν
μ€νΈλ ν
μ€νΈκ° μλ‘ λ
립μ μ΄μ΄μΌ νλ©°, ν
μ€νΈλ₯Ό μ΄λ€ μμλ‘λ μ€νν μ μμ΄μΌ νλ€.
νμ§λ§ μ±κΈν€ ν¨ν΄μ νλμ μΈμ€ν΄λ₯Ό κΈ°λ°μΌλ‘ ꡬννλ ν¨ν΄μ΄λ―λ‘ λ
립μ μΈ μΈμ€ν΄μ€λ₯Ό λ§λ€κΈ°κ° μ΄λ ΅λ€.
- β
μμ‘΄μ± μ£Όμ
-
μ±κΈν€ ν¨ν΄μ λͺ¨λκ° κ²°ν©μ κ°νκ² λ§λλ λ¨μ μ΄ μλ€. μ΄λ₯Ό ν΄κ²°νκΈ° μν΄ μμ‘΄μ± μ£Όμ
(DI,Dependency Injection)μ ν΅ν΄ κ²°ν©μ μ‘°κΈ λ λμ¨νκ² λ§λ λ€.
-
μμ‘΄μ±: μ’
μμ±μ΄λΌκ³ λ νλ©° Aκ° Bμ μμ‘΄μ±μ΄ μλ€λ κ²μ Bμ λ³κ²½ μ¬νμ λν΄ A λν λ³ν΄μΌ λλ€λ κ²μ μλ―Ένλ€.
-
λ©μΈ λͺ¨λμ΄ 'μ§μ ' λ€λ₯Έ νμ λͺ¨λμ λν μμ‘΄μ±μ μ£Όλκ² λμ μ€κ°μ μμ‘΄μ± μ£Όμ
μ(dependency injector)κ° μ΄λΆλΆμ κ°λ‘μ± λ©μΈ λͺ¨λμ΄ 'κ°μ 'μ μΌλ‘ μμ‘΄μ±μ μ£Όμ
νλ λ°©μμ΄λ€. λ€λ₯Έ μ©μ΄λ‘ 'λ컀νλ§μ΄ λλ€' λΌκ³ λ νλ€.
-
μμ‘΄μ± μ£Όμ
μ μ₯μ
λͺ¨λλ€μ μ½κ² κ΅μ²΄νμ¬ ν
μ€ν
, λ§μ΄κ·Έλ μ΄μ
μ΄ μ©μ΄.
ꡬνμ, μΆμν λ μ΄μ΄λ₯Ό λ£κ³ ꡬν체λ₯Ό λ£κΈ° λλ¬Έμ μ ν리μΌμ΄μ
μ μ½κ² μΆλ‘ ν μ μμΌλ©°, λͺ¨λκ° κ΄κ³λ€μ΄ μ‘°κΈ λ λͺ
νν΄μ§λ€.
-
μμ‘΄μ± μ£Όμ
μ μμΉ
μμ λͺ¨λμ νμ λͺ¨λμμ μ΄λ€κ²λ κ°μ Έμ€μ§ μμμΌνλ€.
λ λ€ μΆμνμ μμ‘΄ν΄μΌ νλ€.
μΆμνλ μΈλΆ μ¬νμ μμ‘΄νμ§ λ§μμΌνλ€.
π ν©ν 리 ν¨ν΄
- μμκ΄κ³μ λ ν΄λμ€μμ, μμ ν΄λμ€κ° μ€μν λΌλλ₯Ό κ²°μ νκ³ ,
νμ ν΄λμ€μμ κ°μ²΄ μμ±μ κ΄ν ꡬ체μ μΈ λ΄μ©μ κ²°μ νλ ν¨ν΄.
- μμ, νμ ν΄λμ€ λΆλ¦¬λ‘ λμ¨ν κ²°ν©μ κ°μ§λ©°, μμ ν΄λμ€μμλ μΈμ€ν΄μ€ μμ± λ°©μμ λν΄ μ νμκ° μκΈ°μ λ§μ μ μ°μ±μ κ°κ² λλ€.
νμ ν΄λμ€μμλ κ°μ²΄ λ‘μ§μ΄ λ°λ‘ λΌμ΄μ Έ μκΈ°μ μ½λ 리ν©ν°λ§μ νκ³³λ§ κ³ μΉ μ μκ² λμ΄ μ μ§ λ³΄μμ±μ΄ μ¦κ°λλ€.
π μ λ΅ ν¨ν΄
- κ°μ²΄μ νμλ₯Ό λ°κΎΈκ³ μΆμ κ²½μ° 'μ§μ ' μμ νμ§ μκ³ μ λ΅μ΄λΌκ³ λΆλ₯΄λ 'μΊ‘μνν μκ³ λ¦¬μ¦'μ 컨ν
μ€νΈμμμ λ°κΏμ£Όλ©°, μνΈ κ΅μ²΄κ° κ°λ₯νκ² λ§λλ ν¨ν΄μ΄λ€.
ex) κ²°μ λ°©λ²μ μΉ΄μΉ΄μ€μΉ΄λλ‘ νκ±°λ, 루λμΉ΄λλ‘ νκ±°λ λ κ°μ§λ₯Ό μνΈ κ΅μ²΄ κ°λ₯νλλ‘ λ§λ λ€.
- passportμ μ λ΅ ν¨ν΄
- μ λ΅ν¨ν΄μ νμ©ν λΌμ΄λΈλ¬λ¦¬λ‘λ passportκ° μλ€.
Node.jsμμ μΈμ¦ λͺ¨λ ꡬνμ μ¬μ©νλ λ―Έλ€μ¨μ΄ λΌμ΄λΈλ¬λ¦¬λ‘, λ‘컬 μμ΄λ, ν¨μ€μλλ₯Ό ν΅ν΄ μΈμ¦νκ±°λ, νμ΄μ€λΆ, λ€μ΄λ²λ± λ€λ₯Έ μλΉμ€ κΈ°λ° μΈμ¦μ μ§μνλ€.
π μ΅μ λ² ν¨ν΄
-
주체(κ΄μ°°μ)κ° μ΄λ€ κ°μ²΄(κ΄μ°°λμ)μ μν λ³νλ₯Ό κ΄μ°°νλ€κ° μν λ³νκ° μμ λλ§λ€ λ©μλ λ±μ ν΅ν΄ μ΅μ λ² λͺ©λ‘μ μλ μ΅μ λ²λ€(κ°μ²΄μ μνλ³νμ λ°λΌ 'μΆκ° λ³ν μ¬ν'μ΄ μκΈ°λ κ°μ²΄λ€)μκ² λ³νλ₯Ό μλ €μ£Όλ λμμΈ ν¨ν΄.
-
주체, κ°μ²΄λ₯Ό λ°λ‘ λμ§ μκ³ κ°μ²΄λ₯Ό κΈ°λ°μΌλ‘ μ΅μ λ² ν¨ν΄μ ꡬμΆνκΈ°λ νλ€. ex) νΈμν°. λ΄κ° ν¬μ€ν
μ νλ©΄, νλ‘μ°ν μ¬λμκ² ν¬μ€ν
μ μλ €μ€λ€.
-
μ£Όλ‘ μ΄λ²€νΈ κΈ°λ° μμ€ν
μ μ¬μ©νλ©°, MVC ν¨ν΄μλ μ¬μ©λλ€.
modelμ λ³κ²½μ¬νμ΄ μκΈ°λ©΄, update()λ₯Ό ν΅ν΄ λ·°μ μλ €μ£Όκ³ , 컨νΈλ‘€λ¬ λ±μ΄ μλνλ€.
- νλ‘μ κ°μ²΄
- μ΄λ ν λμμ κΈ°λ³Έμ μΈ λμμ μμ
μ μ€κ°μμ κ°λ‘μ± μ μλ κ°μ²΄λ₯Ό λ»νλ€.
- μ΄λ€ μμ± λ³κ²½μ νλ‘μ κ°μ²΄λ₯Ό ν΅ν΄ μ΅μ λ² ν¨ν΄μ ꡬννλ€.
π νλ‘μ ν¨ν΄
-
λμ κ°μ²΄μ μ κ·ΌνκΈ° μ μ κ·Όμ λν νλ¦μ κ°λ‘μ± λμ κ°μ²΄ μλ¨μ 'μΈν°νμ΄μ€ μν 'μ νλ λμμΈ ν¨ν΄μ΄λ€.
-
μ΄λ₯Ό ν΅ν΄ κ°μ²΄μ μμ±, λ³ν, 보μ, μΊμ±, λ‘κΉ
μ μ¬μ©νλ€.
- νλ‘μ μλ²
- ν΄λΌμ΄μΈνΈκ° μμ μ ν΅ν΄ λ€λ₯Έ λ€νΈμν¬ μλΉμ€μ κ°μ μ μΌλ‘ μ μν μ μκ² ν΄μ£Όλ μλ² ex) Nginx,CloudFlare
- Nginxλ λΉλκΈ° μ΄λ²€νΈ κΈ°λ°μ ꡬ쑰μ λ€μμ μ°κ²°μ ν¨κ³Όμ μΌλ‘ μ²λ¦¬ κ°λ₯ν μΉ μλ²μ΄λ©°, μ£Όλ‘ Node.jsμλ² μλ¨μ νλ‘μ μλ²λ‘ νμ©νλ€.
μλ¨μ Nginxλ₯Ό κ±°μΉκ² νμ¬ μ΅λͺ
μ μ¬μ©μκ° μ§μ μ μΌλ‘ μλ²μ μ κ·Όνλ κ²μ μ°¨λ¨νκ³ , 보μμ κ°νν μ μλ€.
- CORS(Cross-Origin Resource Sharing)λ μλ²κ° μΉ λΈλΌμ°μ μμ 리μμ€λ₯Ό λ‘λν λ λ€λ₯Έ μ€λ¦¬μ§μ ν΅ν΄ λ‘λνμ§ λͺ»νκ² νλ HTTP ν€λ κΈ°λ° λ©μ»€λμ¦μ΄λ€.
μμλ‘, λ°±μλμ νλ°νΈμλ μλ² μ¬μ΄μ ν¬νΈλ²νΈκ° λ¬λΌ CORSμλ¬κ° μκΈ°λ©΄ νλ°νΈμλ μλ² μλ¨μ νλ‘μ μλ²λ₯Ό λ¬μ νλ°νΈμλ μλ²μμ μμ²λλ μ€λ¦¬μ§μ λ°±μλμ κ°κ² λ§λ€μ΄ μλ¬λ₯Ό ν΄κ²°νλ€.
π μ΄ν°λ μ΄ν° ν¨ν΄
- μ΄ν°λ μ΄ν°λ₯Ό μ¬μ©νμ¬ μ»¬λ μ
μ μμλ€μ μ κ·Όνλ λμμΈ ν¨ν΄.
μννλ μ¬λ¬κ°μ§ μλ£νμ ꡬ쑰μλ μκ΄μμ΄ μ΄ν°λ μ΄ν°λΌλ νλμ μΈν°νμ΄μ€λ‘ μνκ° κ°λ₯νλ€.
π λ
ΈμΆλͺ¨λ ν¨ν΄
- μ¦μ μ€ν ν¨μλ₯Ό ν΅ν΄ private, public κ°μ μ κ·Ό μ μ΄μλ₯Ό λ§λλ ν¨ν΄μ λ§νλ€.
π MVC ν¨ν΄
- λͺ¨λΈ, λ·°, 컨νΈλ‘€λ¬λ‘ μ ν리μΌμ΄μ
μ κ΅¬μ± μμλ₯Ό λλμ΄ μμλ³λ‘ μ§μ€ν΄μ κ°λ°, μ¬μ¬μ©μ±κ³Ό νμ₯μ±μ΄ μ©μ΄νλ€λ μ₯μ μ΄ μλ€.
- λͺ¨λΈ: μ ν리μΌμ΄μ
μ λ°μ΄ν°, μμ, λ³μλ±μ λ»ν¨
- λ·°: μ¬μ©μ μΈν°νμ΄μ€ μμλ₯Ό λνλ. μ¬μ©μκ° λ³Ό μ μλ νλ©΄μ λ»ν¨
- 컨νΈλ‘€λ¬: λͺ¨λΈκ³Ό λ·°λ₯Ό μ°κ²°, μ΄λ²€νΈλ± λ©μΈ λ‘μ§μ λ΄λΉ, λͺ¨λΈκ³Ό λ·°μ μλͺ
μ£ΌκΈ° κ΄λ¦¬