๐ Django Framework
ํน์ง
- MVT ํจํด
- ORM ๊ธฐ๋ฐ ํ๋ ์์ํฌ
MVT ํจํด์ด๋?
Model: ๋ฐ์ดํฐ ๊ด๋ จ DB
View: Model๊ณผ View๋ฅผ ์ฐ๊ฒฐํด์ฃผ๋ฉฐ, ํจ์ ์ ์
Tamplate: ์ค์ ๋ก ํ๋ฉด์ ๋ณด์ฌ์ฃผ๋ ์ธํฐํ์ด์ค
ORM ๊ธฐ๋ฐ ํ๋ ์์ํฌ๋?
๊ฐ์ฒด ์งํ ํ๋ก๊ทธ๋๋ฐ์์ ๊ฐ์ฒด๋ผ๋ ๊ฐ๋ ์ ๊ตฌํํ ํด๋์ค์ RDB์ ์ฐ์ด๋ ๋ฐ์ดํฐ์ธ ํ ์ด๋ธ์ ์๋์ผ๋ก ์ฐ๊ฒฐํ๋ ๊ฒ์ผ๋ก SQL๋ฌธ์ด ํ์ ์๋ค.
์ฅ๊ณ MVT ํจํด๊ณผ ํ์ผ ๊ตฌ์กฐ
์ฅ๊ณ ๋ Urls.py์์ ๋์ด์จ ์์ฒญ์ View.py์ ํจ์์ ์ฐ๊ฒฐ๋๊ณ ํจ์์์ model.py์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์์ ํจ์๋ฅผ ์ํํ ๋ค render ํจ์๋ฅผ ํตํด์ template์ ๋์ ๋๋ฆฌ ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ๋๊ฒจ์ฃผ๊ณ ๋๊ฒจ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ html์์ ์์ ์ ์ํํ๋ค.
Django์ ์ฅ์
- Python์ ๋ค์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ ๊ฐ๋ฅํ์ฌ ๊ฐ๋ฐ ์๋๊ฐ ๋น ๋ฅด๊ณ ์์ฐ์ฑ์ด ํฌ๋ค
- ์ธ์ฆ, ๊ด๋ฆฌ์ ๊ฐ์ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋ฅ๋ค์ด ๊ธฐ๋ณธ ๋ชจ๋๋ก ์ ๊ณต๋๋ค. -> ํนํ Admin์ ์ฌ์ฉํ์ฌ ๊ด๋ฆฌ
Django์ ๋จ์
- ์ธํฐํ๋ฆฌํฐ ์ธ์ด๋ผ์ ์คํ ์๋๊ฐ ๋๋ฆฌ๋ค. -> ์ฑ๋ฅ์ด ๋จ์ด์ง๋ค
- Django๋ ํ๋ ์์ํฌ ํนํ ๊ธฐ๋ฅ๋ณด๋ค ptython์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ํธ์ด๋ค.
๐ Spring Framework
์๋ฐ ํ๋ซํผ์ ์ํ ์คํ์์ค ์ ํ๋ฆฌ์ผ์ด์ ํ๋ ์์ํฌ
ํน์ง
- MVC ํจํด
- ๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ(AOP) - ๊ด์ฌ์ฌ ๋ถ๋ฆฌ
- ์์กด์ฑ ์ฃผ์ (DI) - ๊ฐ๊ฐ์ ๊ณ์ธต์ด๋ ์๋น์ค๋ค ๊ฐ์ ์์กด์ฑ์ด ์กด์ฌํ ๊ฒฝ์ฐ ํ๋ ์์ํฌ๊ฐ ์๋ก ์ฐ๊ฒฐ์์ผ์ค
- ์ ์ด์ญํ(IOC) - ์ปจํธ๋กค์ ์ ์ด๊ถ์ด ์ฌ์ฉ์๊ฐ ์๋๋ผ ํ๋ ์์ํฌ์๊ฒ ์์ด์ ์คํ๋ง์์ ์ฌ์ฉ์ ์ฝ๋ ํธ์ถ
- ๊ฒฝ๋ ์ปจํ ์ด๋ - ํฌ๊ธฐ์ ๋ถํ์ ์ธก๋ฉด์์ ๊ฒฝ๋, ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ์ฒด์ ์๋ช ์ฃผ๊ธฐ์ ์ค์ ์ ํฌํจํ๊ณ ๊ด๋ฆฌ์ธก๋ฉด์์ ์ปจํ ์ด๋
MVC ํจํด์์ Model์ 3๊ฐ์ง๋ก ๋ถ๋ฆฌ โ
- DAO (Data Access Object) -์ค์ ๋ก DB์ ์ ๊ทผํ๋ ๊ฐ์ฒด (DB(DB ์ ์ฉ ๊ฐ์ฒด)
- DTO (Data Transfer Object) – ๋ฐ์ดํฐ ๊ตํ์ ์ํ ์๋ฐ ๊ฐ์ฒด (๋ฐ์ดํฐ๋ฅผ ๋ ์ด์ด ๊ฐ ์ ๋ฌํ๋ ๊ฒ์ด ๋ชฉ์ ์ผ๋ก ์์ฑ์ผ๋ก๋ Setter์ Getter์ ๊ฐ์ง๊ณ ์์
- Service – ๋น์ฆ๋์ค ๋ก์ง์ด ๋ค์ด๊ฐ๋ ๋ถ๋ถ (Controller๊ฐ ์ ์ ํ ๋น์ฆ๋์ค ๋ก์ง์ ๊ฐ์ง๊ณ ์๋service๋ฅผ ์ ํํด์ ์ ํ๋ service๊ฐ ์ ์ ํ ์ฒ๋ฆฌ๋ฅผ ํ์ฌ ๋ฐํ)
๐ Spring Framework ์คํ ํ๋ฆ๋
Request -> DispatcherServlet -> HandlerMapping -> (Controller -> Service -> DAO -> DB -> DAO -> Service -> Controller) -> DispatcherServlet -> ViewResolver -> View -> DispatcherServlet -> Response

์์ธํ ๋ณด๊ธฐ
- ํด๋ผ์ด์ธํธ๊ฐ Request ์์ฒญ ์ DispatcherServlet์ด web.xml์ ๋ฑ๋ก๋ ๋ด์ฉ์ ๊ฐ๋ก์ฑ๋ค. ์ต์ด์ web.xml ์์๋ ์ด '/' default๋ผ์ ์ด ๋ฒ์๋ฅผ ๋ฐ๊ฟ์ฃผ๋ฉด ํน์ URL๋ง ์ ์ฉ ๊ฐ๋ฅํ๋ค.
- DispatcherServlet์ด ๊ฐ๋ก์ฑ ์์ฒญ์ HandlerMapping์๊ฒ ๋ณด๋ด ํด๋น ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ Controller๊ฐ ์๋์ง ํ์ธ
- ์ค์ ๋ก์ง ์ฒ๋ฆฌ
- ๋ก์ง ์ฒ๋ฆฌ ํ ViewResolver๋ฅผ ํตํด ViewResolver๊ฐ view ํ๋ฉด์ ์ฐพ๋๋ค.
- ์ฐพ์ View ํ๋ฉด์ View์ ๋ณด๋ด๋ฉด ์ด ๊ฒฐ๊ณผ๋ฅผ ๋ค์ DispatcherServlet์๊ฒ ๋ณด๋ด๊ณ DispatcherServlet๋ ์ต์ข ํด๋ผ์ด์ธํธ์๊ฒ ์ ์กํ๋ค.
Spring FrameWork ์ฅ์
- ํ๋ ์์ํฌ ํนํ ๊ธฐ๋ฅ๋ค์ด ๋ง์์ ๊ฐ๋จํ ์ปดํฌ๋ํธ๋ก ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ฑํ ์ ์์
- AOP -> ์ฝ๋๋ฅผ ๊น๋ํ๊ฒ ์์ฑ ๊ฐ๋ฅ, ์ฌ์ฌ์ฉ์ฑ ์ฌ๋ผ๊ฐ
- DI -> ์ค์ ํ์ผ ๋ถ๋ถ์์ ๊ฐ์ฒด๋ฅผ ๊ฐ์ง๊ณ ์ค๋๊น๋ ๋ค์ํ DB ์ฌ์ฉ, DB๋ง๋ค ๋ฉ์๋ ๋ฐ๊ฟ ํ์ ์์
Spring FrameWork ๋จ์
- Spring Boot๊ฐ ์๋ ์ ์ด๊ธฐ ํ๊ฒฝ ๊ตฌ์ถ์ ๋ง์ ์๊ฐ์ด ์์
- ์ค์ ์ด ๋ณต์ก
- ์ปดํฌ๋ํธ๋ก ์กด์ฌํ์ง ์๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ๊ฒฝ์ฐ ๊ฐ๋ฐ ๊ณต์๊ฐ ํฌ๋ค.
๐ Node.js Express Framework
Node.js Express Framework ์ฅ์
- ์ฑ๊ธ๊ทธ๋ ๋, ๋น๋๊ธฐ IO ์ฒ๋ฆฌ์ ๊ธฐ๋ฐํ ๋น ๋ฅธ ์๋ -> CPU ๋๊ธฐ์๊ฐ ์ต์ํ, CPU ๋ถํ ์ ์ -> ๋ง์ ์ปค๋ฅ์ ์ ๋์์ ์ฒ๋ฆฌํด์ผ ํ๋ ๊ตฌ์กฐ์ ์ ํฉ
- Chrome์ V8 ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ๊ธฐ๋ฐ์ผ๋ก ์ฑ๋ฅ์ด ๋ฐ์ด๋จ
- ํ์ผ I/O๋ ๋คํธ์ํฌ ์ฒ๋ฆฌ๋ฅผ ์ด๋ฒคํธ ๋๋ฆฌ๋ธ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๋น ๋ฅธ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํจ
Node.js Express Framework ๋จ์
- ์ฑ๊ธ ์ค๋ ๋ ๋ชจ๋ธ์ด๋ผ ํ๋์ ์์ ์ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ฉด ์์คํ ์ ์ฒด์ ์ฑ๋ฅ์ด ๊ธ๊ฒฉํ ๋ฎ์์ง๋ค.
- ๋ถํธํ ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ -> Async & Await ๋ชจ๋
- ๋ฉํฐ์ฝ์ด๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด Cluster ๋ชจ๋ ์ด์ฉ, ์ธ์ ๊ณต์ ์ ๋ถ๊ฐ์ ์ธ ์์ ํ์
๋ฉํฐ์ฝ์ด๋ฅผ ์ด์ฉํ๊ณ ๋ฌด์ค๋จ ์๋ฒ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ PM2

๐ค Node.js ์ฉ์ด ์ ๋ฆฌ
Node.js : ๋ฐํ์ ํ๊ฒฝ
Express : NodeJS Framework
NPM : NodeJS package manager
PM2 : NodeJS process manager
์ฐธ๊ณ ์๋ฃ
'Server' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ์ธ์ฆ ๋ฐฉ๋ฒ์ธ Cookie์ Session์ ๋ํด ์์๋ณด์ (0) | 2021.03.24 |
|---|---|
| JWT์ ๋ํด ์์๋ณด์ โ (0) | 2021.01.16 |
| Web Server์ WAS์ ์ ์์ ์ฐจ์ด (0) | 2021.01.15 |