λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Project ESG+AI/Tech Basics

3일차. IT κ°œλ…μ •λ¦¬

by GreenJin_S2 2025. 10. 13.

 

 

컴파일

톡역

화면은 인터프린터

 

μ•„λ¦¬μŠ€ν† ν…”λ ˆμŠ€-이상/μ΄ν•˜ 둜 λ‚˜λˆ”

λ§ˆν¬μ—… 

 

 

 

이진뢄λ₯˜λ²•

: μ£Όμ–΄μ§„ 데이터λ₯Ό 두 κ°€μ§€ κ·Έλ£Ή(클래슀) 쀑 ν•˜λ‚˜λ‘œ λΆ„λ₯˜ν•˜λŠ” 방법 (μ°Έ/ κ±°μ§“) 

 

(파일/폴더)

 

 

개발자의 생산성을 κ°€μ†ν™”μ‹œν‚¨λ‹€

μ˜€ν”ˆμ†ŒμŠ€-꽁짜, 무료

μ†ŒμŠ€/λ¦¬μ†ŒμŠ€μ˜ 차이

 

 

* κ·Έλž˜λ“€μ€ μŠ€ν”„λ§ μ „μš©

νŒŒμ΄μ¬μ€ λ‹€λ₯Έ μš©μ–΄ 씀

 

λΉŒλ“œ: μžλ°”μ—μ„œ 컴파일 ν•΄μ„œ .class 파일둜 λ§Œλ“œλŠ” κ³Όμ •

/λΉŒλ“œνˆ΄

 

-λ§₯락적 사고/ μš°λ¦¬κ°€ μ•Œμ•„μ•Όν•˜λŠ”κ±°λŠ” λΉŒλ“œλ₯Ό ν•΄μ€˜! 라고 말할 수 있으면 됨

 

 

쒋은 μ§ˆλ¬Έμ΄μ—μš” 😊
λΉŒλ“œ(build)”와 “λΉŒλ“œ 툴(build tool)”은 λΉ„μŠ·ν•˜κ²Œ λ“€λ¦¬μ§€λ§Œ, μ˜λ―Έμ™€ 역할이 λ‹€λ¦…λ‹ˆλ‹€.
μ‰½κ²Œ 말해 λΉŒλ“œλŠ” ‘κ³Όμ •’이고, **λΉŒλ“œνˆ΄μ€ κ·Έ 과정을 μžλ™μœΌλ‘œ ν•΄μ£ΌλŠ” ‘도ꡬ’**μ˜ˆμš”.


🧩 1️⃣ λΉŒλ“œ(Build)λž€?

**λΉŒλ“œ(build)**λŠ” κ°œλ°œμžκ°€ μž‘μ„±ν•œ μ†ŒμŠ€μ½”λ“œλ₯Ό μ‹€ν–‰ κ°€λŠ₯ν•œ ν˜•νƒœλ‘œ λ³€ν™˜ν•˜λŠ” 과정을 λ§ν•©λ‹ˆλ‹€.
즉, μ‚¬λžŒμ΄ 읽을 수 μžˆλŠ” μ½”λ“œλ₯Ό 컴퓨터가 μ‹€ν–‰ν•  수 μžˆλ„λ‘ λ§Œλ“œλŠ” κ±°μ˜ˆμš”.

πŸ”§ 예λ₯Ό 듀어보면:

  • Java μ½”λ“œλ₯Ό μ»΄νŒŒμΌν•΄μ„œ .class 파일둜 λ§Œλ“œλŠ” κ³Όμ •
  • μ—¬λŸ¬ νŒŒμΌμ„ ν•˜λ‚˜μ˜ μ‹€ν–‰ 파일(.exe, .jar, .apk)둜 λ¬ΆλŠ” κ³Όμ •
  • μ›Ή ν”„λ‘œμ νŠΈμ—μ„œ JS, CSS, 이미지 등을 μ••μΆ•/μ΅œμ ν™”ν•˜λŠ” κ³Όμ •

이 λͺ¨λ“  게 “λΉŒλ“œ”μ˜ˆμš”.


βš™οΈ 2️⃣ λΉŒλ“œνˆ΄(Build Tool)μ΄λž€?

λΉŒλ“œνˆ΄μ€ μœ„μ˜ “λΉŒλ“œ κ³Όμ •”을 μžλ™ν™”ν•΄μ£ΌλŠ” ν”„λ‘œκ·Έλž¨μ΄μ—μš”.
λΉŒλ“œλŠ” 맀번 반볡적이고 λ³΅μž‘ν•˜κΈ° λ•Œλ¬Έμ—, λΉŒλ“œνˆ΄μ΄ 이λ₯Ό λŒ€μ‹  μ²˜λ¦¬ν•΄μ€λ‹ˆλ‹€.

