λͺ¨λ“ˆ

랏 뜨·2024λ…„ 12μ›” 8일

πŸ”Ž Overview

Β λͺ¨λ“ˆμ΄λΌ 함은 ν•˜λ‚˜μ˜ κΈ°λŠ₯을 μˆ˜ν–‰ν•˜λŠ” λ‹¨μœ„λΌκ³  μ•Œκ³  μžˆλ‹€.
그런데 κ³΅λΆ€ν•˜λ©΄ ν• μˆ˜λ‘ '이건 λͺ¨λ“ˆμΈκ°€?', '이걸 μ™œ λͺ¨λ“ˆν™”라고 ν•˜μ§€?' λ“±λ“± λͺ¨λ“ˆμ΄λΌλŠ” λ‹¨μ–΄μ˜ 의미λ₯Ό ν™•μ‹€νžˆ μ΄ν•΄ν•˜μ§€ λͺ»ν•˜κ³  μžˆλŠ” 상황이 많이 λ°œμƒν–ˆλ‹€.

Β λͺ¨λ“ˆ λ˜ν•œ CS 및 ν”„λ‘œκ·Έλž˜λ°μ— μžˆμ–΄μ„œ ꡉμž₯히 많이 λ‚˜μ˜€λŠ” 단어이기 λ•Œλ¬Έμ—, 이 κΈ°νšŒμ— ν™•μ‹€ν•˜κ²Œ μ•Œκ³  κ°€λŠ” 게 μ’‹κ² λ‹€λŠ” 생각이 λ“€μ–΄ 이 포슀트λ₯Ό μž‘μ„±ν•˜κ²Œ λ˜μ—ˆλ‹€.


πŸ’‘ λͺ¨λ“ˆ(Module)

  • μ†Œν”„νŠΈμ›¨μ–΄ λ˜λŠ” μ‹œμŠ€ν…œμ—μ„œ νŠΉμ • κΈ°λŠ₯μ΄λ‚˜ μž‘μ—…μ„ λ…λ¦½μ μœΌλ‘œ μˆ˜ν–‰ν•˜λ„λ‘ μ„€κ³„λœ λ‹¨μœ„
  • μž¬μ‚¬μš©μ„±, μœ μ§€λ³΄μˆ˜μ„±, ν˜‘μ—…μ„ μš©μ΄ν•˜κ²Œ 함
  • λ³΅μž‘ν•œ μ‹œμŠ€ν…œμ„ μž‘μ€ ꡬ성 μš”μ†Œλ‘œ λΆ„ν• , 더 효율적인 개발, ν…ŒμŠ€νŠΈ 및 디버깅을 도움
  • λ‹€μ–‘ν•œ λ¬Έλ§₯μ—μ„œ μ‚¬μš©λ˜λ©°, 컴퓨터 κ³Όν•™ μ „λ°˜, ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄, ν”„λ ˆμž„μ›Œν¬ 및 운영 체제 λ“±μ—μ„œ 각기 λ‹€λ₯΄κ²Œ μ •μ˜λ¨

1️⃣ 컴퓨터 μ‚¬μ΄μ–ΈμŠ€(CS) μ—μ„œμ˜ λͺ¨λ“ˆ

  • 컴퓨터 κ³Όν•™μ—μ„œ λͺ¨λ“ˆ 은 μ‹œμŠ€ν…œ μ„€κ³„μ˜ κ°œλ…μœΌλ‘œ μ‚¬μš©λ˜λ©°, μ‹œμŠ€ν…œμ˜ κ°œλ³„ κΈ°λŠ₯적 λ‹¨μœ„
  • λͺ¨λ“ˆν™” λŠ” λ³΅μž‘ν•œ μ‹œμŠ€ν…œμ„ μ—¬λŸ¬ 개의 μž‘μ€ μ„œλΈŒ λͺ¨λ“ˆ 둜 λ‚˜λˆ„λŠ” κ³Όμ •
  • 각 λͺ¨λ“ˆμ€ λ…λ¦½μ μœΌλ‘œ 개발되고, μ‹œμŠ€ν…œμ˜ λ‚˜λ¨Έμ§€ λΆ€λΆ„κ³Ό μΈν„°νŽ˜μ΄μŠ€λ₯Ό 톡해 톡신


πŸ“ μ£Όμš” νŠΉμ§•

  • 독립성
    • 각 λͺ¨λ“ˆμ€ λ‹€λ₯Έ λͺ¨λ“ˆκ³Ό λ…λ¦½μ μœΌλ‘œ μ„€κ³„λ˜μ–΄ λ³€κ²½μ˜ 영ν–₯을 μ΅œμ†Œν™”
  • μž¬μ‚¬μš©μ„±
    • ν•œ 번 μ„€κ³„λœ λͺ¨λ“ˆμ€ λ‹€λ₯Έ ν”„λ‘œμ νŠΈλ‚˜ μ‹œμŠ€ν…œμ—μ„œλ„ μž¬μ‚¬μš©μ΄ κ°€λŠ₯
  • μΊ‘μŠν™”
    • λ‚΄λΆ€ λ™μž‘μ„ 숨기고 μ™ΈλΆ€ μΈν„°νŽ˜μ΄μŠ€λ§Œ λ…ΈμΆœ


