🌈 [Section2] 17. Spring Framework 기본 2

ν˜„μ£ΌΒ·2022λ…„ 10μ›” 12일
0

bootcamp

λͺ©λ‘ 보기
36/71

πŸ“• 였늘 배운 λ‚΄μš©!

  • μ•„ν‚€ν…μ²˜
  • Spring Framewokr λͺ¨λ“ˆ ꡬ성
  • Spring Boot

✏️ μ‹œμŠ€ν…œ μ•„ν‚€ν…μ²˜ (System Architecture)

  • μ–΄λ–€ μ‹œμŠ€ν…œμ˜ 전체적인 ꡬ성을 큰 그림으둜 ν‘œν˜„ν•œ 것
    ( ν•˜λ“œμ›¨μ–΄μ™€ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό λͺ¨λ‘ 포함 )

✏️ μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜

  • μ†Œν”„νŠΈμ›¨μ–΄μ˜ ꡬ성을 큰 그림으둜 ν‘œν˜„ν•œ 것
    ( ν•˜λ“œμ›¨μ–΄ μ œμ™Έν•œ 컴퓨터 λ‚΄ λͺ¨λ“  ν”„λ‘œκ·Έλž¨ )
    Ex. Java ν”Œλž«νΌ μ•„ν‚€ν…μ²˜ (μ•„λž˜ )

[μ°Έκ³ ] https://mingrammer.com/translation-10-common-software-architectural-patterns-in-a-nutshell/

✏️ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 아킀텍쳐

  • μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ„€κ³„ν•˜κ³  κ΅¬μΆ•ν•˜λŠ” 데 μ‚¬μš©ν•˜λŠ” νŒ¨ν„΄κ³Ό κΈ°μˆ μ„ μ„€λͺ…

    βœ”οΈ μ• ν”Œλ¦¬μΌ€μ΄μ…˜

    • μ†Œν”„νŠΈμ›¨μ–΄ μ’…λ₯˜μ˜ ν•˜λ‚˜
    • μ’κ²ŒλŠ” λ°μŠ€ν¬νƒ‘μ΄λ‚˜ μŠ€λ§ˆνŠΈν°μ—μ„œ μ‚¬μš©ν•˜λŠ” μ‘μš© ν”„λ‘œκ·Έλž¨μ„ 의미
    • λ„“κ²ŒλŠ” ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ„ μ²˜λ¦¬ν•˜λŠ” μ„œλ²„ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ 의미

βœ” κ³„μΈ΅ν˜• μ•„ν‚€ν…μ²˜ (N-ν‹°μ–΄)

API 계측 (API Layer)

  • ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ„ λ°›μ•„λ“€μ΄λŠ” 계측
    ( 보톡 ν‘œν˜„ 계측(Presentation Layer)이라고 λΆˆλ¦¬μ§€λ§Œ, REST APIλ₯Ό μ œκ³΅ν•˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 경우 API κ³„μΈ΅μ΄λΌλŠ” ν‘œν˜„μ΄ 더 적절 )

μ„œλΉ„μŠ€ 계측 (Service Layer)

  • API κ³„μΈ΅μ—μ„œ 전달 받은 μš”μ²­μ„ 업무 λ„λ©”μΈμ˜ μš”κ΅¬ 사항에 맞게 λΉ„μ¦ˆλ‹ˆμŠ€μ μœΌλ‘œ μ²˜λ¦¬ν•˜λŠ” 계측

  • 도메인 지식듀을 μ„œλΉ„μŠ€ κ³„μΈ΅μ—μ„œ λΉ„μ¦ˆλ‹ˆμŠ€ 둜직으둜 κ΅¬ν˜„ν•΄μ•Όν•¨
    ( μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 핡심 )

    βœ”οΈ 도메인 지식 (Domain Knowledge)
    νŠΉμ •, μ „λ¬Έν™”λœ λΆ„μ•Όμ˜ 지식

데이터 μ•‘μ„ΈμŠ€ 계측 (Data Access Layer)

  • λΉ„μ¦ˆλ‹ˆμŠ€ κ³„μΈ΅μ—μ„œ 처리된 데이터λ₯Ό λ°μ΄ν„°λ² μ΄μŠ€ λ“±μ˜ 데이터 μ €μž₯μ†Œμ— μ €μž₯ν•˜κΈ° μœ„ν•œ 계측

✏️ Spring Framework λͺ¨λ“ˆ μ•„ν‚€ν…μ²˜


[μ°Έκ³ ] https://docs.spring.io/spring-framework/docs/5.0.0.M5/spring-framework-reference/html/overview.html

βœ”οΈ λͺ¨λ“ˆ(Module)

  • μ§€μ›λ˜λŠ” μ—¬λŸ¬κ°€μ§€ κΈ°λŠ₯듀을 λͺ©μ μ— 맞게 κ·Έλ£Ήν™” ν•˜μ—¬ λ¬Άμ–΄ 놓은 것
  • λͺ¨λ“ˆλ“€μ€ Java의 νŒ¨ν‚€μ§€ λ‹¨μœ„λ‘œ λ¬Άμ—¬μžˆκ³ , 이 νŒ¨ν‚€μ§€ μ•ˆμ—λŠ” κ΄€λ ¨ κΈ°λŠ₯을 μ œκ³΅ν•˜κΈ° μœ„ν•œ ν΄λž˜μŠ€λ“€μ΄ 포함
  • μž¬μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ„λ‘ 라이브러리 ν˜•νƒœλ‘œ μ œκ³΅λ˜λŠ” κ²½μš°κ°€ 많음

