์๋ฒ์ ์ํ๋ฅผ ์๋ ค์ฃผ๋ HTTP ์ํ ์ฝ๋
์ต๊ทผ์ ๋ชจ๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ์์ ํ ๋คํธ์ํฌ ์์์ ๋์๊ฐ๋ ํ๋ก๊ทธ๋จ์ด๋ผ๊ณ ํด๋ ๊ณผ์ธ์ด ์๋ ์ ๋๋ก ํ๋ก๊ทธ๋จ์ ๋น์ฆ๋์ค ๋ก์ง์์ ํต์ ์ด ์ฐจ์งํ๋ ๋น์ค์ด ๋๋ค. ํด๋ผ์ด์ธํธ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ฐฑ์๋์ ์์นํ ์๋ฒ์ ํต์ ํ์ฌ ํ์ฌ ๋ก๊ทธ์ธํ ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ ๋ฐ์์ค๊ฑฐ๋, ์๋ก์ด ๊ฒ์๊ธ์ ์์ฑํ๊ธฐ๋ ํ๊ณ , ๋๋ก๋ Web Socket์ ํตํด ์๋ฒ์์ ๋ฐ์ํ ์ด๋ฒคํธ๋ฅผ ๊ตฌ๋ ํ์ฌ ํธ์ ๋ฉ์ธ์ง๋ ์ฑํ ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ๋ ํ๋ค.
์ด ๊ณผ์ ์์ ํ๋ก ํธ์๋์ ๋ฐฑ์๋๋ ์ด๋ค ๋ฐฉ์์ผ๋ก ํต์ ์ ํ ๊ฒ์ธ์ง๋ถํฐ ์์ํ์ฌ ๋ฆฌ์์ค์ ์์ฑ๊ณผ ์ญ์ ๋ ์ด๋ป๊ฒ ์ ์ํ ๊ฒ์ธ์ง, ํ๋ก ํธ์๋์์ ์์ฒญํ ๋ฐฑ์๋ ์์ ์ ์ฑ๊ณต/์คํจ ์ฌ๋ถ๋ ์ด๋ป๊ฒ ์๋ ค์ค ๊ฒ์ธ์ง ๋ฑ ๋ง์ ๊ท์น๋ค์ ์ ์ํด์ผํ๋ค.
๊ทธ๋์ ์ด๋ฌํ ๊ท์น๋ค์ ์ ์ํ ๋ ๋์์ ์ฃผ๋ ๋ช ๊ฐ์ง ๊ฐ์ด๋๋ผ์ธ๋ค์ด ์กด์ฌํ๋๋ฐ, ์ด๋ ๋ฑ์ฅํ๋ ๊ฒ๋ค์ด HTTP ๋ฉ์๋๋ ์ํ ์ฝ๋๊ฐ์ ํ์ค๊ณผ REST ๊ฐ์ ๋ ์๋ค์ด๋ค.
์ด๋ฒ ํฌ์คํ ์์๋ ์ด ์ค์์ ํ๋ก ํธ์๋์ ๋ฐฑ์๋ ๊ฐ์ ํต์ ์ ํ ๋ ์กฐ๊ธ ๋ ๋ช ํํ ์ ์๋ฅผ ์ํด ํ์ํ ์์ ์ค ํ๋์ธ HTTP ์ํ ์ฝ๋๋ฅผ ํํค์ณ๋ณด๋ ์๊ฐ์ ๊ฐ์ ธ๋ณด๋ ค๊ณ ํ๋ค.
๊ตณ์ด ์ด๋ฌํ ๊ฐ์ด๋๋ผ์ธ์ ์ง์ผ์ผ ํ๋์?
์ฌ์ค HTTP ๋ฉ์๋๋ ์ํ ์ฝ๋, ๊ทธ๋ฆฌ๊ณ REST ๊ฐ์ ๊ฒ๋ค์ ๋ง ๊ทธ๋๋ก ๊ฐ์ด๋๋ผ์ธ์ ๋ถ๊ณผํ๋ค. ์ด๊ฒ๋ค์ ์งํค์ง ์๋๋ค๊ณ ํด์ ํ๋ก๊ทธ๋จ์ด ์๋ํ์ง ์๋ ๊ฒ๋ ์๋๊ณ ์ฌ์ฉ์๊ฐ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ๋ ๋์ค ๋ฐํ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ ์ฌํ ์ผ๋ ๋ฐ์ํ์ง ์๋๋ค.
์ฆ, ์งํค์ง ์์๋ ์ฌ์ค ํ๋ก๊ทธ๋จ์ ์์ฑํ๋๋ฐ๋ ์๋ฌด๋ฐ ์ง์ฅ์ด ์๋ค๋ ๊ฒ์ด๋ค.
์, ์ด๋ฌํ ๊ท์น๋ค์ ์งํค์ง ์๋ ๊ฒ์ ์์ ์ง๋ง ๊ทธ๋ก ์ธํด ๋ฐ์ํ๋ ์ฌ์ด๋ ์ดํํธ๋ค์ ์๊ฐํด๋ณด๋ฉด ๋๋๋ก์ด๋ฉด ์ง์ผ์ฃผ๋ ๊ฒ์ด ์ข๋ค๊ณ ์ด์ผ๊ธฐํ๊ณ ์ถ๋ค.
ํ์ค ์ธํฐํ์ด์ค์ ์กด์ฌ ์ด์ ๋ฅผ ์๊ฐํด๋ณด์
์ฐ์
ํ์ค์ ๋ถํน์ ๋ค์์ ์ํด ์์ฐ๋๋ ์ ํ๋ค์ ํธํ์ฑ์ ๋ง์ถ๊ณ , ์ ํ ์์ฐ์๋ค ๊ฐ์ ์ปค๋ฎค๋์ผ์ด์
์ ์ํํ๊ฒ ํ๊ธฐ ์ํด์ ์ ์ ๋๋ฉฐ, ์ด๋ ๊ฒ ๊ฐ์ ๋ค๋ฅธ ๊ฐ์ฒด๋ค์ ํธํํ๊ธฐ ์ํด ์ ์ํ๋ ์ผ๋ จ์ ํ์ค ๊ท๊ฒฉ์ ์ฐ๋ฆฌ๋ ์ธํฐํ์ด์ค(Interface)
๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์ด ์ธํฐํ์ด์ค๋ผ๋ ๊ฐ๋ ์ ๊ฝค๋ ๊ด๋ฒ์ํด์ ๋ญ๋ ์ฐ๊ฒฐํด์ฃผ๊ธฐ๋ง ํ ์ ์๋ค๋ฉด ์ธํฐํ์ด์ค๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค. ๋ชจ๋ํฐ์ ์ปดํจํฐ๋ฅผ ์ฐ๊ฒฐํ๋ HDMI, ์ ์ฅ ์ฅ์น์ ์ฌ์ฉ๋๋ SATA, USB์ ๊ฐ์ ์น๊ตฌ๋ค๋ ์ ๋ถ ์ธํฐํ์ด์ค๋ค. ์ฌ์ง์ด UI(User Interface)๊ฐ์ ๊ฒฝ์ฐ์๋ ๊ธฐ๊ณ์ ๊ธฐ๊ณ๊ฐ ์๋๋ผ ์ธ๊ฐ๊ณผ ๊ธฐ๊ณ๋ฅผ ์ด์ด์ค๋ค๋ ๊ฐ๋ ์ผ๋ก๊น์ง ์ฌ์ฉ๋๋ค.
๊ทธ ์ค ๊ฐ๋ฐ์๋ค์๊ฒ ๊ฐ์ฅ ์น์ํ ์ธํฐํ์ด์ค๋ ๋ฐ๋ก API(Application Programming Interface)
์ด๋ค. API๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ ์ํ ๋ ํ์ํ ๊ธฐ๋ฅ๋ค์ ์ผ๋ จ์ ์ธํฐํ์ด์ค๋ก ์ ๊ณต๋ ๊ฒ์ ์๋ฏธํ๋ค.
์ด๋ API๋ฅผ ์ฌ์ฉํ๋ ์ชฝ์์๋ API์ ์ฌ์ฉ๋ฒ๋ง ์๋ฉด ๋๊ณ ๊ทธ ์ด๋ฉด์ ์ด๋ค ๊ฑฐ๋ํ ๋ก์ง๋ค์ด ์จ์ด์๋์ง๋ ์ผ์ ๊ด์ฌ์ ๋์ด๋ ๋๊ธฐ ๋๋ฌธ์ ๊ต์ฅํ ํธ๋ฆฌํ๋ค๋ ์ฅ์ ์ด ์๋ค. ๋ํ์ ์ธ API์ ํ ์ข ๋ฅ๋ก๋ C์์ ์ ๊ณตํ๋ Windows ์ด์์ฒด์ ์ API๊ฐ ์๋ค.
#include <Windows.h>
#include <tchar.h>
int APIENTRY _tWinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow
) {
MessageBox(NULL, TEXT("Hello, Windows!"), TEXT("App"), MB_OK);
return 0;
}
๊ฐ๋ฐ์๋ Windows ์ด์์ฒด์ ๊ฐ ์ด๋ป๊ฒ ์ ๋ฉ์ธ์ง๋ฐ์ค๋ฅผ ๋ ๋ํ๋์ง ๋ชจ๋ฅด๋๋ผ๋ ๋จ์ง MessageBox
๋ผ๋ API์ ํจ์๋ฅผ ์ฌ์ฉํจ์ผ๋ก์จ ๊ฐ๋จํ๊ฒ ๋ฉ์ธ์ง๋ฐ์ค๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ๊ณผ์ ์ ํ์๊ฐ ์์ฑํ๋ C ์ดํ๋ฆฌ์ผ์ด์
๊ณผ ์ด์์ฒด์ , ์ ํ ๋ค๋ฅธ ๋ ํ๋ก๊ทธ๋จ ๊ฐ์ ํต์ ์ด๊ธฐ๋ ํ๋ค.
์ฆ, API๋ ํ๋ก๊ทธ๋จ ๊ฐ์ ํต์ ์ ์ํ ์ธํฐํ์ด์ค๋ผ๊ณ ํ ์ ์๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ ๋ญ๊ฐ๋ฅผ ์์ฒญํ ๋๋ ํน์ ๊ท์น์ผ๋ก ์ ์๋ API๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฒ์ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋๋ฐ, HTTP๋ฅผ ์ฌ์ฉํ์ฌ ํต์ ํ๋ ๋๋ถ๋ถ์ ๋ชจ๋ ์ดํ๋ฆฌ์ผ์ด์ ์์๋ ์ด API๋ฅผ ์๋ํฌ์ธํธ(endpoint)๋ผ๊ณ ๋ถ๋ฆฌ๋ ํน์ ํ URL์ ์ฌ์ฉํ์ฌ ์ ์ํ๊ฒ๋๋ฉฐ, ์๋ฒ๋ ์ผ๊ด๋ ๋ฐฉ์์ผ๋ก ์ด ์๋ํฌ์ธํธ๋ก ๋ค์ด์จ ํด๋ผ์ด์ธํธ ์์ฒญ์ ๋ํ ์๋ต์ ๋ณด๋ด์ค์ผํ๋ค.
์ด๋ HTTP ์ํ ์ฝ๋๋ ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋๋ ์์ฒญ์ ์ํ ๊ฒฐ๊ณผ๋ฅผ ์๋ฏธํ๋ ์ผ์ข ์ ์ฝ์์ด๋ฉฐ, API๋ฅผ ๊ตฌ์ฑํ๋ ์ค์ํ ์์ ์ค ํ๋์ด๋ค.
๋ฐฑ์๋๋ ์ ๋ชจ๋ฅด๋ ํ๋ก ํธ์๋์ ์ฌํ ์ฌ์
์ด ์น์ ์์๋ ์๋ชป ์ ์๋ API๋ฅผ ์ฌ์ฉํ๋ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ผ๋ฉด ํ๋ฒ์ฏค์ ๊ฒช์ด๋ณด์์์งํ ์ผ์ ํ๋ฒ ์งง๊ฒ ์ด์ผ๊ธฐํด๋ณด๋ ค๊ณ ํ๋ค. ์๋ง ๋ฐฑ์๋ ๊ฐ๋ฐ์๋ค์ ํ๋ก ํธ์๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ์์ค๋ฅผ ์ง์ ๋ณด๋ ๊ฒฝ์ฐ๊ฐ ๋๋ฌผ๊ธฐ ๋๋ฌธ์ ์ด๋ฐ ์ํฉ์ด ์๋ค๋ ์ฌ์ค์กฐ์ฐจ ๋ชจ๋ฅผ ์ ์์ ๊ฒ ๊ฐ๋ค.
๋ฐ๋ก HTTP ์ํ ์ฝ๋๋ฅผ ์๋ชป ์ฌ์ฉํ๊ณ ์๋ ๊ฒฝ์ฐ์ธ๋ฐ, ์ด๋ฐ ์ํฉ์ ๋ํ ๋ํ์ ์ธ ์์๋ ๋ฐ๋ก ์์ฒญ์ด ์คํจํ์ ๋์๋ ์ํ ์ฝ๋๋ฅผ ์์ฒญ ์ฑ๊ณต์ ์๋ฏธํ๋ 200 Ok
๋ก ๋ด๋ ค์ฃผ๋ ๊ฒ์ด๋ค.
GET /api/users/123
HTTP/1.1 200 OK
{ "success": false }
์ด๋ ๊ฒ ์ค๊ณํ API์ ๊ฒฝ์ฐ, ์ ์์์ฒ๋ผ HTTP ์๋ต ๋ฐ๋์ ์์ฒญ์ ์ฑ๊ณต/์คํจ ์ฌ๋ถ๋ ์คํจ ์ด์ ๋ฅผ ํจ๊ป ๋ด์์ ๋ณด๋ด์ฃผ๋ ๊ฒฝ์ฐ๊ฐ ๋๋ค์์ธ๋ฐ, ๊ทธ๋ฌ๋ฉด ํ๋ก ํธ์๋ ์ดํ๋ฆฌ์ผ์ด์ ์์๋ ์ฒ๋ฆฌ๊ฐ ์ฝ๊ฐ ์ ๋งคํด์ง๋ ์ํฉ์ด ๋ฐ์ํ๋ค.
ํ๋ก ํธ์๋์์๋ ์ด๋ฐ ๋น๋๊ธฐ ์์ฒญ์ Promise๋ฅผ ํตํด์ ์ฒ๋ฆฌํ๊ฒ ๋๋๋ฐ, ๋ฌธ์ ๋ ๋๋ถ๋ถ์ HTTP ํต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ API๋ค์ ๋ฐฑ์๋์์ ๋ณด๋ด์ฃผ๋ ์์ฒญ์ ์ํ ์ฝ๋์ ๋ฐ๋ผ ์์ฒญ์ ์ฑ๊ณต/์คํจ ์ฌ๋ถ๋ฅผ ํ๋จํ๊ณ , ์์ฒญ์ด ์คํจํ์ ๊ฒฝ์ฐ์๋ง ์๋ฌ๋ฅผ ๋์ง๋ค๋ ๊ฒ์ด๋ค.
๊ทธ๋์ ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ, ํ๋ก ํธ์๋ ์ดํ๋ฆฌ์ผ์ด์ ์์๋ ๋๋ต ์ด๋ฐ ๋๋์ผ๋ก ํต์ ์ ๋ด๋นํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
async function fetchUsers () {
try {
const response = await fetch('/api/users/123');
return response.json();
}
catch (e) {
alert('์์ฒญ์ด ์คํจํ์ด์!');
}
}
์๋ฒ๋ก ๋ณด๋๋ ์์ฒญ์ด ์คํจํ๋ค๋ฉด ์๋ฒ๋ ๋ฐ๋์ 400
์ด๋ 500
๋ฒ๋์ ์ํ ์ฝ๋๋ฅผ ๋ณด๋ด์ค ๊ฒ์ด๊ณ , ๊ทธ๋ ๊ฒ ๋๋ฉด fetch
API๋ ์๋ฌ๋ฅผ ๋ฐ์์ํจ๋ค. ๊ทธ๋์ fetch
๋ฅผ ์ฌ์ฉํ ๋๋ ๋จ์ํ ์ธ๋ถ์์ try/catch
๊ตฌ๋ฌธ์ ์ฌ์ฉํ๋ ๊ฒ๋ง์ผ๋ก๋ ๊ฐ๋จํ๊ฒ ํต์ ์ ๋ํ ์๋ฌ๋ฅผ ํธ๋ค๋งํ ์ ์๋ ๊ฒ์ด๋ค.
ํ์ง๋ง ์์ ์๋ชป๋ ์์์ฒ๋ผ ๋ฐฑ์๋ ์ดํ๋ฆฌ์ผ์ด์
์์ ์์ฒญ์ด ์คํจํ์์๋ ๋ถ๊ตฌํ๊ณ ์ํ ์ฝ๋๋ก 200
๋ฒ๋ ์ฝ๋๋ฅผ ๋ด๋ ค์ค๋ค๋ฉด ํ๋ก ํธ์๋ ์ดํ๋ฆฌ์ผ์ด์
์ ์ฝ๋์๋ ์ด๋ฐ ์ฌํ ์ํฉ์ด ๋ฐ์ํ๋ค.
async function fetchUsers () {
try {
const response = await fetch('/api/users/123');
const { success } = await response.json();
if (!success) {
throw new Error();
}
} catch (e) {
alert('์์ฒญ์ด ์คํจํ์ด์');
}
}
์๊น ์ ์๋ ์๋ if (!success)
๊ฐ ์๊ธด ๊ฒ์ ๋ณผ ์ ์๋ค. ์ฆ, ๋ถํ์ํ ์์ธ ์ฒ๋ฆฌ๊ฐ ํ๋ฒ ๋ ๋ฐ์ํ ๊ฒ์ธ๋ฐ, ์ด๋ฐ ๋ถํ์ํ ์์ธ์ฒ๋ฆฌ๋ ์ฝ๋์ ๊ฐ๋
์ฑ์ ํด์น์ง๋ง ํ๋ก ํธ์๋ ์
์ฅ์์๋ ๋ฑํ ์ ํ๊ถ์ด ์๋ค. ๊ทธ๋ ๋ค๊ณ ์๋ฒ๊ฐ ๋ณด๋ด์ฃผ๋ ์๋ฌ๋ฅผ ๋ฌด์ํ๊ณ ํธ๋ค๋ง์ ์ ํ ์๋ ์์ง ์์๊ฐ?
๊ฒ๋ค๊ฐ ๋ฐฑ์๋ ์ดํ๋ฆฌ์ผ์ด์
์ด ๋ฏธ์ฒ ํธ๋ค๋งํ์ง ๋ชปํ ์๋ฌ๊ฐ ๋ฐ์ํ๊ฑฐ๋ ์๋ฒ๊ฐ ์์ ์ฃฝ์ด๋ฒ๋ฆฌ๊ธฐ๋ผ๋ ํ๋ฉด ์๋ต์ ์ํ ์ฝ๋์๋ ์๋ฌ ์ฝ๋์ธ 500
์ด๋ 502
๊ฐ ๋ด๋ ค์ฌ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ try/catch
๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ง ์์ ์๋ ์๋ค.
ํด๋ผ์ด์ธํธ์์ ์ฌ์ฉํ๋ ๋ชจ๋ HTTP ํต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์ฌ๋ฐ๋ฅธ HTTP ์ํ ์ฝ๋์ ์ฌ์ฉ์ ๊ฐ์ ํ๊ณ ์ค๊ณ๋์๊ธฐ ๋๋ฌธ์, ์๋ฒ๊ฐ ์ฌ๋ฐ๋ฅด์ง ์์ ์ํ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ์ด๋ฐ ์ฌํ ์ํฉ์ด ๋ฐ์ํ ์๋ ์๋ค๋ ์ ์ ์ด์ผ๊ธฐํด๋๊ณ ์ถ๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ์ค ๋ฐฑ์๋ ์ดํ๋ฆฌ์ผ์ด์ ์์ ์ํฉ์ ๋ง๋ ์ฌ๋ฐ๋ฅธ ์ํ ์ฝ๋๋ฅผ ๋ด๋ ค์ฃผ๋ ๊ฒ์ด ๊ทธ๋ ๊ฒ ์ด๋ ค์ด ์ผ๋ ์๋๋ค. (๋ค๋ง ์กฐ๊ธ ๊ท์ฐฎ์ ๋ฟ์ด๋ค)
ํด๋ผ์ด์ธํธ์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋๋ถ๋ถ์ ์๋ฒ ํ๋ ์์ํฌ์์ ์ ๊ณตํ๋ ํต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค๋ ๋ชจ๋ ์ํฉ์ ๋ง๋ HTTP ์ํ ์ฝ๋๋ค์ ์ ๊ณตํ๊ณ ์์ผ๋ ๋๋๋ก์ด๋ฉด ์๋ง์ ์ํฉ์ ๋ง๋ ์ํ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ถ์ฒํ๋ค.
์, ๊ทธ๋ผ ์ด์ ๋ณธ๊ฒฉ์ ์ผ๋ก ์ด ์๋ง์ HTTP ์ํ ์ฝ๋๋ค์ด ์ ํํ ์ด๋ค ์ํ๋ฅผ ์๋ฏธํ๋์ง ์์๋ณด๋๋กํ์.
์์ ์ ์ํ ์ํ๋ฅผ ์๋ ค์ฃผ๋ HTTP ์ํ ์ฝ๋
ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ ์์ ์ ์์ฒญํ๋ฉด ์๋ฒ๋ ์์ฒญ๋ฐ์ ์์ ์ ์ํํ ํ ์์ ์ ์ํ ๊ฒฐ๊ณผ๋ฅผ ์๋ต์ผ๋ก ๋ณด๋ด์ฃผ๋๋ฐ, ์ด๋ HTTP ์ํ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ ์์ ์ ์ฑ๊ณต/์คํจ ์ฌ๋ถ์ ์์ ์ด ์คํจํ๋ค๋ฉด ์ด๋ค ์ด์ ๋ก ์คํจํ๋์ง๋ ์๋ ค์ฃผ๊ฒ ๋๋ค. ์์์ ๋ณด์๋ ์๋ชป๋ ์์์ฒ๋ผ HTTP ์๋ต ๋ฐ๋์ ์์ ์ ์คํจ ์ฌ๋ถ๋ฅผ ๋ด์์ ์๋ตํด์ฃผ๋ ๊ฒฝ์ฐ๋ ์์ง๋ง, ๋ ์ข์ ๋ฐฉ๋ฒ์ ๋ฐ๋ก ์ฌ๋ฐ๋ฅธ HTTP ์ํ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
HTTP ์ํ ์ฝ๋๋ 200 = ์ฑ๊ณต
, 400 = ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ ์๋ชปํจ
, 500 = ์๋ฒ๊ฐ ์๋ชปํจ
๊ณผ ๊ฐ์ด ๊ฐ ์ํฉ์ ๋ง๋ ์ฝ๋๊ฐ ํ์ค์ผ๋ก ์ ํด์ ธ์์ผ๋ฉฐ, ์น ์์์ ๋์๊ฐ๋ ๊ธฐ๋ณธ์ ์ธ ํ๋ก๊ทธ๋จ์ ๋์์ด๋ ํ๋ก ํธ์๋, ๋ฐฑ์๋ ํ๋ ์์ํฌ๋ค์ ์ค๊ณ ๋ํ ์ด ํ์ค์ ๊ธฐ์ค์ผ๋ก ๋ง๋ค์ด์ ธ ์๊ธฐ ๋๋ฌธ์ ๋๋๋ก์ด๋ฉด ์ด ํ์ค์ ์ง์ผ์ฃผ๋ ๊ฒ์ด ์ข๋ค.
HTTP ํ๋กํ ์ฝ์ ์ฌ์ฉํ๋ ๋ํ์ ์ธ ํ๋ก๊ทธ๋จ์ธ ์น ๋ธ๋ผ์ฐ์ ๋ํ ์ด๋ฌํ ์ํ ์ฝ๋ ํ์ค์ ์๊ฒฉํ๊ฒ ์งํค๋ ๋ ์ ์ค ํ๋์ธ๋ฐ, ์ค์ ๋ก ๋ธ๋ผ์ฐ์ ๋ ์๋ฒ๊ฐ ์ด๋ค ์ํ ์ฝ๋๋ฅผ ์๋ต์ผ๋ก ๋ด๋ ค์ฃผ๋์ง์ ๋ฐ๋ผ ์ด๋ฒ์ ์์ ์ด ๋ณด๋ธ ์์ฒญ์ ์ฑ๊ณต/์คํจ ์ฌ๋ถ๋ฅผ ๊ตฌ๋ถํ๊ณ , ์ด๋ฅผ ์๊ฐ์ ์ผ๋ก ํํํด์ฃผ๊ธฐ๋ ํ๋ค.
์ด๋ฐ ์ํฉ์์ ์๋ฒ๊ฐ ์ํ ์ฝ๋๋ 200
์ธ๋ฐ ์๋ต์ ๋ฐ๋๋ก๋ง ์๋ฌ๋ฅผ ํํํ๋ค๊ณ ํ๋ฉด, ๋ธ๋ผ์ฐ์ ๋ ์์ฒญ์ด ์ฑ๊ณตํ๋ค๊ณ ์๊ฐํ์ง๋ง ์ค์ ๋ก๋ ์์ฒญ์ด ์คํจํ, ์์ํ ์ํฉ์ด ๋ฐ์ํ๊ฒ ๋๋ค.
์ฌ์ง์ด ์๋ฒ๊ฐ ์๋ต์ ์ํ ์ฝ๋๋ก 301
๊ณผ ๊ฐ์ ์ฝ๋๋ฅผ ๋ด๋ ค์ค๋ค๋ฉด, ๋ธ๋ผ์ฐ์ ๋ ์๋์ผ๋ก ์ฌ์ฉ์๋ฅผ ๋ค๋ฅธ ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ํธ(Redirect)ํด๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ์ ์๋ฒ๊ฐ ์ ๋๋ก ๋ ์ํ ์ฝ๋๋ฅผ ์๋ต์ ๋ด์์ฃผ์ง ์๋๋ค๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ ์์ธกํ์ง ๋ชปํ ๋์์ ์ผ์ผํฌ ์๋ ์๋ค.
์, ๊ทธ๋ผ ์ด์ ๊ฐ HTTP ์ํ ์ฝ๋๊ฐ ์ด๋ค ์ํ๋ค์ ์๋ฏธํ๋ ๊ฒ์ธ์ง ํ๋์ฉ ์ดํด๋ณด๋๋ก ํ์. HTTP ์ํ ์ฝ๋๋ 100๋ฒ๋ ๋ถํฐ 500๋ฒ๋๊น์ง๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ ๊ฝค๋ ๋ค์ํ ์ํ๋ค์ ์ ์ํ ์ ์์ง๋ง, ์ด๊ฑธ ๋ค ์ ํ์๋ ์๊ณ ์ค๋ช ํ๋ ค๋ฉด ๋๋ฌด ๊ธธ๊ธฐ๋ ํ๋, ํ์๊ฐ ๋จ ํ๋ฒ์ด๋ผ๋ ์ฌ์ฉํด๋ณด์๋ ์ํ ์ฝ๋๋ค์ ๊ธฐ์ค์ผ๋ก ์ค๋ช ์ ์งํํ๋ ค๊ณ ํ๋ค.
100๋ฒ๋
100๋ฒ๋ ์ฝ๋๋ ํ๋กํ ์ฝ์ ๊ต์ฒดํด๋ ๋๋ค๊ฑฐ๋ ๊ณ์ ์์ฒญ์ ๋ณด๋ด๋ ๋๋ค๊ฑฐ๋ํ๋ ์์ ์ ๋ณด์ฑ์ ๋๊ณ ์๋ ์ํ๋ฅผ ์๋ฏธํ์ง๋ง, ์ค์ ๋ก ํ์๊ฐ ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๋ฉฐ ์ด ์ํ ์ฝ๋๋ค์ ๋ง๋๋ณธ ์ฌ๋ก๋ ์์ง ๋จ ํ๋ฒ๋ ์๊ธฐ ๋๋ฌธ์ ๊ฑด๋๋ฐ๋๋ก ํ๊ฒ ๋ค.
200๋ฒ๋
200๋ฒ๋ ์ฝ๋๋ค์ ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ ์์ ์ ์๋ฒ๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์ํํ๋ค๋ ์ํ๋ผ๋ ๊ฒ์ ์๋ ค์ฃผ๋ ์ฝ๋์ด๋ค. 200๋ฒ๋ ์ฝ๋๋ค์ ๋ธ๋ผ์ฐ์ ์ ์ฝ์์ ๋คํธ์ํฌ ํญ์์๋ ๊น๋ํ ์ด๋ก์์ผ๋ก ํ์ํด์ค๋ค.
๋ฌผ๋ก โ์์ฒญํ ์์ ์ด ์ฑ๊ณตโ์ด๋ผ๋ ์๋ต๋ง์ผ๋ก๋ ํด๋ผ์ด์ธํธ๊ฐ ์ํ๋ ์ ๋ณด๋ฅผ ๋ชจ๋ ๋ง์กฑ์ํฌ ์ ์๊ธด ํ์ง๋ง, ์กฐ๊ธ ๋ ๋ํ ์ผํ ์ํ๋ฅผ ์ ์ํด์ผํ๋ ์ํฉ์ด๋ผ๋ฉด ์ด 200๋ฒ๋์ ์ํ ์ฝ๋๋ฅผ ์ ๊ทน์ ์ผ๋ก ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ์๊ฒ ๋ ์์ธํ ์ ๋ณด๋ฅผ ์๋ ค์ค ์๋ ์๋ค.
200 OK
์ํ ์ฝ๋ 200
์ ๋จ์ํ ์์
์ด ์ฑ๊ณตํ์์ ์๋ฏธํ๋ค. ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ๋ ์์ ์ด ์์ฒญํ ์์
์ด ์ ํํ ์ด๋ค ์์
์ธ์ง ์๊ณ ์๊ธฐ ๋๋ฌธ์, ์๋ฒ์์ โ๋๊ฐ ๋ณด๋ธ ์์ฒญ์ด ์ฑ๊ณตํ์ดโ๋ผ๋ ์ ๋ณด๋ง ์๋ ค์ฃผ๋ฉด ๊ตณ์ด ๊ทธ ์ด์์ ๋ํ
์ผํ ์ ๋ณด๋ ์ ํ์๊ฐ ์๋ค. ๊ทธ๋์ ์ด ์ํ ์ฝ๋ ํ๋๋ง์ผ๋ก ๋ชจ๋ API ์๋ต ์ฑ๊ณต ์ํ๋ฅผ ํ์น๋ ๊ฒฝ์ฐ๊ฐ ๋๋ค์์ด๋ค.
201 Created
์ํ ์ฝ๋ 201
์ ๋ง ๊ทธ๋๋ก ์์ฒญ์ด ์ ์์ ์ผ๋ก ์ํ๋์๊ณ , ๊ทธ๋ก ์ธํด ๋ฆฌ์์ค๊ฐ ์๋กญ๊ฒ ์์ฑ๋์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค. ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ ์์ฒญ์ ๋ณด๋ด์ ์๋ก์ด ๋ฆฌ์์ค๋ฅผ ์์ฑํ๋ ์ํฉ์ ๊ต์ฅํ ํํ๋ฐ, ๊ทธ ์ค ํ์๊ฐ ๊ฒฝํํ๋ ๋ํ์ ์ธ ์ฌ๋ก๋ ๋ฐ๋ก โํ์๊ฐ์
โ์ด๋ค. ๊ฒฐ๊ตญ ํด๋ผ์ด์ธํธ์ ํ์๊ฐ์
์์ฒญ์ผ๋ก ์ธํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ก์ด ์ ์ ์ ๋ก์ฐ๊ฐ ์์ฑ๋์๊ธฐ ๋๋ฌธ์, ์ด๋ฐ ๊ฒฝ์ฐ๊ฐ 201
์ํ ์ฝ๋๊ฐ ์์ฃผ ์ ๋ค์ด๋ง๋ ์ผ์ด์ค๋ผ๊ณ ๋ณผ ์ ์๋ค.
204 No Content
์ํ ์ฝ๋ 204
๋ ์์ฒญ์ด ์ ์์ ์ผ๋ก ์ํ๋์๊ณ , ์ด ์์ฒญ๊ณผ ๊ด๋ จ๋์๋ ์ปจํ
์ธ ๋ํ ๋ ์ด์ ๊น๋ํ๊ฒ ์กด์ฌํ์ง ์์์ ์๋ฏธํ๋ค. ์ด ์ํ ์ฝ๋๋ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ ์์ฒญ์ ๋ณด๋ด์ ๋ญ๊ฐ๋ฅผ ์ญ์ ํด์ผํ๋ ์๋ต์ผ๋ก ์ฌ์ฉ๋ ์ ์๊ณ , ์ค์ ๋ก ํ์๊ฐ ๊ฒฝํํ๋ ์ฌ๋ก ๋ํ ๊ฒ์๊ธ์ ์ญ์ ํ๋ API์๋ค.
์ฐธ๊ณ ๋ก ์ด๋ ์ด ์ญ์ ์์
์ด Soft Delete
๋ Hard Delete
๋์๋ ์๋ฌด๋ฐ ์๊ด์ด ์๋ค. ์๋ฒ์์ ์ด๋ค ๋ฐฉ์์ผ๋ก ๋ฆฌ์์ค์ ์ญ์ ๋ฅผ ํํํ๋ ํด๋ผ์ด์ธํธ๊ฐ ์์์ผํ ์ ๋ณด๋ โ์ด ๋ฆฌ์์ค๋ ์ญ์ ๋์๊ณ , ๋ ์ด์ ์ฌ์ฉํ ์ ์๋คโ ๋ฟ์ด๋ผ๋ ์ฌ์ค์ ๋ช
์ฌํ์.
300๋ฒ๋
300๋ฒ๋ ์ฝ๋๋ค์ ๋ฆฌ๋ค์ด๋ ์ ์ ๊ด๋ จ๋ ์ํ๋ค์ ์๋ฏธํ๋ค. ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ ๋ฆฌ์์ค๊ฐ ์ฎ๊ฒจ์ก๊ฑฐ๋ ๋ฆฌ์์ค๊ฐ ์ญ์ ๋์๊ฑฐ๋ํด์ ์ ์์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก๋ ๋ ์ด์ ํด๋น ๋ฆฌ์์ค์ ์ ๊ทผํ ์ ์๊ณ ๋ค๋ฅธ URL์ ํตํด์ ๊ทธ ๋ฆฌ์์ค์ ์ ๊ทผํด์ผํ๋ ๊ฒฝ์ฐ ์๋ฒ๋ โ์ฌ๊ธฐ๋ก ๊ฐ๋ฉด ๋๊ฐ ์ฐพ๋ ๋ฆฌ์์ค๊ฐ ์์ด!โ๋ผ๋ ์ ๋ณด๋ฅผ ์๋ ค์ค ์ ์๋๋ฐ, ์ด๋ ์ฌ์ฉ๋๋ ์ํ ์ฝ๋๋ค์ด ๋ฐ๋ก 300๋ฒ๋ ์ฝ๋๋ค์ด๋ค.
301 Moved Permanetly
์ํ ์ฝ๋ 301
์ 301 Redirect
๋ผ๋ ๋ณ์นญ์ผ๋ก ๋ถ๋ฆฌ๊ธฐ๋ ํ ๋งํผ ๋ฆฌ๋ค์ด๋ ์
์ ์ํ ์ฝ๋ ์ค ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ๋
์์ด๋ค. ๋ธ๋ผ์ฐ์ ๋ ์์ ์ ๋ํ ์์ฒญ์ ์๋ต์ผ๋ก 301
์ ๋ฐ์ผ๋ฉด HTTP ํค๋์ ๋ค์ด์๋ Location
ํ๋๋ฅผ ์ฐพ์๋ณด๊ณ , ํด๋น ํ๋๊ฐ ์กด์ฌํ ๊ฒฝ์ฐ Location
ํ๋์ ๋ด๊ธด URL๋ก ์๋์ผ๋ก ๋ฆฌ๋ค์ด๋ ์
ํ๋ค.
HTTP/1.1 301 Moved Permanetly
Location: https://evan/moved-contents/1234
๋ํ ๊ตฌ๊ธ๊ณผ ๊ฐ์ ๊ฒ์ ์์ง์ ๋ด๋ค์ ํน์ ํ์ด์ง์ ์ ๊ทผํ๋๋ฐ ์๋ต์ผ๋ก 301
์ํ ์ฝ๋๋ฅผ ๋ฐ์ ๊ฒฝ์ฐ ์๋์ผ๋ก ํ์ด์ง ์ ๋ณด๋ฅผ ๊ฐฑ์ ํ๊ธฐ๋ ํ๊ธฐ ๋๋ฌธ์, SEO(Search Engine Optimization) ๊ด์ ์์๋ ์ด ์ํ ์ฝ๋๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ๋ ๊ฒ์ ๋งค์ฐ ์ค์ํ๋ค.
์ด๋ฐ ๋ฆฌ๋ค์ด๋ ์ ์ค์ ์ ๋ณดํต ์๋ฒ ์์ง์ ์ค์ ํ์ผ ๋ด์์๋ ํ ์ ์๊ณ , ๋ฐฑ์๋ ์ดํ๋ฆฌ์ผ์ด์ ๋ด์์ ์ง์ ํ ์๋ ์๋ค. ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ ์ด ์ํ์ฝ๋๋ HTTP ํ๋กํ ์ฝ๋ก ์ ์ํ ์ฌ์ฉ์๋ฅผ HTTPS ํ๋กํ ์ฝ์ ์ฌ์ฉํด์ผ๋ง ์ ๊ทผ ๊ฐ๋ฅํ ํฌํธ๋ก ๋ณด๋ด๋ฒ๋ฆด ๋์๋ ๋ง์ด ์ฌ์ฉ๋๋ค.
server {
listen 80;
server_name evan.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name evan.com;
...
}
์ด ๊ฒฝ์ฐ 80
ํฌํธ๋ก ์ ์ํ ์ฌ์ฉ์๋ฅผ ๋ฐ๊ฒฌํ Nginx๋ HTTPS ํ๋กํ ์ฝ์ ์ฌ์ฉํด์ผ๋ง ์ ๊ทผํ ์ ์๋ 443
ํฌํธ๋ก ๋ฆฌ๋ค์ด๋ ํธ์์ผ์ ํด๋น ํ๋กํ ์ฝ ์ฌ์ฉ์ ๊ฐ์ ํ ์ ์๋ค.
304 Not Modified
์ํ ์ฝ๋ 304
๋ ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ ๋ฆฌ์์ค๊ฐ ์ด์ ์์ฒญ๋์ ๋น๊ตํด๋ณด์์ ๋ ์ ํ ๋ฌ๋ผ์ง ์ ์ด ์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค. ์ฆ, ๋ง ๊ทธ๋๋ก Not Modified, ์์ ๋์ง ์์์ด๋ค.
์๋ฒ๊ฐ ์๋ต์ผ๋ก ์ด ์ํ ์ฝ๋๋ฅผ ๋ณด๋ด์ฃผ๋ฉด ํด๋ผ์ด์ธํธ๋ ๊ตณ์ด ์๋ฒ์๊ฒ ๋ฆฌ์์ค๋ฅผ ์ฌ์ ์ก๋ฐ์์ผํ ํ์๊ฐ ์๊ธฐ์ ์์ ์ด ์บ์ฑํด๋์๋ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๊ฒ๋๋ฉฐ, ์ด ๊ณผ์ ์์ ๋ถํ์ํ ํต์ ํ์ด๋ก๋์ ๋ญ๋น๋ฅผ ์ค์ผ ์ ์๋ค.
์ด ๊ณผ์ ์์ ํด๋ผ์ด์ธํธ๋ ์๋ฒ๋ก๋ถํฐ ์์ฒญ๋ ๋ฆฌ์์ค๋ฅผ ๋ฐ์ ๊ฒ์ด ์๋๋ผ ์์ ์ ์บ์ฑํด๋์๋ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๋ฏ๋ก ์ด ๋ํ ์บ์ฑ๋ ๋ฆฌ์์ค๋ก ๋ฆฌ๋ค์ด๋ ์
๋์๋ค๊ณ ์น๋ ๊ฒ์ด๋ค. ๊ทธ๋ฐ ์ด์ ๋ก 304
ย ์ํ ์ฝ๋๋ ์๋ฌต์ ์ธ ๋ฆฌ๋ค์ด๋ ์
์ผ๋ก ๋ถ๋ฆฌ๊ธฐ๋ ํ๋ค.
๋ธ๋ผ์ฐ์ ์ญ์ ์ด ์๋ต์ ์ํ ์์ฒด ์บ์ฑ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ๋ง์ฝ 304
์ํ ์ฝ๋๋ฅผ ์๋ต์ผ๋ก ๋ฐ์๋๋ฐ ์บ์ฑ๋ ๋ฆฌ์์ค๊ฐ ์๋ ๊ฒฝ์ฐ์๋ ๋น ํ๋ฉด์ ๋์ฐ๊ฑฐ๋ ์๋ฌ ํ๋ฉด์ด ๋
ธ์ถ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฐ ์ํฉ์ ๋ง๋๋ฉด โ๋ธ๋ผ์ฐ์ ์ Cached Resource๊ฐ ์๋ ๊ฑฐ ์๋?โ์ด๋ผ๋ ํน๋ฆฌ์ ๊ฐ์ฌ์ ๋ฐํํด๋ณผ ์ ์๋ค.
400๋ฒ๋
400๋ฒ๋์ ์ฝ๋๋ค์ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ ๋ณด๋ธ ์์ฒญ์ด ์๋ชป๋ ๊ฒฝ์ฐ๋ฅผ ์๋ฏธํ๋ค. ๋ง์ฝ ์ด ์ํ ์ฝ๋๋ฅผ ๋ฐ๊ฒฌํ๋ค๋ฉด ๋์ ํ๋ฅ ๋ก ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๊ฐ ์์ธ ์ฒ๋ฆฌ๋ฅผ ์ ๋๋ก ์ ํ๊ฑฐ๋ ์์ฒญ์ ์ด์ํ ๊ฐ์ด ๋ฌป์ ๊ฒฝ์ฐ๊ฐ ๋ง์ผ๋, ํ๋ก ํธ์๋ ๊ฐ๋ฐ์์ ๋ฉฑ์ด์ ์ก๋๋ก ํ์. (๋ฎ์ ํ๋ฅ ๋ก ๋ฐฑ์๋์ ์๋ชป์ธ ๊ฒฝ์ฐ๋ ์๋คโฆ)
400 Bad Request
์ํ ์ฝ๋ 400
๋ ๊ฐ์ฅ ๋ง์ด ๋ง๋ ์ ์๋ 400๋ฒ๋ ์ฝ๋ ์ค ํ๋์ด๋ฉฐ, ๋ฐ๋ ๋๋ ์์ด โํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ ์๋ชป ๋ ๋ฆผโ์ ์๋ฏธํ๋ค. ์ด๋ ๋ญ ์ด๋ป๊ฒ ์๋ชป ๋ ๋ ธ๋์ง๋ ๋ณดํต HTTP ์๋ต ๋ฐ๋์ ๋ด์์ ์๋ ค์ฃผ๋ ๊ฒฝ์ฐ๋ ์์ง๋ง, ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ์๋ ๋ฐฑ์๋ ์ดํ๋ฆฌ์ผ์ด์
์ ๋ก๊ทธ๋ฅผ ๊น๋ด์ผํ๋ ์ฌํ ์ํฉ์ด ํผ์ณ์ง ์๋ ์๋ค.
401 Unauthorized
์ํ ์ฝ๋ 401
๋ ์ธ์ฆ๋์ง ์์ ์ฌ์ฉ์๊ฐ ์ธ์ฆ์ด ํ์ํ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ๋ ๊ฒฝ์ฐ์ โ๋ ์ธ์ฆ ํ์ํจโ์ด๋ผ๊ณ ์๋ ค์ฃผ๋ ์ํ ์ฝ๋์ด๋ค. ๋ณดํต ๋ก๊ทธ์ธ์ด ํ์ํ API๋ฅผ ๋น๋ก๊ทธ์ธ ์ฌ์ฉ์๊ฐ ํธ์ถํ์ ๋ ๋ง์ด ์ฌ์ฉ๋๋ค.
ํด๋ผ์ด์ธํธ์์๋ ์๋ฒ๊ฐ 401
์ ์๋ต์ผ๋ก ๋ณด๋ด์ค ๊ฒฝ์ฐ, ๋ก๊ทธ์ธ์ด ํ์ํ๋ค๋ ๊ฒ์ผ๋ก ํ๋จํ๊ณ ๋ก๊ทธ์ธ ํ์ด์ง๋ก ์ฌ์ฉ์๋ฅผ ๋ฆฌ๋ค์ด๋ ์
ํ๊ธฐ๋ ํ๋ค.
403 Forbidden
์ํ ์ฝ๋ 403
๋ ํด๋ผ์ด์ธํธ๊ฐ ์ ๊ทผ์ด ๊ธ์ง๋ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ์์ ์๋ฏธํ๋ค. ์ด ์ํ ์ฝ๋๋ ๊ฐํน 401 Unauthorized
์ ํท๊ฐ๋ฆฌ๊ณ ๋ ํ๋๋ฐ, ์ํ ์ฝ๋์ ์๋ฏธ๋ง ๋ณด๋ฉด ํ์คํ ์ ๋งค๋ชจํธํ์ง๋ง, ์ฌ์ค ๋ถ๋ช
ํ ํ ๊ฐ์ง ์ฐจ์ด์ ์ด ์๋ค.
401
์ ๋ง ๊ทธ๋๋ก ์ธ์ฆ๋์ง ์์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ฉฐ, ์ธ์ฆ์ด ๋์ง ์์๋ค๋ ๊ฒ์ ๋ฐฑ์๋ ์ดํ๋ฆฌ์ผ์ด์
์ด ํ์ฌ ์์ฒญํ ์ฌ์ฉ์๊ฐ ๋๊ตฌ์ธ์ง ์ ์๊ฐ ์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค. ์ฆ ์ด๋ ์๋ฒ๋ ํด๋ผ์ด์ธํธ์๊ฒ โ๋์ ์ ์์ ๋ฐํ!โ๋ผ๊ณ ๋งํ๊ณ ์๋ ๊ฒ์ด๋ค.
๊ทธ๋ฌ๋ 403
์ ๊ฒฝ์ฐ, ๋ฐฑ์๋ ์ดํ๋ฆฌ์ผ์ด์
์ ํ์ฌ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ ์ฌ์ฉ์๊ฐ ๋๊ตฌ์ธ์ง ์ ํ ์ ๊ฒฝ์ฐ์ง ์๋๋ค. ํด๋ผ์ด์ธํธ๊ฐ ํ์ฌ ์์ ์ด ๋๊ตฌ์ธ์ง ๋ฐํ๋ ๋ฐํ์ง ์์๋, ์ธ์ฆ์ด ๋์๋ ์ ๋์๋ ๊ฐ์, ์ด ๋ฆฌ์์ค๋ฅผ ์์ฒญํ๋ ๊ฒ์ ๋ฌด์กฐ๊ฑด ๊ธ์ง๋ผ๊ณ ๋งํ๊ณ ์๋ ๊ฒ์ด๋ค.
HTTPS ํ๋กํ ์ฝ๋ก๋ง ์ ๊ทผํด์ผํ๋ ๋ฆฌ์์ค์ HTTP ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ์ ๊ทผํ์ ๊ฒฝ์ฐ์ ์๋ฒ์์ 403
์๋ต์ ๋ณด๋ด์ฃผ๊ธฐ๋ ํ๋ค.
404 Not Found
์ํ ์ฝ๋ 404
๋ ๋ง ๊ทธ๋๋ก ์์ฒญํ ๋ฆฌ์์ค๊ฐ ์กด์ฌํ์ง ์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
405 Method Not Allowed
์ํ ์ฝ๋ 405
๋ ํ์ฌ ๋ฆฌ์์ค์ ๋ง์ง์๋ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์์ ์๋ฏธํ๋ค. ๋ฐฑ์๋ ํ๋ ์์ํฌ์ ๊ฒฝ์ฐ ํน์ ์ปจํธ๋กค๋ฌ์ ํด๋น ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ๋ก์ง์ด ์๋ค๋ฉด ์๋์ผ๋ก 405
๋ฅผ ๋ด๋ ค์ฃผ๊ธฐ๋ ํ๋ค.
406 No Acceptable
์ํ ์ฝ๋ 406
์ ์๋ฒ ์ฃผ๋ ์ปจํ
์ธ ํ์์ ์งํํ์์๋ ๋ถ๊ตฌํ๊ณ ์๋ง์ ์ปจํ
์ธ ํ์
์ด ์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
์ฌ์ค ํด๋ผ์ด์ธํธ๋ ์๋ฒ์๊ฒ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ ๋, HTTP ํค๋์ Accept
ํ๋๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ค ์ปจํ
์ธ ํ์
์ ๋ฆฌ์์ค๋ฅผ ์ํ๋์ง๋ ํจ๊ป ์ด์ผ๊ธฐํด์ค๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ด ํ๋๋ฅผ ๋ช
์ํ์ง์์ ๊ฒฝ์ฐ ๋ธ๋ผ์ฐ์ ๋ ์๋์ผ๋ก text/html
์ ๋น๋กฏํ ๋ช ๊ฐ์ง ํ์
๋ค์ ์ค์ค๋ก ์ ์ํด์ ํค๋์ ๋ด์์ฃผ๊ณ ๋ ํ๋ค.
GET http://evan.com/
Accept: text/html,application/xhtml+xml,application/xml,*/*
...
์ด๋ฐ ์์ฒญ์ ๋ฐ์ ์๋ฒ๋ ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ธ ์์ฒญ์ Accept
ํ๋๋ฅผ ๋ณด๊ณ ์์์๋ถํฐ ํ๋์ฉ ์ฐพ์๊ฐ๋ฉฐ ์์ฒญ๋ฐ์ ๋ฆฌ์์ค์ ์๋ง์ ์ปจํ
์ธ ํ์
์ด ์๋์ง ํ๋์ฉ ์ดํด๋ณด๊ฒ ๋๊ณ , ์ดํ ์๋ง์ ์ปจํ
์ธ ํ์
์ด ์๋ค๋ฉด HTTP ์๋ต ํค๋์ Content-Type
ํ๋์ ํด๋น ์ปจํ
์ธ ํ์
์ ๋ช
์ํด์ฃผ๊ฒ ๋๋ค.
HTTP/1.1 200 OK
Content-Type: text/html
์ด ๊ณผ์ ์์ ์ด๋ค ์ปจํ
์ธ ํ์
์ ๋ฆฌ์์ค๋ฅผ ์๋ต์ผ๋ก ๋ด๋ ค์ค ๊ฒ์ธ์ง๋ ์ ์ ์ผ๋ก ์๋ฒ๊ฐ ๊ฒฐ์ ํ๊ฒ ๋๋ฏ๋ก ์ด ๊ณผ์ ์ โ์๋ฒ ์ฃผ๋ ์ปจํ
์ธ ํ์โ์ด๋ผ๊ณ ํ๋ ๊ฒ์ด๋ค. ์์ ์์์ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ๊ฐ ๋ฐ๊ธฐ๋ฅผ ์ํ๋ ์ปจํ
์ธ ํ์
์ค ์ฒซ ๋ฒ์งธ ์ฐ์ ์์๋ฅผ ๊ฐ์ง text/html
๋ฅผ ๋ฐ์์์ง๋ง, ๋ง์ฝ ์๋ฒ์ text/html
ํ์
์ ๋ฆฌ์์ค๊ฐ ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ, ์๋ฒ๋ application/xhtml+xml
, application/xml
์์๋ก ๋ฆฌ์์ค๋ฅผ ํ์ํ๊ฒ ๋๋ค.
๋ง์ฝ ์์ ๋์ด๋ ๋ชจ๋ ์ปจํ
์ธ ํ์
์ด ์๋ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ๋ ์ปจํ
์ธ ํ์
์ค ๊ฐ์ฅ ๋ง์ง๋ง์ธ */*
์์ผ๋ ์นด๋์ ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์, ์๋ฒ๋ ๋ฆฌ์์ค๊ฐ ์ด๋ค ์ปจํ
์ธ ํ์
์ธ์ง ์๊ดํ์ง ์๊ณ ๊ทธ๋๋ก ์๋ตํด์ค ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ ๋ง์ฝ ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ ์ปจํ
์ธ ํ์
์ ๋ชจ๋ ํ์ํ๋๋ฐ๋ ๋ถ๊ตฌํ๊ณ ์๋ง์ ๋ฆฌ์์ค๊ฐ ์์ ๊ฒฝ์ฐ ์๋ฒ๋ 406
์ํ ์ฝ๋์ ํจ๊ป โ๋๊ฐ ์ฐพ๋ ์ปจํ
์ธ ํ์
๊ณผ ๋ง๋ ๋ฆฌ์์ค๊ฐ ์์ดโ๋ผ๋ ์๋ต์ ์ฃผ๋ ๊ฒ์ด๋ค.
408 Request Timeout
์ํ ์ฝ๋ 408
์ ํด๋ผ์ด์ธํธ์ ์๋ฒ์ ์ฐ๊ฒฐ์ ์ฑ์ฌ๋์์ง๋ง ์์ฒญ์ ๋ณธ๋ฌธ์ด ๊ณ์ ์๋ฒ์ ๋์ฐฉํ์ง ์๋ ์ํฉ์ ์๋ฏธํ๋ค.
HTTP ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ํต์ ์ ํ ๋๋ ๋ฐ๋์ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์ฐ๊ฒฐ์ ์์ฑํ๊ณ , ๊ทธ ์ดํ์ ์์ฒญ ๋ณธ๋ฌธ์ ํด๋นํ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ฒ ๋๋๋ฐ, 408
์ํ ์ฝ๋๋ ์ด ๊ณผ์ ์์ ์ฐ๊ฒฐ์ ์ ๋๋ก ์์ฑ๋์์ง๋ง ์๋ฒ๊ฐ ์๋ฌด๋ฆฌ ๊ธฐ๋ค๋ ค๋ ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋๋ ์์ฒญ ๋ณธ๋ฌธ์ ๋ฐ์ง ๋ชปํ๋ ๊ฒฝ์ฐ์ ๋ฐ์ํ๊ฒ ๋๋ค.
429 Too Many Requests
์ํ ์ฝ๋ 429
๋ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ๋๋ฌด ์์ฒญ์ ๋ง์ด ๋ณด๋ด๋ ๊ฒฝ์ฐ์ ๋ฐ์ํ๋ค. ๋๋ฌด ๋ง์ด ๋ณด๋๋ค๋ ๊ฒ์, ๋๋ฌด ์งง์ ์๊ฐ ์์ ๋น ๋ฅด๊ฒ ์์ฒญ์ ๋ง๊ตฌ ๋ ๋ ค๋์ ์๋ฒ๊ฐ โ์์ ์ง์ ํดโ๋ผ๊ณ ํ๋ ๊ฒฝ์ฐ์ผ์๋ ์๊ณ , ์ ๋ฃ API๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ ํ์ฌ ๊ธ์ก์ผ๋ก ์ฌ์ฉํ ์ ์๋ API ์์ฒญ ํ์๋ฅผ ์ด๊ณผํด์ โ๋์ ๋ ๋ด์ธ์โ๋ผ๋ ์๋ฏธ๋ก ์ฌ์ฉ๋๊ธฐ๋ ํ๋ค.
์๋ฒ์์๋ 429
์ํ ์ฝ๋์ ํจ๊ป ์๋ต ํค๋์ Retry-After
๋ผ๋ ํ๋๋ฅผ ์ฌ์ฉํ์ฌ โ์ด ์๊ฐ ์ดํ์ ์ฌ์์ฒญํด๋ดโ๋ผ๋ ์๋ฏธ๋ฅผ ์ ๋ฌํ ์๋ ์๋ค.
500๋ฒ๋
500๋ฒ๋์ ์ฝ๋๋ค์ ํด๋ผ์ด์ธํธ๊ฐ ์๋ ์๋ฒ์์ ๋ญ๊ฐ ๋ง์ฝ์ด ์ผ์ด๋ ๊ฒฝ์ฐ์ด๋ค. ๋ง์ฝ ์ด ์ํ ์ฝ๋๋ฅผ ๋ฐ๊ฒฌํ๋ค๋ฉด ์๋ฒ์์ ๋ญ๊ฐ ๋ฐ์ด๋ฌ๋ค๋ ์๋ฏธ์ด๋ฏ๋ก ๋ค์๊ณณ์ด ๋ฐฑ์๋ ๊ฐ๋ฐ์์ ๋ฉฑ์ด์ ์ก์๋ณด๋๋ก ํ์.
500 Internal Server Error
์ํ ์ฝ๋ 500
์ ๋ฐฑ์๋ ์ดํ๋ฆฌ์ผ์ด์
๋ด์์ ๋ญ๊ฐ ์ ์ ์๋ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค๋ ์๋ฏธ์ด๋ค. ๋๋ถ๋ถ ์ ๋๋ก ํธ๋ค๋ง๋์ง ์์ ์๋ฌ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ๊ฐ ๋ง์ผ๋ฏ๋ก, ์๋ฌ์ ์์ธ์ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ ค์ฃผ์ง ์๋๋ค.(๋ผ๊ธฐ ๋ณด๋ค ์๋ ค์ค ์ ์๋ ์ํ์ธ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค)
๋ํ ์ด๋ ๊ฒ ํธ๋ค๋ง๋์ง ์์ ์๋ฌ์ ์์ธ์ ํด๋ผ์ด์ธํธ์๊ฒ ๊ณ ์ค๋ํ ์๋ ค์ฃผ๋ ๊ฒ์ ๋ณด์ ์ฌ๊ณ ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ๋๋ฌด ํฌ๋ฏ๋ก, 500
์ํ ์ฝ๋๋ก ์๋ฌ์ ๋ฐ์ ์์ฒด๋ง์ ์๋ ค์ฃผ๋ ๊ฒฝ์ฐ๊ฐ ๋๋ถ๋ถ์ด๋ค. ๋ง์ฝ ์ด ์ํ ์ฝ๋๋ฅผ ๋ง๋๋ค๋ฉด, ๋ฐ๋ก ์๋ฒ ๋ก๊ทธ๋ฅผ ๊น๋ณด๊ฑฐ๋ Sentry๋ Bugsnag๊ณผ ๊ฐ์ ์๋ฌ ๋ชจ๋ํฐ๋ง ์๋ฃจ์
์ ์ ๊ทน ํ์ฉํ๋ ๊ฒ์ ์ถ์ฒํ๋ค.
502 Bad Gateway
์ํ ์ฝ๋ 502
๋ฅผ ๋ง๋ ์ ์๋ ๊ฐ์ฅ ํํ ์ํฉ์ ๋ฐ๋ก ๋ฐฑ์๋ ์ดํ๋ฆฌ์ผ์ด์
์ด ์ฃฝ์ ์ํฉ์ด๋ค. ๊ทผ๋ฐ ์ Server Died
์ ๊ฐ์ด ์ง์ ์ ์ธ ๋ฉ์ธ์ง๊ฐ ์๋๋ผ Bad Gateway
์ ๊ฐ์ ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ด์ฃผ๋ ๊ฒ์ผ๊น?
๊ทธ ์ด์ ๋ ๋ฐฑ์๋ ์ํคํ ์ฒ๊ฐ ์๋ฌด๋ฆฌ ๊ฐ๋จํ ๊ตฌ์กฐ๋ผ๊ณ ํด๋ ์ ๋ ์ดํ๋ฆฌ์ผ์ด์ 1๊ฐ๋ก๋ง ๊ตฌ์ฑ๋์ง ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ฌ๊ธฐ์ ๋งํ๋ ๊ฒ์ดํธ์จ์ด๋ ์ดํ๋ฆฌ์ผ์ด์ ๊ฐ์ ์ถ์์ ์ธ ์ฐ๊ฒฐ์ ์ ์๋ฏธํ๋๋ฐ, ์ด ๋ฉ์ธ์ง๊ฐ ์๋ฏธํ๋ฏ ๋ฐฑ์๋์ ์ํคํ ์ฒ๋ ์ต์ 2๊ฐ ์ด์์ ์ดํ๋ฆฌ์ผ์ด์ ์ผ๋ก ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ๊ฐ ๋๋ถ๋ถ์ด๋ค.
์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ธ ์์ฒญ์ ๊ณง๋ฐ๋ก ๋ฐฑ์๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ ๋ฌ๋๋ ๊ฒ์ด ์๋๋ค. ์ฌ์ค ๋ฐฑ์๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ์๋จ์๋ ์ํ์น๋ Nginx ๊ฐ์ ์๋ฒ ์์ง์ด๋ ๋ก๋๋ฐธ๋ฐ์ ๊ฐ์ ์น๊ตฌ๋ค์ด ๋์ ์์ฒญ์ ๋ฐ์์ ๋ฐฑ์๋ ์ดํ๋ฆฌ์ผ์ด์ ์ผ๋ก ์ ๋ฌํด์ฃผ๋ ๊ฒฝ์ฐ๊ฐ ๋๋ถ๋ถ์ด๋ค.
server {
listen 80;
server_name evan.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Nginx๋ฅผ ์ฌ์ฉํ๋ฉด ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฐ ์ค์ ์ ์ฌ์ฉํ๊ฒ ๋๋๋ฐ, ์ด๋ ๊ฒ ๋๋ฉด Nginx๋ 80
๋ฒ ํฌํธ์์ ๋๊ธฐํ๋ฉฐ HTTP ํ๋กํ ์ฝ์ ์ฌ์ฉํ ์์ฒญ์ ๋ฐ์ 3000
๋ฒ ํฌํธ์์ ๋๊ธฐํ๊ณ ์๋ ๋ฐฑ์๋ ์ดํ๋ฆฌ์ผ์ด์
์๊ฒ ์ ๋ฌํด์ฃผ๋ ์ญํ ์ ์ํํ๊ฒ ๋๋ค.
์ด๋ฐ ์ํคํ ์ฒ๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ณด์๊ณผ ์ฒ๋ฆฌ ํจ์จ ๋๋ฌธ์ด๋ค. ๋ฐฑ์๋ ์ดํ๋ฆฌ์ผ์ด์ ์์ฒด๊ฐ ์์ ๋ฌด๊ฒฐํ ์น๊ตฌ๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ์์ฒญ์ ์์ฌํ๊ณ ๋ฐฑ์๋ ์ดํ๋ฆฌ์ผ์ด์ ์๊ฒ ๋จน์ฌ์ค ์๊ฐ ์๋ ๊ฒ์ด๋ค. ๊ทธ๋ ๋ค๊ณ ๋๊ฐ ์ฌ์ฉํ๋ ์ง๋ ๋ชจ๋ฅด๋ ํด๋ผ์ด์ธํธ์์ ์์ ํ ์์ฒญ๋ง ๋ณด๋ด์ค ๊ฒ์ด๋ผ๋ ๊ธฐ๋ ๋ํ ์ด๋ถ์ฑ์ค์ด๋ค.
๊ฒ๋ค๊ฐ ๋ญ๊ฐ ์ฐ์ฐ์ด ํ์ํ ์์ฒญ์ด ์๋, ํ์ผ์ ์ฐพ์์ ๋ณด๋ด์ฃผ๊ธฐ๋ง ํ๋ ๊ฐ๋จํ ์์ฒญ ๊ฐ์ ๊ฒฝ์ฐ๋ ๊ตณ์ด ์ ๊ทธ๋๋ ๋ฐ์ ๋ฐฑ์๋ ์ดํ๋ฆฌ์ผ์ด์ ์๊ฒ ์ํฌ ํ์๊ฐ ์์ผ๋ฏ๋ก ์ด๋ฐ ์๋ฒ ์์ง์ด ๋์ ์ฒ๋ฆฌํด์ฃผ๊ธฐ๋ ํ๋ค.
๊ทธ๋์ ๋ฐฑ์๋์์๋ ์ ๋จ์ ์์ ํ๋ก์ ์๋ฒ๋ฅผ ๋์ด์ ๋ฌธ์ง๊ธฐ ์ญํ ์ ์ํค๋ ๊ฒ์ด๋ค. ์ด๋ ์ด ํ๋ก์ ์๋ฒ์ ๋ฐฑ์๋ ์ดํ๋ฆฌ์ผ์ด์
๊ฐ์ ์ฐ๊ฒฐ๋ ์ถ์์ ์ธ ํต๋ก๋ฅผ โ๊ฒ์ดํธ์จ์ดโ๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฒ์ด๋ค. ๋ฐฑ์๋ ์ดํ๋ฆฌ์ผ์ด์
์ด ์ฃฝ์ด๋ฒ๋ฆด ๊ฒฝ์ฐ ์ ๋จ์ ๋ฌธ์ง๊ธฐ์ธ ํ๋ก์ ์๋ฒ๋ ๋ฐฑ์๋ ์ดํ๋ฆฌ์ผ์ด์
์๊ฒ ์๋ฌด๋ฐ ์๋ต์ ๋ฐ์ง ๋ชปํ๊ฒ ๋๊ณ , ํด๋ผ์ด์ธํธ์๊ฒ 502 Bad Gateway
๋ผ๋ ์๋ต์ ๋ณด๋ด์ฃผ๋ ๊ฒ์ด๋ค.
503 Service Unavailable
์ํ ์ฝ๋ 503
์ ์๋ฒ๊ฐ ์์ฒญ์ ์ฒ๋ฆฌํ ์ค๋น๊ฐ ๋์ง ์์์์ ์๋ฏธํ๋ค. ๊ฐํน 502 Bad Gateway
์ ๋น์ทํ ๋๋์ผ๋ก ์ฌ์ฉ๋๊ธฐ๋ ํ์ง๋ง, 503
์ ๋ณด๋ค โ์ผ์์ ์ธ ์ํฉโ์ ์๋ฏธํ๋ ์ํ ์ฝ๋์ด๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก ์๋ฒ์ ๋ถํ๊ฐ ์ฌํด์ ํ์ฌ ์์ฒญ์ ํธ๋ค๋ง ํ ์ ์๋ ์ฌ์ ๊ฐ ์๋ ๊ฒฝ์ฐ์ ๋ง์ด ์ฌ์ฉ๋๋ค.
AWS Lambda์์๋ ์์ฒญ์ ์ฒ๋ฆฌํ ๋ ์ปจํ ์ด๋์ ๋์ ์คํ ๊ฐฏ์๋ฅผ ์ด๊ณผํ ์ ๋์ ๋ฆฌ์์ค๊ฐ ํ์ํ๊ฑฐ๋ ์ด๋ค ์์ ์ ์ฒ๋ฆฌ ์๊ฐ์ด Lambda์ ์ค์ ๋ ์ปจํ ์ด๋์ ์ต๋ ์๋ช ์๊ฐ์ ์ด๊ณผํ์ ๊ฒฝ์ฐ์ ๋ฐ์ํ๊ธฐ๋ ํ๋ค.
์ด๋ ๋ฏ์ด 503
์ ์ผ์์ ์ธ ์ํฉ์ ์๋ฏธํ๋ฏ๋ก 429 Too Many Requests
์ ๋์ผํ๊ฒ ์๋ต ํค๋์ Retry-After
ํ๋๋ฅผ ์ฌ์ฉํ์ฌ โ์ด ์๊ฐ ์ดํ์ ๋ค์ ์์ฒญํด๋ดโ๋ผ๋ ์๋ฏธ๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌํด์ค ์ ์๋ค.
504 Gateway Timeout
์ํ ์ฝ๋ 504
๋ 408
๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์์ฒญ์ ๋ํ ํ์์์์ ์๋ฏธํ๋ค. ๊ทธ๋ฌ๋ 504
์ํ ์ฝ๋๋ ํด๋ผ์ด์ธํธ์์ ๋ณด๋ธ ์์ฒญ ๋๋ฌธ์ ํ์์์์ด ๋ฐ์ํ๋ ๊ฒ์ด ์๋๋ผ ๋ฐฑ์๋ ์ํคํ
์ฒ ๋ด๋ถ์์ ์๋ฒ๋ผ๋ฆฌ ์ฃผ๊ณ ๋ฐ๋ ์์ฒญ์์ ๋ฐ์ํ๋ค.
์์ ์ด์ผ๊ธฐํ๋ฏ์ด ๋ฐฑ์๋์ ์ํคํ
์ฒ๋ ๋จ์ํ ๋ฐฑ์๋ ์ดํ๋ฆฌ์ผ์ด์
ํ๋๋ก๋ง ๊ตฌ์ฑ๋ ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์, ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ์๋ฒ์ ๋ฟ์ ๋ค์๋ ๋ฐฑ์๋ ์ดํ๋ฆฌ์ผ์ด์
๋ผ๋ฆฌ์ ํต์ ์ด ๋ฐ์ํ๊ฒ ๋๋ค. ๋ง์ฝ ํ๋ก์ ์๋ฒ ์ญํ ์ ๋งก์ Nginx๊ฐ ๋ฐฑ์๋ ์ดํ๋ฆฌ์ผ์ด์
์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ ๋ฌํ๋๋ฐ, ๋ฐฑ์๋ ์ดํ๋ฆฌ์ผ์ด์
์ด ์ผ์ ์๊ฐ ๋์ ์๋ต์ ํ์ง ์๋ ๊ฒฝ์ฐ Nginx๋ ํด๋ผ์ด์ธํธ์๊ฒ 504 Geteway Timeout
์ ๋ด๋ ค์ฃผ๊ฒ ๋๋ ๊ฒ์ด๋ค.
๋ง์น๋ฉฐ
์ฌ์ค ์ด๋ฒ ํฌ์คํ ์์๋ HTTP ์ํ ์ธ์๋ RESTful API์ ๋ํ ๋ด์ฉ๋ ํจ๊ป ์ด์ผ๊ธฐํ๋ ค๊ณ ํ์ง๋ง, ๋ค์ ํ๋ฒ ๋ถ๋ ์กฐ์ ์ ๋์คํจํ๋ฉด์ ํฌ์คํ ์ ๋๋์ด ์์ฑํ๊ฒ ๋์๋ค.(์ ์ ๋น๋๊ฐ ์ฆ์์ง๋คโฆ)
์์ ์ด์ผ๊ธฐํ๋ฏ์ด ์ด๋ฐ ์ํ ์ฝ๋์ ๊ฐ์ ์์๋ค์ ๋ฑํ ์ ์งํจ๋ค๊ณ ํด์ ํ๋ก๊ทธ๋จ์์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ ๊ฒ๋ ์๋๊ธฐ ๋๋ฌธ์ ๊ฐ๋ณ๊ฒ ์๊ฐํ๊ณ ๋์ด๊ฐ๊ธฐ ์ฝ์์ด์ง๋ง, ๋ณด๋ค ๋ช ํํ ์ธํฐํ์ด์ค๋ฅผ ์ ์ํ๊ฒ๋๋ฉด ํ๋ก๊ทธ๋จ์ ์๋์ ์์ธกํ๊ธฐ๋ ์ฌ์์ง๊ณ , ํ๋ก ํธ์๋์ ๋ฐฑ์๋ ๊ฐ๋ฐ์ ๊ฐ์ ์ปค๋ฎค๋์ผ์ด์ ์๋ ํฐ ๋์์ด ๋๊ธฐ ๋๋ฌธ์ ๋๋๋ก์ด๋ฉด ํ์ค์ ์ง์ผ์ฃผ๋ ๊ฒ์ ๊ถ์ฅํ๋ค.
์ด์์ผ๋ก ์๋ฒ์ ์ํ๋ฅผ ์๋ ค์ฃผ๋ HTTP ์ํ ์ฝ๋ ํฌ์คํ ์ ๋ง์น๋ค.