πŸ”© μ£Όμš” μ—­ν• 

  • 컴파일(compile)
  • ν…ŒμŠ€νŠΈ μ‹€ν–‰(test)
  • νŒ¨ν‚€μ§•(package)
  • μ˜μ‘΄μ„± 관리(dependency management)
  • 배포(deploy)

πŸ’‘ 3️⃣ μ˜ˆμ‹œλ‘œ 비ꡐ해보기

ꡬ뢄섀λͺ…λŒ€ν‘œ μ˜ˆμ‹œ
λΉŒλ“œ (κ³Όμ •) μ†ŒμŠ€μ½”λ“œλ₯Ό μ‹€ν–‰ 파일둜 λ§Œλ“œλŠ” ν–‰μœ„ javac Main.java
λΉŒλ“œνˆ΄ (도ꡬ) λΉŒλ“œ 과정을 μžλ™ν™”ν•˜κ³  관리 Maven, Gradle, Webpack, Vite, npm scripts

🧠 4️⃣ μ‰½κ²Œ λΉ„μœ ν•˜μžλ©΄

  • λΉŒλ“œ”λŠ” μš”λ¦¬λ₯Ό λ§Œλ“œλŠ” 과정이고,
  • λΉŒλ“œνˆ΄”은 μš”λ¦¬ 과정을 μžλ™μœΌλ‘œ ν•΄μ£ΌλŠ” μš”λ¦¬ λ‘œλ΄‡μ΄μ—μš”. 🍳

μš”λ¦¬λ₯Ό μ‚¬λžŒμ΄ 일일이 ν•  μˆ˜λ„ μžˆμ§€λ§Œ, λ‘œλ΄‡μ΄ ν•˜λ©΄ 더 λΉ λ₯΄κ³  μ •ν™•ν•˜μ£ .

 

 

μžλ°”μ™€ λ¦¬μ†ŒμŠ€

λ°±μ—”λ“œλ§Œ ν•˜λ©΄ 컴파일

전체 λ‹€ ν•˜λ©΄ μ†ŒμŠ€

 

λ°±μ—”λ“œλž€? api 

 

μ—”λ“œ-끝, 

μ‚¬μš©μž μž…μž₯μ—μ„œ λ°±, ν”„λ‘ νŠΈ(ν™”λ©΄)

 

-μžλ°”: λ°±μ—”λ“œ->클래슀 (컴파일 , λΉŒλ“œ? μžλ°”νŒŒμΌμ„ λΉŒλ“œν•˜λ©΄ ν΄λž˜μŠ€κ°€ 생성됨)

-λ¦¬μ†ŒμŠ€: ν”„λ‘ νŠΈμ—”λ“œ, μΈν„°ν”„λ‘ νŠΈ μ–Έμ–΄

 

μžλ°”κ°€ 파이썬으둜 λ°”κΎΈλ©΄ 에이썬이 λ˜λŠ” 것

λ°±μ—”λ“œ-파이썬

 

ν”„λ‘ νŠΈμ—”λ“œ = μ‚¬μš©μžκ°€ λ³΄λŠ” ν™”λ©΄,
λ°±μ—”λ“œ = κ·Έ ν™”λ©΄ λ’€μ—μ„œ μž‘λ™ν•˜λŠ” μ‹œμŠ€ν…œ
이라고 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 


πŸ’» 1️⃣ ν”„λ‘ νŠΈμ—”λ“œ(Frontend)λž€?

🧩 μ •μ˜

ν”„λ‘ νŠΈμ—”λ“œλŠ” **μ‚¬μš©μžμ—κ²Œ 직접 λ³΄μ΄λŠ” λΆ€λΆ„(UI)**을 λ§Œλ“œλŠ” μ˜μ—­μž…λ‹ˆλ‹€.
λΈŒλΌμš°μ €μ—μ„œ μ‹€ν–‰λ˜λ©°,
μ‚¬μš©μžκ°€ 클릭·μž…λ ₯·μ΄λ™ν•˜λŠ” λͺ¨λ“  μ‹œκ°μ  μš”μ†Œλ₯Ό λ‹΄λ‹Ήν•΄μš”.