β“μ˜ˆμ‹œ

  • 운영 체제
    • 파일 μ‹œμŠ€ν…œ λͺ¨λ“ˆ
      • 파일과 κ΄€λ ¨λœ κΈ°λŠ₯만 λͺ¨μ—¬ 있음
    • λ©”λͺ¨λ¦¬ 관리 λͺ¨λ“ˆ
      • λ©”λͺ¨λ¦¬ 관리와 κ΄€λ ¨λœ κΈ°λŠ₯만 λͺ¨μ—¬ 있음
    • λ„€νŠΈμ›Œν¬ 톡신 λͺ¨λ“ˆ
      • λ„€νŠΈμ›Œν¬ 톡신과 κ΄€λ ¨λœ κΈ°λŠ₯만 λͺ¨μ—¬ 있음

  • μ†Œν”„νŠΈμ›¨μ–΄ 곡학
    • μ‚¬μš©μž 인증 λͺ¨λ“ˆ
      • μ‚¬μš©μž 인증에 κ΄€ν•œ κΈ°λŠ₯만 λͺ¨μ—¬ 있음
    • λ°μ΄ν„°λ² μ΄μŠ€ μ ‘κ·Ό λͺ¨λ“ˆ
      • λ°μ΄ν„°λ² μ΄μŠ€μ— κ΄€ν•œ κΈ°λŠ₯만 λͺ¨μ—¬ 있음
    • λ³΄κ³ μ„œ 생성 λͺ¨λ“ˆ
      • λ³΄κ³ μ„œλ₯Ό μƒμ„±ν•˜λŠ” 것에 κ΄€ν•œ κΈ°λŠ₯만 λͺ¨μ—¬ 있음

2️⃣ μžλ°”μ—μ„œμ˜ λͺ¨λ“ˆ

  • ν”„λ‘œκ·Έλž¨μ„ λ”μš± 잘 κ΅¬μ‘°ν™”ν•˜κ³  κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ¨
  • JPMS - Java Platform Module System 으둜 λΆˆλ¦¬λŠ” μžλ°” λͺ¨λ“ˆ μ‹œμŠ€ν…œμ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ˜μ‘΄μ„±κ³Ό μΊ‘μŠν™”λ₯Ό κ΄€λ¦¬ν•˜λŠ” κΈ°λŠ₯을 제곡
  • 이λ₯Ό 톡해 λŒ€κ·œλͺ¨ μ‹œμŠ€ν…œμ—μ„œλ„ 효과적인 μ½”λ“œ 관리가 κ°€λŠ₯

πŸ“ μ£Όμš” νŠΉμ§•

  • λͺ¨λ“ˆ μ •μ˜
    • λͺ¨λ“ˆμ€ module-info.java 둜 μ •μ˜
  • μΊ‘μŠν™”
    • λ‚΄λΆ€ νŒ¨ν‚€μ§€λŠ” 숨기고, 외뢀에 ν•„μš”ν•œ νŒ¨ν‚€μ§€λ§Œ 곡개
  • μ˜μ‘΄μ„± 관리
    • λͺ¨λ“ˆ κ°„μ˜ μ˜μ‘΄μ„±μ„ λͺ…μ‹œμ μœΌλ‘œ μ •μ˜

❓ μ˜ˆμ‹œ

1) λͺ¨λ“ˆ μ •μ˜

module com.example.myapp {
	requires java.sql;
    exports com.example.myapp.services;
}
  • requires java.sql : 이 λͺ¨λ“ˆμ€ java.sql λͺ¨λ“ˆμ— μ˜μ‘΄ν•œλ‹€λŠ” 의미
  • exports com.example.myapp.services : com.example.myapp.services νŒ¨ν‚€μ§€λ§Œ μ™ΈλΆ€ λͺ¨λ“ˆμ— κ³΅κ°œν•œλ‹€λŠ” 의미

2) λͺ¨λ“ˆ κ°„μ˜ μ˜μ‘΄μ„±

  • com.example.myapp λͺ¨λ“ˆμ€ λ°μ΄ν„°λ² μ΄μŠ€μ™€μ˜ 연결을 μœ„ν•΄ java.sql λͺ¨λ“ˆμ— 의쑴
  • μ™ΈλΆ€ λͺ¨λ“ˆμ€ com.example.myapp.services νŒ¨ν‚€μ§€λ§Œ μ‚¬μš©ν•  수 있음