✏️ Spring Boot

  • μ—”ν„°ν”„λΌμ΄μ¦ˆ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ°œλ°œν•˜κΈ° μœ„ν•œ 핡심 κΈ°λŠ₯을 μ œκ³΅ν•˜λŠ” Spring Project 쀑 ν•˜λ‚˜

  • Spring Framework의 μ„€μ • 볡작 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ μƒκ²¨λ‚œ Spring Project 쀑 ν•˜λ‚˜

βœ” Spring Boot μ‚¬μš© 이유 (μž₯점)

  • XML 기반의 λ³΅μž‘ν•œ 섀계 방식 지양
    ➜ λ³΅μž‘ν•œ 섀정을 κ°„λ‹¨ν•˜κ²Œ 함

  • 의쑴 라이브러리의 μžλ™ 관리
    ( 이 μ „μ—λŠ” ν•„μš”ν•œ 라이브러리 이름, 버전을 일일이 μΆ”κ°€ν–ˆμ—ˆμŒ )
    ➜ Spring Boot의 starter λͺ¨λ“ˆ ꡬ성 κΈ°λŠ₯을 톡해 라이브러리λ₯Ό μˆ˜λ™μœΌλ‘œ μ„€μ •ν•΄μ•Όν•˜λŠ” λΆˆνŽΈν•¨ 사라짐

  • μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„€μ •μ˜ μžλ™ ꡬ성
    ➜ μŠ€νƒ€ν„°(Starter) λͺ¨λ“ˆμ„ 톡해 μ„€μΉ˜λ˜λŠ” 의쑴 라이브러리λ₯Ό 기반으둜 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 섀정을 μžλ™μœΌλ‘œ ꡬ성
    ( μ• λ„ˆν…Œμ΄μ…˜λ§Œ μ½”λ“œμ— μΆ”κ°€ν•˜λ©΄ 됨 )
    ➜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— λŒ€ν•œ 섀정을 μ§μ ‘ν•΄μ•Όν•˜λŠ” λ²ˆκ±°λ‘œμ›€μ„ μ΅œμ†Œν™”

  • ν”„λ‘œλ•μ…˜κΈ‰ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ†μ‰¬μš΄ λΉŒλ“œ
    ➜ κ°œλ°œν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ κ΅¬ν˜„ μ½”λ“œλ₯Ό μ†μ‰½κ²Œ λΉŒλ“œν•˜μ—¬ 직접 λΉŒλ“œ 결과물을 War 파일 ν˜•νƒœλ‘œ WAS(Web Application Server)에 올릴 ν•„μš”κ°€ μ—†μŒ

    βœ”οΈ Java 기반의 μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λ°°ν¬ν•˜λŠ” 일반적인 방식
    ➜ κ°œλ°œμžκ°€ κ΅¬ν˜„ν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ½”λ“œλ₯Ό WAR(Web application ARchive) 파일 ν˜•νƒœλ‘œ λΉŒλ“œν•œ 후에 WAS(Javaμ—μ„œλŠ” μ„œλΈ”λ¦Ώ μ»¨ν…Œμ΄λ„ˆλΌκ³ λ„ λΆ€λ¦…λ‹ˆλ‹€)λΌλŠ” μ„œλ²„μ— λ°°ν¬ν•΄μ„œ ν•΄λ‹Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹€ν–‰


    βœ”οΈ WAS(Web Application Server)

    • κ΅¬ν˜„λœ μ½”λ“œλ₯Ό λΉŒλ“œν•΄μ„œ λ‚˜μ˜¨ 결과물을 μ‹€μ œ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μœΌλ‘œ μ‹€ν–‰λ˜κ²Œ ν•΄μ£ΌλŠ” μ„œλ²„
    • Javaμ—μ„œλŠ” μ„œλΈ”λ¦Ώ μ»¨ν…Œμ΄λ„ˆλΌκ³ λ„ 뢀름
  • λ‚΄μž₯된 WASλ₯Ό ν†΅ν•œ μ†μ‰¬μš΄ 배포
    ➜ Spring Boot은 Apache Tomcatμ΄λΌλŠ” WASλ₯Ό λ‚΄μž₯ν•˜κ³  μžˆμ–΄, λ³„λ„μ˜ WASλ₯Ό ꡬ좕할 ν•„μš” X
    ➜ Spring Boot을 톡해 λΉŒλ“œλœ jar νŒŒμΌμ„ μ΄μš©ν•΄μ„œ java -jar <jar 파일λͺ…>.jar λͺ…λ Ήμ–΄ ν•œ μ€„λ§Œ μž…λ ₯ ν•΄μ£Όλ©΄ μ„œλΉ„μŠ€ κ°€λŠ₯ν•œ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹€ν–‰ ν•  수 있음

✏️ Spring Boot의 핡심 컨셉

Spring ꡬ성은 Springμ—κ²Œ 맑겨버리고 λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ—λ§Œ μ§‘μ€‘ν•˜μž !!!!!


🌈 λŠλ‚€μ 

κ·Έλž˜λ„ μ˜€λŠ˜μ€ μ–΄μ œμ˜ μ—°μž₯μ„ !
μ–΄μ œλ³΄λ‹€λŠ” ν™•μ‹€νžˆ 머리에 더 λ“€μ–΄μ™”λ‹€!

0개의 λŒ“κΈ€