πŸ› οΈ μ£Όμš” 기술

  • HTML: ꡬ쑰λ₯Ό λ§Œλ“¦
  • CSS: λ””μžμΈ(색상, 배치 λ“±)을 λ‹΄λ‹Ή
  • JavaScript: ν™”λ©΄μ˜ λ™μž‘(λ²„νŠΌ 클릭, μ• λ‹ˆλ©”μ΄μ…˜ λ“±)을 κ΅¬ν˜„
  • ν”„λ ˆμž„μ›Œν¬/라이브러리: React, Vue.js, Angular λ“±

πŸ’‘ μ˜ˆμ‹œ

  • 둜그인 νŽ˜μ΄μ§€μ˜ μž…λ ₯μ°½, λ²„νŠΌ, λ””μžμΈ
  • κ²Œμ‹œνŒ λͺ©λ‘, μ’‹μ•„μš” λ²„νŠΌ, λŒ“κΈ€ μ°½
  • 마우슀 클릭 μ‹œ νŽ˜μ΄μ§€ μ „ν™˜ 효과

πŸ–₯️ 2️⃣ λ°±μ—”λ“œ(Backend)λž€?

🧩 μ •μ˜

λ°±μ—”λ“œλŠ” μ‚¬μš©μž λˆˆμ— 보이지 μ•ŠλŠ” μ„œλ²„ μͺ½ λ‘œμ§μ„ μ²˜λ¦¬ν•˜λŠ” μ˜μ—­μž…λ‹ˆλ‹€.
즉, 데이터λ₯Ό μ €μž₯ν•˜κ³ , κ³„μ‚°ν•˜κ³ , μ „λ‹¬ν•˜λŠ” μ—­ν• μ΄μ—μš”.

πŸ› οΈ μ£Όμš” 기술

  • ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄: Java, Python, Node.js, Go, C# λ“±
  • DB(Database): MySQL, PostgreSQL, MongoDB λ“±
  • μ„œλ²„ ν”„λ ˆμž„μ›Œν¬: Spring, Django, Express, FastAPI λ“±

πŸ’‘ μ˜ˆμ‹œ

  • 둜그인 μ‹œ λΉ„λ°€λ²ˆν˜Έλ₯Ό ν™•μΈν•˜κ³  μ„Έμ…˜ 생성
  • κ²Œμ‹œκΈ€ μ €μž₯ 및 쑰회
  • 결제 처리, 메일 λ°œμ†‘, API 응닡

πŸ”„ 3️⃣ ν”„λ‘ νŠΈμ—”λ“œ ↔ λ°±μ—”λ“œ 관계

이 λ‘˜μ€ 항상 μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈ κ΄€κ³„λ‘œ ν˜‘λ ₯ν•©λ‹ˆλ‹€.

μ—­ν• μ„€λͺ…μ˜ˆμ‹œ
ν”„λ‘ νŠΈμ—”λ“œ μ‚¬μš©μž μž…λ ₯을 λ°›κ³  화면을 ν‘œμ‹œ μ‚¬μš©μžκ°€ 둜그인 λ²„νŠΌ 클릭
λ°±μ—”λ“œ μž…λ ₯값을 μ²˜λ¦¬ν•˜κ³  κ²°κ³Όλ₯Ό λ°˜ν™˜ 둜그인 정보 확인 ν›„ 성곡/μ‹€νŒ¨ 응닡
톡신 방식 API (REST, GraphQL λ“±) /api/login 호좜 ν›„ JSON 응닡

 

λ¦¬μ†ŒμŠ€----> μžλ°”λ‘œ 보냄 (classpath)

-μžλ°”: λ°±μ—”λ“œ- (컴파일 , λΉŒλ“œ) ->클래슀 : (μžλ°”νŒŒμΌμ„ λΉŒλ“œν•˜λ©΄ ν΄λž˜μŠ€κ°€ 생성됨)

-λ¦¬μ†ŒμŠ€: ν”„λ‘ νŠΈμ—”λ“œ, μΈν„°ν”„λ‘ νŠΈ μ–Έμ–΄

 

1. classpathλž€?

classpathλŠ” Javaμ—μ„œ ν΄λž˜μŠ€λ‚˜ λ¦¬μ†ŒμŠ€λ₯Ό μ°ΎλŠ” 경둜(path)λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€.
μ‰½κ²Œ λ§ν•΄μ„œ,

"JVM(Java Virtual Machine)이 .class νŒŒμΌμ΄λ‚˜ μ„€μ • νŒŒμΌμ„ 찾을 λ•Œ μ–΄λ””μ„œ μ°Ύμ•„μ•Ό ν•˜λŠ”μ§€ μ•Œλ €μ£ΌλŠ” 경둜"
라고 μƒκ°ν•˜μ‹œλ©΄ λ©λ‹ˆλ‹€.

