๐ฐ [Tech] ๊ธฐ์ ๋ฉด์ ์ ๋ฆฌ
ํด๋น ํ์ด์ง๋ ๊ธฐ์ ๋ฉด์ ์ ๋ํด ์ ๋ฆฌ ํด๋์ ํ์ด์ง ์ ๋๋ค.
2024-01-22
ํธ๋์ญ์ ์ ACID ์ ๋ํดโฆ
Transaction ์ด๋?
๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ (DBMS)์์์ โํธ๋์ญ์ โ์ ํ๋ ์ด์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ์ ์ํํ๋ ๋ ผ๋ฆฌ์ ์ธ ์์ ๋จ์
๊ฐ๋จํ๊ฒ ๋งํด DBMS ์ ์ ๊ทผํ๋ ๊ฒ์ ๋ณด๊ณ ํธ๋์ญ์ ์ด๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฒ!
Atomicity (์์์ฑ)
ํธ๋์ญ์ ๋ด์ ๋ชจ๋ ์ฐ์ฐ์ ์ ๋ถ ์คํ๋๊ฑฐ๋ ์ ํ ์คํ๋์ง ์์์ผ ํ๋ค.
ํ๋์ ์์์ฒ๋ผ ๋ ์ด์ ๋๋ ์ ์๋ค๋ ์๋ฏธ
Consistency (์ผ๊ด์ฑ)
ํธ๋์ญ์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ ๋๋ฉด, ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํ๋์ ์ผ๊ด๋ ์ํ์์ ๋ค๋ฅธ ์ผ๊ด๋ ์ํ๋ก ๋ณํํด์ผํจ
๋ฐ๋ผ์ ํธ๋์ญ์ ์ ํ๋ก ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฝ์กฐ๊ฑด์ ๋ง์กฑํด์ผํจ
Isolation (๋ ๋ฆฝ์ฑ)
๋์์ ์ฌ๋ฌ ํธ๋์ญ์ ์ด ์คํ๋๋ ํ๊ฒฝ์์, ๊ฐ ํธ๋์ญ์ ์ ๋ค๋ฅธ ํธ๋์ญ์ ์ ์ฐ์ฐ์ด ์ค๊ฐ์ ๋ผ์ด๋ค์ด ์ํฅ์ ์ฃผ๋ ๊ฒ์ ๋ฐฉ์งํ์ฌ์ผ ํจ
Durability (์์์ฑ)
ํธ๋์ญ์ ์ด ํ ๋ฒ ์ปค๋ฐ๋๋ฉด, ๊ทธ ๊ฒฐ๊ณผ๋ ์์คํ ์ ์ด๋ค ์ฅ์ ๊ฐ ๋ฐ์ํ๋๋ผ๋ ์๊ตฌ์ ์ผ๋ก ๋ณด์กด๋์ด์ผ ํฉ
HTTP ์ HTTPS ์ ์ฐจ์ด
HTTP์ HTTPS๋ ์น์์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ๋ฐ ์ฌ์ฉ๋๋ ํ๋กํ ์ฝ
HTTP (HyperText Transfer Protocol)
- ์น์์ ์ ๋ณด๋ฅผ ๊ตํํ๊ธฐ ์ํ ๊ธฐ๋ณธ ํ๋กํ ์ฝ
- ๋ณด์์์ค์ ๋ฎ์ผ๋ฉฐ
HTTP
๋ ์ํธํ ๋์ง ์์ ํ ์คํธ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ ๋๋ฌธ์ ํต์ ์ฌ์ด์์ ์ผ์ด๋๋ ๊ณต๊ฒฉ์ ์ทจ์ฝํจ - ํฌํธ๋ฒํธ๋ ๊ธฐ๋ณธ์ผ๋ก
80
๋ฒ๋๋ฅผ ์ฌ์ฉํจ - ์ํธํ๊ฐ ํ์์ ์ด์ง ์์ ์ผ๋ฐ ์น์ฌ์ดํธ์์ ์์ฃผ ์ฌ์ฉ
HTTPS (HyperText Transfer Protocol Secure)
HTTP
์ ๋ณด์ ๋ฒ์ ์ผ๋ก ๋ฐ์ดํฐ ์ ์ก์SSL (Secure Socket Layer)
๋๋TLS (Transport Layer Security)
ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ํธํ- ๋ณด์์์ค์
HTTP
์ ๋นํด ๋์ ํธ์ด๋ฉฐ ๋ฐ์ดํฐ๋ฅผ ์ํธํ ํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ์ ๊ธฐ๋ฐ์ฑ๊ณผ ๋ฌด๊ฒฐ์ฑ์ ๋ณดํธํจ - ํฌํธ๋ฒํธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก
443
๋ฒํธ๋ฅผ ์ฌ์ฉํจ - ์จ๋ผ์ธ ๋ฑ ํน, ์ ์๊ฑฐ๋ ์ฌ์ดํธ, ๊ฐ์ธ์ ๋ณด ์์ ๋ณด์์ด ์ค์ํ ๊ณณ์์ ์ฌ์ฉ
Cookie ์ Session ์ ์ฐจ์ด
Cookie
์Session
์ ์น์ฌ์ดํธ์ ์ฌ์ฉ์ ๊ฐ์ ์ํ ์ ๋ณด(์ํ ๊ด๋ฆฌ)๋ฅผ ์ ์งํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๊ธฐ์
Cookie
- ์ฌ์ฉ์์ ์น ๋ธ๋ผ์ฐ์ ๋ด์์ ์ ์ฅ๋๋ ์์ ๊ท๋ชจ์ ๋ฐ์ดํฐ ์กฐ๊ฐ
- ์ฌ์ฉ์์ ์ปดํจํฐ (ํด๋ผ์ด์ธํธ) ์์ ์ ์ฅ์ด ๋จ
Cookie
๋ ์ฌ์ฉ์ ์ปดํจํฐ์ ์ ์ฅ์ด ๋๋ฏ๋ก ๋ณด์์ ๋งค์ฐ ์ทจ์ฝํ๋ฉฐ ์์ ๋ ๊ฐ๋ฅ์ฑ์ด ์์- ์ฃผ๋ก ๋ก๊ทธ์ธ ์ํ ์ ์ง, ์ฌ์ดํธ ์ ํธ ์ค์ ๊ธฐ์ต, ์ผํ ์นดํธ ์ ๋ณด ์ ์ฅ ๋ฑ์ ์ฌ์ฉ ํจ
Session
Session
์Cookie
์ ๋ฌ๋ฆฌ ์๋ฒ ์ธก์์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํจ- ์ฌ์ฉ์๊ฐ ์น ์ฌ์ดํธ์ ๋ฐฉ๋ฌธ ํ ๋๋ง๋ค ๊ณ ์ ํ
Session ID
๋ฅผ ๋ถ์ฌ ํด ์ฌ์ฉ์์ ์ํ๋ฅผ ๊ด๋ฆฌํจ - ์๋ฒ ์ธก์ ์ ์ฅ์ด ๋จ
Session
์ID
๋ง์ด ํด๋ผ์ด์ธํธ์ ๊ตํ ๋๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๊ฐ ์ง์ ์ ์ผ๋ก ๋ ธ์ถ๋์ง ์์- ๋์ ์๋ฒ์ ๋ชจ๋ ์ธ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด์ผ ํ๋ฏ๋ก ์๋ฒ ๋ฆฌ์์ค์ ๋ถ๋ด์ด ์๊ธธ ์ ์์
์ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋น์ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐจ์ด
โ์ ํโ๊ณผ โ๋น์ ํโ์ ๋ฐ์ดํฐ์ ํํ, ์ ์ฅ ๋ฐฉ์, ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์์์ ์ฐจ์ด๋ฅผ ์๋ฏธ
์ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ์ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๊ตฌ์กฐํ ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ
- ์ฃผ๋ก ํ ์ด๋ธ ํํ๋ก ์ ์ฅํ๋ฉฐ ๊ฐ ์ด์ ๊ณ ์ ๋ ๋ฐ์ดํฐ ํ์ ์ ๊ฐ์ง๊ณ ์์
SQL
์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ๊ทผํ๊ณ ๊ด๋ฆฌ- ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ, ๋ฌด๊ฒฐ์ฑ, ๋ณด์์ฑ์ด ๋์
- MySQL, PostgreSQL, Oracle Database
๋น์ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ์ ํํ๋์ง ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํจ
- ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ์ ํด์ ธ ์์ง ์์ ์ด๋ฏธ์ง, ์์, ํ ์คํธ ๋ฑ์ ์์ ๋กญ๊ฒ ์ ์ฅํ ์ ์์
- ๋ฐ์ดํฐ์ ๊ณ ์ ๋ ์คํค๋ง๊ฐ ์์
NoSQL
๋ฐ์ดํฐ๋ฒ ์ด์ค, ๊ฒ์์์ง, ๋น ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฑ์ ์ฌ์ฉ- ์์ ๋ฏธ๋์ด, IoT, ๋ก๊ทธ๋ฐ์ดํฐ ๋ฑ์ ์ฌ์ฉ
- MongoDB, Elasticsearch, Hadoop
์ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ ํํ๊ณ ์ผ๊ด๋ ๋ฐ์ดํฐ ๊ด๋ฆฌ๊ฐ ์ค์ํ ๋น์ฆ๋์ค ์์ฉ ํ๋ก๊ทธ๋จ์ ์ ํฉ
๋น์ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ณํํ๋ ๋ฐ์ดํฐ ํ์๊ณผ ๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ์ ์ฉ
์ํธํ ๋ฐฉ์ ์ค ๋์นญ ํค์ ๋น๋์นญ ํค ์ ์ฐจ์ด
์ํธํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณดํธํ๊ธฐ ์ํด ์ ๋ณด๋ฅผ ์ํธํ๋ ํํ๋ก ๋ณํํ๋ ๊ธฐ์
๋์นญ ํค
- ๋์นญํค ์ํธํ์์๋
์ํธํ(Encryption)
์๋ณตํธํ(Decryption)
๊ณผ์ ์์ ๊ฐ์ ํค๋ฅผ ์ฌ์ฉ - ๊ณ์ฐ์ด ๋ ๋ณต์กํ๋ฏ๋ก, ๋ ๋น ๋ฅธ ์ฒ๋ฆฌ ์๋๋ฅผ ์ ๊ณต
- ๋์ผํ ํค๋ฅผ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์, ํค์ ์์ ํ ์ ๋ฌ๊ณผ ๋ณด๊ด์ด ์ค์
- ๋๋์ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํด์ผ ํ๋ ์ํฉ์ ์ ํฉ
๋น๋์นญ ํค
- ๋น๋์นญํค ์ํธํ์์๋ ๋ ๊ฐ์ ํค๋ฅผ ์ฌ์ฉ
- ํ๋๋
๊ณต๊ฐํค(Public Key)
๋ก, ๋๊ตฌ์๊ฒ๋ ๊ณต๊ฐ๋ ์ ์์ผ๋ฉฐ, ๋ค๋ฅธ ํ๋๋๋น๋ฐํค(Private Key)
- ๋ฐ์ดํฐ๋ ํด๋น ๊ณต๊ฐํค์ ์ง์ ์ด๋ฃจ๋ ๋น๋ฐํค๋ก๋ง ๋ณตํธํํ ์ ์์ด, ๋์นญํค๋ณด๋ค ๋์ ๋ณด์์ฑ์ ์ ๊ณต
- ์ฌ์ฉ์๋ ๋น๋ฐํค๋ฅผ ์์ ํ๊ฒ ๋ณด๊ดํ๊ธฐ๋ง ํ๋ฉด ๋๋ฉฐ, ๊ณต๊ฐํค๋ ์์ ํ๊ฒ ๊ณต์
- ์์ ํ ํต์ ์ฑ๋์ ์ค์ , ๋์งํธ ์๋ช , SSL/TLS ๊ฐ์ ๋ณด์ ํ๋กํ ์ฝ์ ํ์ฉ
๋จธ์ ๋ฌ๋๊ณผ ๋ฅ๋ฌ๋์ ์ฐจ์ด
๋จธ์ ๋ฌ๋
- ๋จธ์ ๋ฌ๋์ ์ฃผ๋ก
์์ ๋ชจ๋ธ
์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ก๋ถํฐ ํน์ง์ ์ถ์ถํ๊ณ ํ์ต - ๋ก์ง์คํฑ ํ๊ท, ์์ฌ๊ฒฐ์ ํธ๋ฆฌ, ๋๋ค ํฌ๋ ์คํธ ๋ฑ์ ์ฌ์ฉ
- ์๋์ ์ผ๋ก ์ ์ ์์ ๋ฐ์ดํฐ๋ก๋ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์
- ์ฃผ๋ก ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ฉฐ, ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ์ ํน์ง ์ ํ์ด ์ค์
- ๋ชจ๋ธ์ ๊ฐ๋จํ๊ณ ํด์์ด ๊ฐ๋ฅํ ๊ฒฝ์ฐ๊ฐ ๋ง์
- ์ฃผ๋ก ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋๋ฐ ์ฌ์ฉ
- ์๋ฅผ ๋ค์ด, ํ ์คํธ ๋ถ๋ฅ, ์ถ์ฒ ์์คํ , ์์ธก ๋ถ์ ๋ฑ์ ์ ์ฉ
๋ฅ ๋ฌ๋
์ฌ์ธต ์ ๊ฒฝ๋ง
์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ค์ธต์ ์ผ๋ก ํ์ต- ์ฃผ๋ก ์ปจ๋ณผ๋ฃจ์ ์ ๊ฒฝ๋ง(CNN), ์ํ ์ ๊ฒฝ๋ง(RNN), ๋ณํ์(Transformer) ๋ฑ์ ์ฌ์ฉ
- ๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ ํ์
- ๋๊ท๋ชจ์ ๋น์ ํ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ฉฐ, ์ฌ์ธต ์ ๊ฒฝ๋ง์ ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ ๋ณต์กํ ํจํด์ ํ์ตํ๋ ๋ฐ ํจ๊ณผ์
- ๋ชจ๋ธ์ ๋ณต์กํ๊ณ ๋ง์ ์์ ๊ณ์ธต์ผ๋ก ๊ตฌ์ฑ๋จ
- ์ฃผ๋ก ์ด๋ฏธ์ง ๋ถ๋ฅ, ์์ฑ ์ธ์, ์์ฐ์ด ์ฒ๋ฆฌ ๋ฑ ๋น์ ํ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋๋ฐ ์ฌ์ฉ
์๋ฐ์ ์์์ฑ์ ๋ํด
ํด๋์ค ๊ฐ์ ๊ด๊ณ๋ฅผ ๊ตฌ์ถํ๋ ๋ฉ์ปค๋์ฆ
์์์ ๊ธฐ์กด ํด๋์ค์ ์์ฑ๊ณผ ๋ฉ์๋๋ฅผ ์ฌ์ฌ์ฉํ๊ณ ํ์ฅํ์ฌ ์๋ก์ด ํด๋์ค๋ฅผ ์ ์ํ๋ ๋ฐ ์ฌ์ฉ
๊ณตํต์ ์ผ๋ก ์กด์ฌํ๋ ์์ฑ๊ณผ ๋์์ ์ ์ํ์ฌ ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ ๋์
์๋ฐ์ ๋ ๋ฆฝ์ฑ์ ๋ํด
์๋ฐ์ ๋ ๋ฆฝ์ฑ์ ์๋ฐ ํ๋ก๊ทธ๋จ์ด ํ๋ซํผ์ ๋ ๋ฆฝ์ ์ผ๋ก ์๋ํ ์ ์๋ ํน์ฑ
์๋ฐ์ ํต์ฌ ์ฒ ํ ์ค ํ๋
์๋ฐ์ ๋ ๋ฆฝ์ฑ์ ๊ฐ๋ฐ์์๊ฒ ํ๋ซํผ์ ๊ตฌ์ ๋ฐ์ง ์๊ณ ์ ์ฐํ๊ณ ํจ์จ์ ์ผ๋ก ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ ์ ์๋ ํ๊ฒฝ์ ์ ๊ณต
์๋ฐ ๊ฐ์ ๋จธ์ (JVM)
- ์๋ฐ๋ ๋ฐ์ดํธ์ฝ๋๋ผ๋ ์ค๊ฐ ์ธ์ด๋ก ์ปดํ์ผ๋๋ฉฐ ์ด ๋ฐ์ดํธ์ฝ๋๋ ํ๋ซํผ์ ๋ ๋ฆฝ์ ์ ๋๋ค.
- ๋ฐ์ดํธ์ฝ๋๋ ๊ฐ ํ๋ซํผ์ ํน์ ํ JVM์์ ์คํ
- ๋ฐ๋ผ์ ๊ฐ๋ฐ์๋ ์์ค ์ฝ๋๋ฅผ ํ ๋ฒ ์์ฑํ๊ณ ์ปดํ์ผํ ํ์๋ ์๋ก ๋ค๋ฅธ ์ด์์ฒด์ ๋ ํ๋์จ์ด์์ ๋์ผํ ๋ฐ์ดํธ์ฝ๋๋ฅผ ์คํํ ์ ์์
์๋ฐ์ ๋คํ์ฑ์ ๋ํด
์๋ฐ์ ๋คํ์ฑ(Polymorphism)
์ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ค์ํ ๊ฐ๋
์ค ํ๋
๊ฐ์ ์ด๋ฆ์ ๋ฉ์๋๋ฅผ ๋ค์ํ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ ์ ์๊ฒ ํจ
์ด๋ ํ๋ก๊ทธ๋จ ์ฝ๋์ ์ ์ฐ์ฑ์ ๋์ด๊ณ ์ฌ์ฌ์ฉ์ฑ์ ์ฆ๊ฐ์ํด
๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ(Method Overloading)
- ๊ฐ์ ์ด๋ฆ์ ๋ฉ์๋๋ฅผ ์ฌ๋ฌ ๊ฐ ์ ์
- ๋งค๊ฐ๋ณ์์ ํ์ , ๊ฐ์, ์์ ๋ฑ์ ๋ค๋ฅด๊ฒํ์ฌ ๋ค์ํ ํํ๋ก ํธ์ถ
- ์ปดํ์ผ๋ฌ๊ฐ ๋ฉ์๋ ํธ์ถ ์ ์ ๋ฌ๋ ์ธ์์ ํ์ ๊ณผ ๊ฐ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ์ ํ ๋ฉ์๋๋ฅผ ์ ํ
๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ(Method Overriding)
- ์์ ํด๋์ค์์ ์ด๋ฏธ ์ ์๋ ๋ฉ์๋๋ฅผ ํ์ ํด๋์ค์์ ์ฌ์ ์ํ์ฌ ์ฌ์ฉ
- ์์ ํด๋์ค์ ๋ฉ์๋์ ๊ฐ์ ์๊ทธ๋์ฒ(๋ฉ์๋ ์ด๋ฆ, ๋งค๊ฐ๋ณ์ ํ์ ๋ฐ ๊ฐ์, ๋ฐํ ํ์ )๋ฅผ ๊ฐ์ ธ์ผ ํจ
- ๋ฐํ์ ์์๋ ๊ฐ์ฒด์ ์ค์ ํ์ ์ ๊ธฐ๋ฐ์ผ๋ก ์ค๋ฒ๋ผ์ด๋ฉ๋ ๋ฉ์๋๊ฐ ํธ์ถ๋จ
1
2
3
4
5
6
7
8
9
10
11
12
13
// ํ์ ํด๋์ค: ๊ฐ์์ง
class Dog extends Animal {
// ๋ถ๋ชจ ํด๋์ค์ makeSound ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉํ์ฌ ์ฌ์ ์
@Override
void makeSound() {
System.out.println("๊ฐ์์ง๊ฐ ๋ฉ๋ฉ ์ง๊ณ ์์ต๋๋ค.");
}
// ์ค๋ฒ๋ก๋ฉ๋ makeSound ๋ฉ์๋
void makeSound(String action) {
System.out.println("๊ฐ์์ง๊ฐ " + action + " ์๋ฆฌ๋ฅผ ๋ด๊ณ ์์ต๋๋ค.");
}
}
๊ฐ๋น์ง ์ปฌ๋ ์ ์ด๋
ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉ๋์ง ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋์ผ๋ก ํ์ํ๋ ํ๋ก์ธ์ค๋ฅผ ์๋ฏธ
์๋ฐ์ ๊ฐ์ ๋ง์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์๋ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ํตํด ๋ฉ๋ชจ๋ฆฌ ๋์(memory leak)๋ฅผ ๋ฐฉ์งํ๊ณ ํ๋ก๊ทธ๋๋จธ๊ฐ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ์ ๊ฒฝ ์ฐ์ง ์์๋ ๋๋๋ก ํจ
- ์ผ๋ฐ์ ์ผ๋ก ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ๋์ ๋ฉ๋ชจ๋ฆฌ๋ ๋ค์ํ ๊ฐ์ฒด์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์์ฑ
- ๊ฐ์ฒด์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ ๋์ ์ผ๋ก ํ ๋น
- ์ฌ์ฉ์ด ๋๋๋ฉด ๋ ์ด์ ํ์ํ์ง ์์ ๊ฒฝ์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ์์ ํด์ ๋์ด์ผ ํจ
- ๊ทธ๋ฌ๋ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ์ง ์์ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ๋ฐ์ํ ์ ์์
- ๋ฉ๋ชจ๋ฆฌ ๋์๋ ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ๋์ ์ฌ์ฉ๋์ง ์๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ณ์ ์์ฌ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์์
์คํ๊ณผ ํ์ ๋ํ์ฌ
์คํ(Stack)
- ํ์ ์ ์ถ(LIFO, Last-In-First-Out)์ ์๋ฃ ๊ตฌ์กฐ
- ๊ฐ์ฅ ์ต๊ทผ์ ์ถ๊ฐ๋ ํญ๋ชฉ์ด ๊ฐ์ฅ ๋จผ์ ์ ๊ฑฐ๋๋ ๊ตฌ์กฐ
- ์ฃผ๋ก ํจ์ ํธ์ถ์ด๋ ์์ ๋ฐ์ดํฐ ์ ์ฅ ๋ฑ์ ์ฌ์ฉ
ํ(Queue)
- ์ ์ ์ ์ถ(FIFO, First-In-First-Out)์ ์๋ฃ ๊ตฌ์กฐ
- ๊ฐ์ฅ ๋จผ์ ์ถ๊ฐ๋ ํญ๋ชฉ์ด ๊ฐ์ฅ ๋จผ์ ์ ๊ฑฐ๋๋ ๊ตฌ์กฐ
- ํ๋ ๋๊ธฐ์ด ๊ด๋ฆฌ, ํ๋ก์ธ์ค ์ค์ผ์ค๋ง ๋ฑ์ ์ฌ์ฉ
MVC ํจํด์ ๋ํด
MVC(Mode-View-Controller) ํจํด์ ์ํํธ์จ์ด ์ํคํ ์ฒ ๋์์ธ ํจํด ์ค ํ๋
์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง์ ๋ถ๋ฆฌํ์ฌ ๊ฐ๋ฐํ๋ ๋ฐฉ๋ฒ๋ก
MVC ํจํด
์ ๊ฐ ๊ตฌ์ฑ ์์๊ฐ ๋
๋ฆฝ์ ์ผ๋ก ๋ณ๊ฒฝ๋ ์ ์๋๋ก ์ค๊ณ๋์ด ์ ์ง ๋ณด์์ฑ๊ณผ ์ฌ์ฌ์ฉ์ฑ์ ๋์
๊ฐ๋ฐ ๊ณผ์ ์์ ์ญํ ์ ๋ถ๋ดํ์ฌ ํจ์จ์ ์ธ ํ์ ์ด ๊ฐ๋ฅํ๋๋ก ํจ
์ด๋ฌํ ์ด์ ๋ก MVC ํจํด
์ ๋๋ถ๋ถ์ ์น ์ ํ๋ฆฌ์ผ์ด์
๋ฐ GUI ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐ์ ๋๋ฆฌ ์ฌ์ฉ
๋ชจ๋ธ(Model)
- ๋ชจ๋ธ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ดํฐ์ ๋น์ฆ๋์ค ๋ก์ง์ ๋ด๋น
- ๋ฐ์ดํฐ์ ์ํ๋ฅผ ๊ด๋ฆฌํ๊ณ , ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ์ ๊ฐ์งํ๊ณ ํ์ํ ๊ฒฝ์ฐ ๋ทฐ์ ์ปจํธ๋กค๋ฌ์ ์ด๋ฒคํธ๋ฅผ ์ ๋ฌ
- ์ผ๋ฐ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํ์ผ ์์คํ ๊ณผ ๊ฐ์ ์์์ ์ธ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ฉฐ, ๋น์ฆ๋์ค ๊ท์น์ ์ ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌ
๋ทฐ(View)
- ๋ทฐ๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค(UI)๋ฅผ ๋ํ๋
- ๋ชจ๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉ์์๊ฒ ํ์ํ๊ณ , ์ฌ์ฉ์ ์ ๋ ฅ์ ๋ฐ์ ๋ชจ๋ธ์ ์ ๋ฌ
- ์ฌ์ฉ์์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์๊ฐ์ ์ผ๋ก ๋ํ๋ด๋ ์ญํ ์ ํ๋ฉฐ, ์ฌ์ฉ์์ ์ํธ์์ฉํ๋ ์ธํฐํ์ด์ค ์์๋ค์ ํฌํจ
์ปจํธ๋กค๋ฌ(Controller)
- ์ปจํธ๋กค๋ฌ๋ ๋ชจ๋ธ๊ณผ ๋ทฐ ์ฌ์ด์ ์ค๊ฐ์ ์ญํ
- ์ฌ์ฉ์์ ์ ๋ ฅ์ ๋ฐ์ ๋ชจ๋ธ์ ์ ๋ฌํ๊ณ , ๋ชจ๋ธ์ ๋ณ๊ฒฝ ์ฌํญ์ ๊ฐ์งํ์ฌ ๋ทฐ์ ์ ๋ฌ
- ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ๊ณ , ์ฌ์ฉ์์ ์์ฒญ์ ๋ฐ๋ผ ๋ชจ๋ธ์ ์ ๋ฐ์ดํธํ๊ณ ๋ทฐ๋ฅผ ์ ํํ์ฌ ํ์
DDL, DML, DCL ์ ๋ํด
๋ฐ์ดํฐ ์ ์์ด (DDL - Data Definition Language)
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๊ฑฐ๋ ๋ณ๊ฒฝํ๋ ๋จ๊ณ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด(ํ ์ด๋ธ, ์ธ๋ฑ์ค, ๋ทฐ ๋ฑ)๋ฅผ ์์ฑ, ๋ณ๊ฒฝ ๋๋ ์ญ์
- ์๋ฅผ ๋ค์ด,
CREATE
TABLE ๋ฌธ์ ์ฌ์ฉํ์ฌ ํ ์ด๋ธ์ ์์ฑํ๊ฑฐ๋ALTER
TABLE ๋ฌธ์ ์ฌ์ฉํ์ฌ ํ ์ด๋ธ์ ์์
๋ฐ์ดํฐ ์กฐ์์ด (DML - Data Manipulation Language)
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ์กฐ์(๊ฒ์, ์ฝ์ , ์์ , ์ญ์ )ํ๋ ๋จ๊ณ์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๊ฑฐ๋ ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ์ฝ์ , ์์ , ์ญ์
- ์ฃผ๋ก
SELECT
,INSERT
,UPDATE
,DELETE
๋ฑ์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃธ
๋ฐ์ดํฐ ์ ์ด์ด (DCL - Data Control Language)
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ณด์๊ณผ ๊ถํ์ ๊ด๋ฆฌํ๋ ๋จ๊ณ
- ๋ฐ์ดํฐ์ ๋ํ ์ ๊ทผ ๊ถํ์ ๋ถ์ฌํ๊ฑฐ๋ ํ์
- ์ฃผ๋ก
GRANT
์REVOKE
๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์์๊ฒ ๊ถํ์ ๋ถ์ฌํ๊ฑฐ๋ ํ์
V ๋ชจ๋ธ, ๋์ ๋ชจ๋ธ, ํญํฌ์๋ชจ๋ธ์ ๋ํด
์ํํธ์จ์ด ๊ฐ๋ฐ ๋ฐฉ๋ฒ๋ก
ํญํฌ์ ๋ชจ๋ธ(Waterfall Model)
- ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ์ ํ์ ์ผ๋ก ์ํํ๋ ๋ฐฉ๋ฒ๋ก
- ๊ฐ๋ฐ ๋จ๊ณ๊ฐ ์ฐ์์ ์ผ๋ก ์งํ๋๋ฉฐ, ๊ฐ ๋จ๊ณ๋ ์ด์ ๋จ๊ณ์ ๊ฒฐ๊ณผ๋ฌผ์ ๊ธฐ๋ฐ์ผ๋ก ์งํ
- ์ฃผ์ ๋จ๊ณ๋ก๋ ์๊ตฌ์ฌํญ ๋ถ์, ์ค๊ณ, ๊ตฌํ, ํ ์คํธ, ์ ์ง๋ณด์
- ๊ฐ ๋จ๊ณ๊ฐ ์๊ฒฉํ๊ฒ ์์ฐจ์ ์ผ๋ก ์งํ๋๋ฏ๋ก ๋ณ๊ฒฝ์ด ๋ฐ์ํ ๊ฒฝ์ฐ ๋น์ฉ๊ณผ ์๊ฐ์ด ํฌ๊ฒ ์ฆ๊ฐ
V ๋ชจ๋ธ(V-Model)
- V ๋ชจ๋ธ์ ํญํฌ์ ๋ชจ๋ธ์ ํ์ฅ๋ ํํ
- ๊ฐ ๊ฐ๋ฐ ๋จ๊ณ์ ๋์ํ๋ ํ ์คํธ ๋จ๊ณ๋ฅผ ํฌํจ
- ๊ฐ๋ฐ ๋จ๊ณ์ ํ ์คํธ ๋จ๊ณ๊ฐ ๋์ํ์ฌ ์งํ
- ์๊ตฌ์ฌํญ ๋ถ์๊ณผ ๊ด๋ จ๋ ํ ์คํธ๋ ์๊ตฌ์ฌํญ ๊ฒ์ฆ์ ํด๋นํ๊ณ , ์ค๊ณ์ ๊ด๋ จ๋ ํ ์คํธ๋ ์ค๊ณ ๊ฒ์ฆ์ ํด๋น
- ๊ฐ๋ฐ๊ณผ ํ ์คํธ๊ฐ ์ํธ ๋ณด์์ ์ผ๋ก ์ด๋ฃจ์ด์ง๋ฏ๋ก ์ค๋ฅ๋ฅผ ์ด๊ธฐ์ ๋ฐ๊ฒฌํ๊ณ ์์ ํ ์์์
- ์ ์ฒด์ ์ธ ํ์ง์ ํฅ์์ํฌ ์ ์์
๋์ ๋ชจ๋ธ(Spiral Model)
- ๋์ ๋ชจ๋ธ์ ํญํฌ์ ๋ชจ๋ธ์ ํ์ฅ๋ ํํ
- ๊ฐ๋ฐ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ฉด์ ์ ์ง์ ์ผ๋ก ๊ฐ์ ํ๋ ๋ฐฉ๋ฒ๋ก
- ๊ฐ ๊ฐ๋ฐ ๋จ๊ณ๋ง๋ค ์ํ์ ์๋ณํ๊ณ ๊ด๋ฆฌ
- ํ๋ก์ ํธ์ ๋ณต์ก์ฑ๊ณผ ์ํ์ ๋ฐ๋ผ ๋ฐ๋ณต์ ์ผ๋ก ๊ฐ๋ฐ ๋ฐ ํ๊ฐ
- ๋จ๊ณ๋ณ๋ก ํ๋กํ ํ์ ์ ์ ์ํ์ฌ ์๊ตฌ์ฌํญ์ ๋ช ํํ ์ดํด
- ๊ณ ๊ฐ์ ํผ๋๋ฐฑ์ ์๋ ดํจ์ผ๋ก์จ ์ ์ฒด ํ๋ก์ ํธ์ ์ฑ๊ณต ํ๋ฅ ์ ๋์