πŸ‘ μž₯점

  • λΆˆν•„μš”ν•œ μ˜μ‘΄μ„±μ„ μ€„μ—¬μ„œ λ³΄μ•ˆμ„ κ°•ν™”
  • μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 크기λ₯Ό μ€„μ—¬μ„œ 배포 νš¨μœ¨μ„± 증가

3️⃣ μŠ€ν”„λ§μ—μ„œμ˜ λͺ¨λ“ˆ

  • ν”„λ ˆμž„μ›Œν¬ λ‚΄μ—μ„œ νŠΉμ • κΈ°λŠ₯을 μ œκ³΅ν•˜λŠ” 독립적인 ꡬ성 μš”μ†Œ
  • μŠ€ν”„λ§ ν”„λ ˆμž„μ›Œν¬ μžμ²΄κ°€ μ—¬λŸ¬ λͺ¨λ“ˆλ‘œ λ‚˜λˆ μ Έ 있음


‼️ μ£Όμš” μŠ€ν”„λ§ λͺ¨λ“ˆ

1) Spring core

  • 핡심 DI - Dependency Injection 와 IoC - Inversion of Control κΈ°λŠ₯을 제곡

2) Spring Web

  • μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜ κ°œλ°œμ„ μœ„ν•œ MVC νŒ¨ν„΄ 지원

3) Spring Data

  • λ°μ΄ν„°λ² μ΄μŠ€μ™€μ˜ μƒν˜Έμž‘μš©μ„ λ‹¨μˆœν™”

4) Spring Security

  • 인증 및 κΆŒν•œ λΆ€μ—¬ κΈ°λŠ₯ 제곡

5) Spring Boot

  • μŠ€ν”„λ§ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λΉ λ₯΄κ²Œ κ°œλ°œν•  수 μžˆλŠ” 도ꡬ 제곡


🀝 λͺ¨λ“ˆ κ°„μ˜ μƒν˜Έμž‘μš©

  • μŠ€ν”„λ§μ—μ„œλŠ” λͺ¨λ“ˆ κ°„μ˜ μ˜μ‘΄μ„±μ„ λͺ…μ‹œμ μœΌλ‘œ μ •μ˜ν•˜μ§€ μ•Šμ•„λ„ DI μ»¨ν…Œμ΄λ„ˆκ°€ μžλ™μœΌλ‘œ 관리
  • 이둜 인해 λ³΅μž‘ν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œλ„ 효율적으둜 μ˜μ‘΄μ„±μ„ 처리 κ°€λŠ₯

❓ μ˜ˆμ‹œ

1) μŠ€ν”„λ§ λͺ¨λ“ˆ μ‚¬μš© 사둀

  • Spring Data λ₯Ό μ‚¬μš©ν•˜μ—¬ λ°μ΄ν„°λ² μ΄μŠ€ μ ‘κ·Ό λ ˆμ΄μ–΄ ꡬ성
  • Spring Web 으둜 REST API 생성
  • Spring Security 둜 인증 및 κΆŒν•œ λΆ€μ—¬ μΆ”κ°€

2) μ˜μ‘΄μ„± 관리 (Gradle)

implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-security'
  • build.gradle νŒŒμΌμ— 이런 λ°©μ‹μœΌλ‘œ ν•„μš”ν•œ λͺ¨λ“ˆμ„ μ„ νƒμ μœΌλ‘œ μΆ”κ°€ν•˜μ—¬ μ‚¬μš©

4️⃣ 운영 μ²΄μ œμ—μ„œμ˜ λͺ¨λ“ˆ

  • μ»€λ„μ—μ„œ λ‘œλ“œλ˜λŠ” 독립적인 ꡬ성 μš”μ†Œ
  • λ¦¬λˆ…μŠ€ μ—μ„œλŠ” λͺ¨λ“ˆμ΄ λ™μ μœΌλ‘œ λ‘œλ“œ 및 μ–Έλ‘œλ“œ λ˜λŠ” 컀널 ν™•μž₯ κΈ°λŠ₯을 의미


β“μ˜ˆμ‹œ

  • 파일 μ‹œμŠ€ν…œ λͺ¨λ“ˆ (ex4, NTFS ...)
  • λ„€νŠΈμ›Œν¬ ν”„λ‘œν† μ½œ λͺ¨λ“ˆ (TCP/IP)

5️⃣ ν•˜λ“œμ›¨μ–΄ μ„€κ³„μ—μ„œμ˜ λͺ¨λ“ˆ

  • νŠΉμ • κΈ°λŠ₯을 μˆ˜ν–‰ν•˜λŠ” 독립적인 ν•˜λ“œμ›¨μ–΄ 블둝
  • μ˜ˆμ‹œ)
    • CPU μ„€κ³„μ—μ„œμ˜ ALU - Arithmetic Logic Unit
    • λ©”λͺ¨λ¦¬ 컨트둀러

μ°Έκ³ ) OpenAI. (2024).ChatGPT(4o)[Large language model].https://chatgpt.com/

profile
기둝

0개의 λŒ“κΈ€