2. classpath:/ 의 의미

이 ν‘œν˜„μ€ 주둜 Spring μ„€μ •μ—μ„œ 자주 λ³΄μž…λ‹ˆλ‹€.
예λ₯Ό λ“€μ–΄ @PropertySource("classpath:/config/app.properties") 같은 μ½”λ“œμš”.

μ—¬κΈ°μ„œ classpath:/ λŠ” λ‹€μŒμ„ λœ»ν•©λ‹ˆλ‹€:

“ν˜„μž¬ ν”„λ‘œμ νŠΈμ˜ classpath 루트(root)λ‘œλΆ€ν„° νŒŒμΌμ„ 찾아라.”

즉,

  • classpath: → "클래슀패슀 μ•ˆμ—μ„œ μ°ΎλŠ”λ‹€"
  • / → "루트(맨 처음 경둜)λΆ€ν„° μ°ΎλŠ”λ‹€"

두 개λ₯Ό 합쳐 classpath:/ κ°€ λ˜λŠ” κ±°μ˜ˆμš”.

 

:/

: is (be 동사)

 

static -ν•΄μ²΄ν•˜μ§€ 마!  exλͺ¨λ‚˜λ¦¬μž 그림을 μ–΄λ””μ„œ λ³΄λ‚˜ λ˜‘κ°™μ€ 그림이 λ˜λŠ”κ²ƒ

μ•„κΉŒ static λ²ˆμ—­ν•  ν•„μš” μ—†λŠ” μ΄μœ λŠ” μ–Έμ–΄λ‘œ λ³΄λŠ”κ²ƒμ΄ μ•„λ‹ˆλž€ μ΄λ―Έμ§€λ‘œ λ³΄λŠ” κ²ƒμž„

 

***

spring.mvc.view.prefix=/ spring.mvc.view.suffix=.htmlμ—μ„œ MVCκ°€ 뭐야?

 

πŸ”Ή MVCλž€ 무엇인가?

MVCλŠ” Model–View–Controller 의 μ•½μžμ˜ˆμš”.
μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ ꡬ쑰적으둜 λ‚˜λˆ„κΈ° μœ„ν•œ λŒ€ν‘œμ μΈ λ””μžμΈ νŒ¨ν„΄(섀계 νŒ¨ν„΄) μž…λ‹ˆλ‹€.

ꡬ성 μš”μ†Œμ—­ν• μ˜ˆμ‹œ
Model (λͺ¨λΈ) 데이터와 λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ λ‹΄λ‹Ή DBμ—μ„œ μ‚¬μš©μž 정보λ₯Ό κ°€μ Έμ˜€λŠ” μ½”λ“œ
View (λ·°) 화면에 λ³΄μ—¬μ£ΌλŠ” λΆ€λΆ„ HTML, JSP, Thymeleaf ν…œν”Œλ¦Ώ λ“±
Controller (컨트둀러) μ‚¬μš©μžμ˜ μš”μ²­μ„ λ°›κ³ , λͺ¨λΈκ³Ό λ·°λ₯Ό μ—°κ²° /login μš”μ²­μ„ λ°›κ³  둜그인 처리 ν›„ login.html둜 이동

πŸ‘‰ 즉,

  • ControllerλŠ” “쀑간 κ΄€λ¦¬μž”
  • Model은 “데이터 λ‹΄λ‹Ήμž”
  • ViewλŠ” “ν™”λ©΄ λ””μžμ΄λ„ˆ”
    라고 보면 이해가 μ‰½μŠ΅λ‹ˆλ‹€.

ν•œ 쀄 μš”μ•½

MVCλž€?
Model(데이터) - View(ν™”λ©΄) - Controller(μš”μ²­ 처리)의 ꡬ쑰둜
μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ—­ν• λ³„λ‘œ λ‚˜λˆ„μ–΄ κ΄€λ¦¬ν•˜λŠ” 섀계 νŒ¨ν„΄μž…λ‹ˆλ‹€.

그리고

spring.mvc.view.prefix 와 suffix λŠ”
“Controllerκ°€ λ°˜ν™˜ν•˜λŠ” View 이름을 μ‹€μ œ HTML(λ˜λŠ” JSP) 파일둜 λ§€μΉ­ν•΄μ£ΌλŠ” μ„€μ •”μ΄μ—μš”.