Server program / interface
์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ์ค๊ธฐ์ํ ๋ด์ฉ ์ ๋ฆฌ
์๋ฒํ๋ก๊ทธ๋จ ๊ตฌํ ์ถ์ ์์
ํ์ค tip! ๊ทธ๋ฅ ์ํํธ์จ์ด ๊ฐ๋ฐํ๋ค๊ณ ์๊ฐํ๊ณ ์์๋ฅผ ์ดํดํ๊ธฐ๊ธฐ
- ๊ฐ๋ฐํ๊ฒฝ ๊ตฌ์ถํ๊ธฐ
- ๊ณตํต๋ชจ๋ ๊ตฌํํ๊ธฐ
- ์๋ฒํ๋ก๊ทธ๋จ ๊ตฌํํ๊ธฐ
- ๋ฐฐ์นํ๋ก๊ทธ๋จ ๊ตฌํํ๊ธฐ
์๋ฒ์ ์ข ๋ฅ
- ์น ์๋ฒ: ์น ์์ ์ ์ ์ฝํ ์ธ ์ฒ๋ฆฌ. HTTP ์์ฒญ๊ณผ ์๋ต ์ฒ๋ฆฌ
- ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ(WAS): ๋์ ์ฝํ ์ธ , ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์ฒ๋ฆฌ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ
- ํ์ผ ์๋ฒ: ํ์ผ ์๋น
๋ชจ๋์ ๊ฐ๋ฐํ์ ๋ ์์ง๋์ ๊ฒฐํฉ๋
๋ชจ๋๊ฐ๋ฐ = ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ๊ตฌํ
1) ์์ง๋(๊ฐํ ์๋ก ์ข์)
๊ธฐ์๊ต์ ์๋ ผ์ฐ
์๊ธ์์ธ์ฐ๋๋ฒ: [๊ธฐ]์จ๊ฐ [์][๊ต]=์ข ๊ต์ ์ฃฝ์ ํ์ จ๋๋ฐ [์ ]๋ [์]๋ (ํ์ง๋ง์ธ์)[๋ ผ]๋ ธ[์ฐ]
๊ธฐ๋ฅ์ โ ์์ฐจ์ โ ๊ตํ์ โ ์ ์ฐจ์ โ ์๊ฐ์ โ ๋ ผ๋ฆฌ์ โ ์ฐ์ฐ์
์์ฃผ ํ๋ฆฌ๋โฆ ์์ฐจ์ vs ์ ์ฐจ์ !?
- ์์ฐจ์ ์์ง๋: ๋ชจ๋์ ์ถ๋ ฅ(๋ฆฌํด๊ฐ)์ด ๋ค๋ฅธ ๋ชจ๋์ ์
๋ ฅ์ผ๋ก ๋ค์ด๊ฐ (ํจ์ฌ ์ข์!!)
def readFile(fileName): # ํ์ผ์ ์ฝ์ด๋ค์ return data def processData(data): # ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํจ return processedData def writeFile(fileName, data): # ํ์ผ์ ๋ฐ์ดํฐ๋ฅผ ์ pass data = readFile("input.txt") processedData = processData(data) writeFile("output.txt", processedData)
- ์ ์ฐจ์ ์์ง๋: ๊ด๋ จ๋ ๊ธฐ๋ฅ์ด ํน์ ์์๋ก ์คํ๋๋ ๊ฒ
def initializeSystem(): # ์์คํ ์ด๊ธฐํ pass def startService(): # ์๋น์ค ์์ pass def shutdownService(): # ์๋น์ค ์ข ๋ฃ pass
2) ๊ฒฐํฉ๋(๊ฐํ ์๋ก ์์ข์)
๋ชจ๋๊ฐ์ ๊ฒฐํฉ๋๋ฉด ์ฐ๊ด๊ด๊ณ๊ฐ ๊ฐํด์ง๋ฉด ์ ์ง๋ณด์ ์ด๋ ต๊ณ ์ค๋ฅ ์ฐพ๊ธฐ ์ด๋ ต์ต๋๋ค.
๋ด์ฉ โ ๊ณตํต โ ์ธ๋ถ โ ์ ์ด โ ์คํฌํ โ ์๋ฃ
๋ด๊ณต์ธ์ ์ค์
์๊ธ์์ธ์ฐ๋๋ฒ: ([๋ด][๊ณต]์ด ์ข์ [์ธ][์ ]ํ (์ฐ)[์ค][์] ^^..)
๊ณตํต๋ชจ๋ ๊ตฌํ ์ ์ฐจ
DTO/VO โ SQL โ DAO โ Service โ Controller โ View
- DTO/VO: Data Transfer Object, Value Object(read-only)
- ์ ์: ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ณ ์ ์ฅ์ ์ํ ๊ฐ์ฒด๋ฅผ ์ค๊ณํฉ๋๋ค.
- ๊ฐ์ฒด๋ฅผ ์ ์ํด์ฃผ๋ ๊ฒ์ ๋๋ค.
- ๋ฐ์ดํฐ์ ์ ์ก์ด๋ ์ ์ฅ์ ์ํ ๊ฐ์ฒด๋ฅผ ์ค๊ณํ๋ ๊ณผ์ ์ ๋๋ค.
- SQL: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ์ ์ํ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํฉ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค.
์๋ฒ๋ ์ปจํธ๋กค๋ฌ์์ RDBMS๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ์ ์ ๊ทผํฉ๋๋ค.
์ ๊ทผ ๋ฐฉ๋ฒ์ ์ค๊ณํ๋ ๊ณผ์ ์ ๋๋ค. - DAO: ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ํธ์์ฉ์ ๋ด๋นํ๋ ๊ฐ์ฒด๋ฅผ ์ค๊ณํฉ๋๋ค.
์ค์ ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํธ์์ฉํ๋ ๊ฐ์ฒด๊ฐ ํ์ํฉ๋๋ค.
Data Access Object์ ์ฝ์์ ๋๋ค. - ์๋น์ค: DAO๋ฅผ ํธ์ถํ์ฌ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ํ์ DTO/VO๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ต๋๋ค.
์๋น์ค ๊ณ์ธต์์๋ DAO๋ฅผ ํธ์ถํ๊ณ , ํธ์ถ ๊ฒฐ๊ณผ๋ก๋ถํฐ Data Transfer Object๋ Value Object๋ฅผ ํ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ์ญํ ์ ํฉ๋๋ค.
- ์ปจํธ๋กค๋ฌ: View์ ์๋น์ค์ ์ค๊ฐ ๋จ๊ณ์ ๋ค๋ฆฌ ์ญํ ์ ํฉ๋๋ค. (HTTP ์์ฒญ/์๋ต ๋ฑ)
๋น์ฆ๋์ค ๋ก์ง์ ๊ด๋ฆฌํ๋ฉฐ, ์ํํธ์จ์ด์ ๋ฉ์ธ ๋ก์ง์ ์ฒ๋ฆฌํฉ๋๋ค. ๋ทฐ์ ์๋น์ค ์ฌ์ด์ ์ค๊ฐ ๋ก์ง์ ๋ด๋นํ๋ ๊ฒ์ด ์ปจํธ๋กค๋ฌ์ ๋๋ค.
- ๋ทฐ: ์ฌ์ฉ์(๊ณ ๊ฐ)์๊ฒ ๋ณด์ด๋ ํ๋ฉด์ ๊ตฌํํฉ๋๋ค.
HTML, JavaScript ๋ฑ์ ํ์ฉํ์ฌ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ๋ถ๋ถ์ด ๋ทฐ์ ๋๋ค.
TIP: ๋ค์๊ณผ ๊ฐ์ ์์๋ก ๊ธฐ์ตํ์๋ฉด ์ข์ต๋๋ค.
- ๋ฐ์ดํฐ๋ฅผ ํํํ ๊ฐ์ฒด๋ฅผ ๋จผ์ ์ค๊ณํฉ๋๋ค(DTO/VO)
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ์ ์ํ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํฉ๋๋ค(SQL)
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํธ์์ฉํ๋ ๊ฐ์ฒด๋ฅผ ์ค๊ณํฉ๋๋ค(DAO)
- ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ๋ ์๋น์ค๋ฅผ ๊ตฌํํฉ๋๋ค(Service)
- ์ฌ์ฉ์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์ปจํธ๋กค๋ฌ๋ฅผ ๊ฐ๋ฐํฉ๋๋ค(Controller)
- ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํฉ๋๋ค(View)
์ํํธ์จ์ด๊ฐ ๋๋ฌด ์ปค์ง ๊ฒฝ์ฐ์ ๋ํ ๊ฐ๋
์ธ
Fan-In Fan-Out์ ๊ดํ ๋ด์ฉ์
๋ค์ ์๊ฐ์ ๋ค๋ฃจ๋๋ก ํ๊ฒ ์ต๋๋ค.