πΎ [CS] λͺ¨λν(Modularization)λ 무μμΌκΉμ?
- λͺ¨λν(Modularization)λ μννΈμ¨μ΄ κ°λ°μμ νλ‘κ·Έλ¨μ λ 립μ μ΄κ³ μ¬μ¬μ© κ°λ₯ν μμ λ¨μ(λͺ¨λ)λ‘ λλλ μ€κ³ κΈ°λ²μ λλ€.
- κ° λͺ¨λμ νΉμ κΈ°λ₯μ μννλ©°, λ€λ₯Έ λͺ¨λκ³Ό λͺ ννκ² μ μλ μΈν°νμ΄μ€λ₯Ό ν΅ν΄ μνΈμμ© ν©λλ€.
- λͺ¨λνμ λͺ©μ μ μ½λμ κ°λ μ±, μ μ§λ³΄μμ±, μ¬μ¬μ©μ±μ λμ΄κ³ , 볡μ‘ν μμ€ν μ λ μ½κ² κ΄λ¦¬ν μ μλλ‘ νλ κ² μ λλ€.
πββοΈ λͺ¨λκ³Ό μ»΄ν¬λνΈλ₯Ό λ κ³ λΈλ‘μ λΉμ ν΄λ³΄λ©΄?!
πββοΈ μννΈμ¨μ΄ 곡νμμμ λͺ¨λ.
πββοΈ APIμμμ μΈν°νμ΄μ€μ μννΈμ¨μ΄ 곡νμμμ μΈν°νμ΄μ€ κ°λ .
1οΈβ£ λͺ¨λνμ κ°λ .
1οΈβ£ λͺ¨λ(Module).
- λͺ¨λμ μκΈ°μκ²°μ μΈ λ 립μ μ½λ λ¨μλ‘, νΉμ κΈ°λ₯μ μννλ μ½λμ μ§ν©μ λλ€.
- κ° λͺ¨λμ νλμ κΈ°λ₯μ΄λ μμ μ μ§μ€νλ©°, λ€λ₯Έ λͺ¨λκ³Όμ μμ‘΄μ±μ μ΅μννλλ‘ μ€κ³λ©λλ€.
- μλ₯Ό λ€μ΄, λ‘κ·ΈμΈ μ²λ¦¬, λ°μ΄ν°λ² μ΄μ€ μ κ·Ό, νμΌ μ μΆλ ₯, μ¬μ©μ μΈν°νμ΄μ€ λ±κ³Ό κ°μ κ°κ°μ κΈ°λ₯μ λ΄λΉνλ λͺ¨λμ΄ μμ μ μμ΅λλ€.
2οΈβ£ μΈν°νμ΄μ€(Interface).
- λͺ¨λν(Modularization)μμ μ€μν κ°λ μ λͺ νν μΈν°νμ΄μ€λ₯Ό μ μνλ κ²μ λλ€.
- μΈν°νμ΄μ€(Interface)λ λͺ¨λ(Module)μ΄ μΈλΆμμ μ 곡νλ κΈ°λ₯μ μ μνλ©°, λ€λ₯Έ λͺ¨λμ΄ κΈ°λ₯μ νΈμΆν λ μ¬μ©ν μ μλ λͺ μΈμ λλ€.
- μΈν°νμ΄μ€(Interface) λλΆμ λͺ¨λ λ΄λΆμ ꡬνμ΄ λ³κ²½λλλΌλ, μΈλΆ λͺ¨λκ³Όμ μ°κ²° λ°©μμ λ³νμ§ μμΌλ―λ‘ μ μ°ν μ½λ μμ μ΄ κ°λ₯ν©λλ€.
2οΈβ£ λͺ¨λνμ μ₯μ .
1οΈβ£ μ μ§λ³΄μμ± ν₯μ.
- λͺ¨λνλ νλ‘κ·Έλ¨μ κ°λ³ λͺ¨λμ λ 립μ μΌλ‘ μμ ν μ μκΈ° λλ¬Έμ, νΉμ κΈ°λ₯μ λ¬Έμ κ° λ°μν΄λ ν΄λΉ λͺ¨λλ§ μμ νλ©΄ λ©λλ€.
- μ 체 μμ€ν μ μν₯μ μ£Όμ§ μκ³ λ³κ²½μ΄ κ°λ₯νλ―λ‘ μ μ§λ³΄μκ° μ©μ΄ν©λλ€.
2οΈβ£ μ¬μ¬μ©μ± μ¦κ°.
- λͺ¨λμ λ 립μ μΈ κΈ°λ₯ λ¨μμ΄κΈ° λλ¬Έμ, μ¬λ¬ νλ‘κ·Έλ¨μμ μ¬μ¬μ©ν μ μμ΅λλ€.
- μλ₯Ό λ€μ΄, λ‘κ·ΈμΈ μ²λ¦¬ λͺ¨λμ λ³λλ‘ λ§λ€μ΄ λμΌλ©΄, λ€λ₯Έ νλ‘μ νΈμμλ λμΌν λͺ¨λμ μ¬μ¬μ©ν μ μμ΄ κ°λ° μκ°μ μ€μΌ μ μμ΅λλ€.
3οΈβ£ κ°λ μ± λ° μ½λ κ΄λ¦¬.
- λͺ¨λν(Modularization)λ νλ‘κ·Έλ¨μ ꡬ쑰λ₯Ό 체κ³μ μΌλ‘ κ΄λ¦¬ν μ μκ² νλ©°, κ°κ°μ λͺ¨λμ΄ λͺ νν κΈ°λ₯μ λ΄λΉνκΈ° λλ¬Έμ μ½λμ κ°λ μ±μ΄ λμμ§λλ€.
- μ΄λ ν° νλ‘μ νΈλ 볡μ‘ν μμ€ν μμ νΉν μ μ©νλ©°, μ½λλ₯Ό μ΄ν΄νκΈ° μ½κ³ λλ²κΉ νκΈ°λ μ©μ΄ν©λλ€.
4οΈβ£ κ°λ° ν νμ .
- λͺ¨λνλ₯Ό ν΅ν΄ κ°λ° νμ΄ μμ
μ λλ μ μμ΅λλ€.
- κ° κ°λ°μλ λ€λ₯Έ λͺ¨λμ μν₯μ μ£ΌκΈ° μκ³ μμ μ λͺ¨λμ κ°λ°ν μ μκΈ° λλ¬Έμ λ³λ ¬ κ°λ°μ΄ κ°λ₯ν΄μ§λλ€.
π λ³λ ¬ κ°λ°(Parallel Development)
μ¬λ¬ κ°λ°μκ° λμμ λμΌν νλ‘μ νΈμ λ€λ₯Έ κΈ°λ₯μ΄λ λͺ¨λ(Module)μ κ°λ°νλ μννΈμ¨μ΄ κ°λ° λ°©μμ μλ―Έν©λλ€.
λ³λ ¬ κ°λ°(Parallel Development)μ ν΅ν΄ νλ‘μ νΈμ κ°λ° μλλ₯Ό λμ΄κ³ , κΈ°λ₯μ λ λΉ λ₯΄κ² ꡬνν μ μμ΅λλ€.
λκ·λͺ¨ νλ‘μ νΈμμ νν μ¬μ©λλ κ°λ° λ°©μμΌλ‘, κ°λ° ν¨μ¨μ±μ κ·Ήλνν μ μλ μ₯μ μ΄ μμ΅λλ€.
- μ΄λ ν° νλ‘μ νΈλ κ°λ° μλλ₯Ό λμ΄κ³ , ν¨μ¨μ μΈ νμ μ κ°λ₯νκ² ν©λλ€.
5οΈβ£ μ μ°μ±κ³Ό νμ₯μ±.
-
λͺ¨λν(Modularization)λ₯Ό ν΅ν΄ νλ‘κ·Έλ¨μ μ½κ² νμ₯ν μ μμ΅λλ€.
- μλ‘μ΄ κΈ°λ₯μ΄ νμν λ, κΈ°μ‘΄ λͺ¨λ(Module)μ μμ νκ±°λ μλ‘μ΄ λͺ¨λ(Module)μ μΆκ°νλ λ°©μμΌλ‘ μ½κ² νμ₯ν μ μμ΅λλ€.
- μμ€ν μ μ μ°μ±μ΄ μ¦κ°νμ¬ λ€μν μꡬ μ¬νμ λ§κ° νλ‘κ·Έλ¨μ μ‘°μ ν μ μμ΅λλ€.
3οΈβ£ λͺ¨λνμ μ.
1οΈβ£ Javaμμμ λͺ¨λν.
- Java 9λΆν°λ λͺ¨λ μμ€ν μ λμ νμ¬, μ ν리μΌμ΄μ μ λͺ νν μμ‘΄μ±μ κ°μ§ μ¬λ¬ λͺ¨λλ‘ λλ μ μκ² λμμ΅λλ€.
- μλ₯Ό λ€μ΄,
module-info.java
νμΌμ μ¬μ©ν΄ λͺ¨λμ μ μνκ³ , ν΄λΉ λͺ¨λμ΄ μ΄λ€ λͺ¨λμ μ¬μ©νλμ§, μΈλΆμ μ΄λ€ ν¨ν€μ§λ₯Ό 곡κ°νλμ§ λͺ νν ν μ μμ΅λλ€.
module com.example.mymodule {
export com.example.service; // μΈλΆμ 곡κ°ν ν¨ν€μ§
requires java.sql; // νμν λͺ¨λ
}
2οΈβ£ νλ‘μ νΈ κ΅¬μ‘°μ λͺ¨λν.
- μΉ μ ν리μΌμ΄μ
μμ μΌλ°μ μΌλ‘ λ€μκ³Ό κ°μ λͺ¨λλ‘ λλ μ μμ΅λλ€.
- λ°μ΄ν° μ κ·Ό λͺ¨λ : λ°μ΄ν°λ² μ΄μ€μ μνΈμμ©νλ κΈ°λ₯μ λ΄λΉ.
- λΉμ¦λμ€ λ‘μ§ λͺ¨λ : μ ν리μΌμ΄μ μ ν΅μ¬ λ‘μ§μ μ²λ¦¬.
- νλ μ ν μ΄μ λͺ¨λ : μ¬μ©μ μΈν°νμ΄μ€ λ° μμ²/μλ΅ μ²λ¦¬.
- μ νΈλ¦¬ν° λͺ¨λ : λ€μν λͺ¨λμμ 곡ν΅μ μΌλ‘ μ¬μ©νλ κΈ°λ₯μ μ 곡.
- μ΄λ¬ν λͺ¨λ ꡬ쑰λ₯Ό ν΅ν΄ κ°λ°μλ κ° λͺ¨λμ λ 립μ μΌλ‘ κ°λ°, ν μ€νΈ, μ μ§λ³΄μν μ μμΌλ©°, κ° λͺ¨λμ νλμ κΈ°λ₯μ μ§μ€νλλ‘ μ€κ³λ©λλ€.
4οΈβ£ μμ½.
- λͺ¨λν(Modularization)λ νλ‘κ·Έλ¨μ μκ³ λ 립μ μΈ λͺ¨λλ‘ λλμ΄ κ°λ μ±, μ μ§λ³΄μμ±, μ¬μ¬μ©μ±μ λμ΄λ μ€κ³ κΈ°λ²μ λλ€.
- λͺ¨λν(Modularization)λ νλ‘κ·Έλ¨μ κΈ°λ₯λ³λ‘ λ 립μ μΈ λͺ¨λ(Module)λ‘ κ΅¬μ±λμ΄, κ° λͺ¨λμ΄ νΉμ μμ μ μννκ³ , λ€λ₯Έ λͺ¨λκ³Ό λͺ νν μΈν°νμ΄μ€(Interface)λ‘ μνΈμμ©ν©λλ€.
- μ΄λ₯Ό ν΅ν΄ κ°λ°, μ μ§λ³΄μ, νμ₯μ΄ μ¬μμ§κ³ , ν νμ λ μνν΄μ§ μ μμ΅λλ€.
- λͺ¨λν(Modularization)λ₯Ό μ μ€κ³νλ©΄ 볡μ‘ν μμ€ν μ 체κ³μ μΌλ‘ κ΄λ¦¬ν μ μμΌλ©°, μ½λμ μ¬μ¬μ©μ±μ λμ¬ κ°λ° μλλ₯Ό ν₯μμν¬ μ μμ΅λλ€.