์ ์ฒด ๊ธ
๋ฐฉํ๋ฒฝ ์ค์
iptables ํจํท์ ๋ํ ๋์์ ์์์๋ถํฐ ์ฐจ๋ก๋ก ๊ฐ ๊ท์นญ์ ๋ํด ๊ฒ์ฌํ๊ณ ๊ทธ ๊ท์น๊ณผ ์ผ์นํ๋ ํจํท์ ๋ํ์ฌ ํ๊ฒ์ ์ง์ ํ ACCEPT, DROP ๋ฑ์ ์ํํ๋ค. ๊ท์น์ด ์ผ์นํ๊ณ ์์ ์ด ์ํ๋๋ฉด, ๊ทธ ํจํท์ ํด๋น ๊ท์น์ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ์ฒ๋ฆฌํ๊ณ ์ฒด์ธ์์ ์ถ๊ฐ ๊ท์น์ ๋ฌด์ํ๋ค. ํจํท์ด ์ฒด์ธ์ ๋ชจ๋ ๊ท์น๊ณผ ๋งค์นํ์ง ์์ ๊ท์น์ ๋ฐ๋ฅ์ ๋๋ฌํ๋ฉด ์ ํด์ง ๊ธฐ๋ณธ์ ์ฑ (policy)์ด ์ํ๋๋ค. ๊ธฐ๋ณธ ์ ์ฑ ์ policy ACCEPT, policy DROP ์ผ๋ก ์ค์ ํ ์ ์๋ค. ์ผ๋ฐ์ ์ผ๋ก ๊ธฐ๋ณธ ์ ์ฑ ์ ๋ชจ๋ ํจํท์ ๋ํด DROP ์ค์ ํ๊ณ ํน๋ณํ ์ง์ ๋ ํฌํธ์ IP ์ฃผ์ ๋ฑ์ ๋ํด ACCEPT ๋ฅผ ์ํํ๊ฒ ๋ง๋ ๋ค. iptables ์ค์ 1) ๊ธฐ๋ณธ ์ค์ ๊ท์น์ ๋ช ์๋์ง ์์ ํจํท์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ์ด๋ป๊ฒ ํ ๊ฒ ์ธ์ง์ ๋ํ ๊ธฐ..
MSA๋ฅผ ์ํ L7 Proxy - Envoy proxy
๋คํธ์ํฌ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํฌ๋ช ํด์ผํ๋ฉฐ ์ฅ์ ๊ฐ ๋ฐ์ํ์ ์ ์ด๋์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋์ง ์ฝ๊ฒ ํ์ ํ ์ ์์ด์ผํ๋ค. MSA ์๋น์ค๋ค์ด ๋์ด๋๋ฉด์ ์๋น์ค๋ค์ด ๋คํธ์ํฌ๋ฅผ ํตํด ์๋ก ํต์ ํด์ผํ๊ณ ์ด๋ฌํ ์๋น์ค์์ ์ฌ์ฉํ๋ ํต์ฌ ๋คํธ์ํฌ ํ๋กํ ์ฝ์ HTTP, HTTP/2, gRPC, Kafka, MongoDB ๋ฑ์ L7 ํ๋กํ ์ฝ์ด๋ค. L3, L4 ๊ธฐ๋ฐ์ ํ๋ก์๋ค๋ก๋ ๋ค์ํ ์๊ฑด๋ค์ ์ฒ๋ฆฌํ๊ธฐ ์ด๋ ค์์ก๊ณ ๊ทธ์ ๋ฐ๋ผ L7 ๊ธฐ๋ฅ์ ๊ฐ์ถ ํ๋ก์์ ํ์์ฑ์ด ๋ถ๊ฐ๋๊ธฐ ์์ํ๋ค. Envoy Proxy ๋ Serivice Mesh Architecture๋ก ๋ํ๋๋ Istio์ ๋ฉ์ธ ํ๋ก์๋ก ๋ํ MSA ์ ๋จ์ผ Application๊ณผ Service๋ฅผ ์ํด ์ค๊ณ๋ ๊ณ ์ฑ๋ฅ ๋ถ์ฐ C++ ํ๋ก์์ด๋ค. Lift ์ฌ์์ ์ ์ํ ํ๋ก์ ํธ๋ก (..
Service Mesh Architecture & Istio
MSA ์์คํ ์์๋ ์์ญ๊ฐ์ Micro Service๊ฐ ๋ถ๋ฆฌ๋์ด์๊ณ ๋์ํ๋ ์๋ฐฑ ~ ์์ฒ๊ฐ์ ์๋น์ค ์ธ์คํด์ค๋ค์ ๋ชจ๋ํฐ๋งํ๊ณ ๋ก๊น ํ๊ณ ๊ด๋ฆฌํด์ผํ๋ค. ๋ํ ์๋น์ค๊ฐ์ ํต์ ๋ ๋งค์ฐ ๋ณต์กํด์ง๋ค. ์ด์ ๊ฐ์ ํ๋ก๊ทธ๋๋ฐ ์ค๋ฒํค๋๋ฅผ ๋ฎ์ถ๊ธฐ ์ํด ๋์จ ์ํคํ ์ฒ๊ฐ ๋ฐ๋ก Service Mesh ์ด๋ค. Service Mesh ๊ธฐ์กด ์๋น์ค ์ํคํ ์ฒ์์์ ํธ์ถ์ด ์ง์ ํธ์ถ๋ฐฉ์์ด์๋ค๋ฉด service mesh์์์ ํธ์ถ์ ์๋น์ค์ ๋ธ๋ฆฐ proxy๋ผ๋ฆฌ ์ด๋ค์ง๊ฒ ๋๋ค. ์ด๋ ์๋น์ค์ ํธ๋ํฝ์ ๋คํธ์ํฌ๋จ์์ ํต์ ํ ์ ์๊ฒ ํ๊ณ ๋ํ Client ์ ์๊ตฌ์ ๋ฐ๋ผ Proxy๋จ์์ ๋ผ์ฐํ ์๋น์ค๋ ๊ฐ๋ฅํ๊ฒ ํ ์ ์๋ค. ์ด๋ฐ ๋ค์ํ ๊ธฐ๋ฅ์ ์ํํ๋ ค๋ฉด ๊ธฐ์กด์ TCP๊ธฐ๋ฐ์ proxy๋ก๋ ํ๊ณ๊ฐ ์๋ค. ๊ทธ๋์ Service Mesh์์์ ํต..
git manual
git branch ์์ฑ git checkout master # master ๋ธ๋์น๋ก ์ด๋ git checkout -b feature/new-feature # ์๋ก์ด ๋ธ๋์น ์์ฑ ๋ฐ ์ด๋ git commit ์ทจ์ # ๊ฐ์ฅ ์ต๊ทผ์ ์ปค๋ฐ์ ์ทจ์ํ๊ณ ๋ณ๊ฒฝ ๋ด์ฉ์ ์คํ ์ด์ง ์์ญ์ผ๋ก ๋๋๋ฆผ git reset HEAD~1 # ์ด์ ์ํ๋ก ๋๋๋ฆฌ๋ ๋ณ๊ฒฝ ๋ด์ฉ์ ๋ณด์กด git reset --soft HEAD~1 git ๊ฐ์ pull # ํน์ ํ์ผ๋ง checkout git checkout -- # ๊ฐ์ pull git fetch --all git reset --hard origin/ # ๋ก์ปฌ์์ ์ถ๊ฐํ ํ์ผ ์ญ์ git clean -fd
๋น๋๊ธฐ ๋คํธ์ํฌ ์๋ฒ ํ๋ ์์ํฌ Vert.x ๊ฐ๋
Tomcat์ HTTP ์์ฒญ์ด ๋์ฐฉํ๋ฉด ์์ฒญ์ด ์ฒ๋ฆฌ๋ ๋๊น์ง ์์ฒญ์ ๋๊ธฐ์ด์ ๋ฃ์ต๋๋ค. ์ด ๋๊ธฐ์ด์ ์๋ ์์ฒญ๋ค์ Thread Pool์ ์๋ ์ค๋ ๋์๊ฒ ํ ๋น๋์ด ํ๋์ฉ ์ฒ๋ฆฌ๋ฉ๋๋ค. ๊ฐ ์ค๋ ๋๋ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ์์ ์ด ์๋ฃ๋๋ฉด ์๋ต์ ๋ณด๋ธ ํ ํด๋น ์์ฒญ์ ๋ํ ์์ ์ ์ข ๋ฃํฉ๋๋ค. ์์ ์ด ์๋ฃ๋ ์ค๋ ๋๋ ๋ค์ ์ค๋ ๋ ํ๋ก ๋์๊ฐ๋๋ค. Tomcat์์ ๋์์ ์ฒ๋ฆฌํ ์ ์๋ Connection์๋ ์ผ๋ฐ์ ์ผ๋ก 50~500๊ฐ์ ์ค๋ ๋๊ฐ ์ ์ ํฉ๋๋ค. ์ฆ, ํ๋์ Tomcat ์๋ฒ๋ ๋์์ ์ต๋ 500์ฌ๊ฐ์ ์ฐ๊ฒฐ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ์๋น์ค์ ๊ท๋ชจ์ ์๊ตฌ ์ฌํญ์ด ์ฆ๊ฐํจ์ ๋ฐ๋ผ, ์์ญ๋ง ๋๋ ์๋ฐฑ๋ง ๊ฐ์ ๋์ ์ฐ๊ฒฐ์ ์ฒ๋ฆฌํด์ผ ํ ํ์๊ฐ ์์ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ผ๋ฐ์ ์ธ WAS๋ก๋ ์ด๋ฌํ ์๊ตฌ๋ฅผ ์ถฉ์กฑํ๊ธฐ ์ด๋ ต์ต๋๋ค..
IntelliJ IDEA Keymap, Code template, Debugging ์ ๋ฆฌ
KeyMap tab ๋ซ๊ธฐ: ctrl + F4 project ์ฐฝ ์ ํ: alt + 1 (esc๋ก ๋์๊ฐ) (space๋ก ๋ฏธ๋ฆฌ๋ณด๊ธฐ) editor ์ฐฝ ๋๋ฆฌ๊ธฐ: ctrl + shift + f12 editor ์ฐฝ ์ด๋: ctrl + e ์ํ์ผ ์์ฑ: ctrl + alt + insert ์ฌ์ฉ์ฒ? ์ฐพ๊ธฐ: alt + f7 / ctrl + b (๋น ๋ฅด๊ฒ ์ฐพ๊ธฐ ๊ทธ ์ฝ๋๋ก ์ด๋ํจ) ๊ตฌํ๋ถ ์ฐพ๊ธฐ: ctrl + shift + i ์ฝ๋ ์์ฑ: alt + insert Override : ctrl + o Implement: ctrl + i ํฐ๋ฏธ๋ ์ฐฝ ์ ํ: alt + f12 ์คํ: ctrl + shift + f10 / shift + f10 ์ข ๋ฃ: ctrl + f2 line ๋ณต์ฌ: ctrl + d line ์ญ์ : ctrl + y par..
[Linux System Programming] File System #3
Linux File Structure ๋ฆฌ๋ ์ค๋ ๋ชจ๋ ๊ฒ ๋ค ํ์ผ๋ก ์ด๋ฃจ์ด์ ธ์๋ค. ํ์ผ ์์คํ ์ ์ดํดํ๋ ๊ฒ์ ํ์ผ ์ ์ถ๋ ฅ ์์ ์ ์ํํ๊ณ ๋ฆฌ๋ ์ค/์ ๋์ค ์์คํ ์ ์ดํดํ๋ ๋ฐ ์์์ ์ด๋ผ๊ณ ํ ์ ์๋ค. System Call open read write close ioctl (device driver์ ์ ์ด ์ ๋ณด ์ ๋ฌ) Low-Level File Access ๋ฆฌ๋ ์ค์์ ๊ธฐ๋ณธ์ ์ผ๋ก 3๊ฐ์ง์ ํ์ผ์ด ์ด๋ ค์๊ณ ๊ฐ ํ์ผ์ id๋ก ๊ตฌ๋ถํ๋ค. ๋ค์ 3 ํ์ผ์ ์ด์์ฒด์ ๊ฐ ์์๋๋ฉด์ ๋ฐ๋ก ์คํ๋๋ค. 0: standard input(stdin) 1: standard output(stdout) 2: standard error(stderr) write ์ฌ์ฉ๋ฒ man 2 write 1๋ฒ ๋งค๋ด์ผ: ๋ฆฌ๋ ์ค ๋ช ๋ น์ด๊ด๋ จ 2๋ฒ ๋งค๋ด์ผ: ..
[Linux System Programming] GCC ์ปดํ์ผ๋ฌ ์ฌ์ฉ๋ฒ #2
์ปดํ์ผ ๊ณผ์ ์์ค์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ผ๋ก ์ปดํ์ผ๋์ด ์คํํ์ผ์ด ๋๋ค. ์ ์ฒ๋ฆฌ๊ธฐ(preprocessor): ์์ค์ฝ๋์ ์ฃผ์์ ๊ฑฐ, define์ ์นํํ๋ ๊ธฐ๋ฅ ์ปดํ์ผ๋ฌ(compiler): ์ด์ ๋ธ๋ฆฌ ํ์ผ๋ก ๋ณํ(์ด์ ๋ธ๋ฆฌ์ด๋ CPU ๋ช ๋ น์ด ์กฐํฉ์ผ๋ก CPU์ ์์กด์ ) ์ด์ ๋ธ๋ฌ(assembler): object ์ฝ๋ ํ์ผ๋ก ๋ณํ. object ํ์ผ์ 0๊ณผ 1๋ก ์ด๋ฃจ์ด์ง ๋ฐ์ด๋๋ฆฌ ์ฝ๋(์์ง ์ฃผ์ ์ ๋ณด๊ฐ ํ์ ๋์ง ์์) ๋ง์ปค(linker): object ํ์ผ์ ๋ฌถ์ด ์คํ ์ฝ๋ ํ์ผ๋ก ๋ณํ. ์ด์์ฒด์ ๊ฐ ๋ก๋ฉํ ์ ์๋๋ก ์ฃผ์ ์ ๋ณด๋ฅผ ํ ๋นํ ํ์ผ์ ๋ง๋ค์ด ๋ธ๋ค.(๋ง์ปค๋ ์ด์์ฒด์ ์ ์์กด์ ) GCC ๋ช ๋ น์ด ๋ช ๋ น์ฐฝ์์ gcc ๋งค๋ด์ผ์ ํ์ธํด๋ณด์. GCC(1) GNU GCC(1) NAME gcc - GNU project C ..
[Linux System Programming] vi cheat sheet #1
์ ์ฒด ๋ช ๋ น์ด ์ ๋ฆฌ ์ ๋ ฅ๋ชจ๋ i ํ์ฌ ์ปค์ ์์ ์ ๋ ฅํ๋ค. a ํ์ฌ ์ปค์ ๋ค์ ์ ๋ ฅํ๋ค. o ์ปค์๊ฐ ์์นํ ํ์ ๋ค์ ํ์ ์ ๋ ฅํ๋ค. I(๋๋ฌธ์ i) ์ปค์๊ฐ ์์นํ ํ์ ์ฒซ ์ปฌ๋ผ์ผ๋ก ์ด๋ํ์ฌ ์ ๋ ฅํ๋ค. A ์ปค์๊ฐ ์์นํ ํ์ ๋ง์ง๋ง ์ปฌ๋ผ์ผ๋ก ์ด๋ํ์ฌ ์ ๋ ฅํ๋ค. O ์ปค์๊ฐ ์์นํ ํ์ ์ด์ ํ์ ์ ๋ ฅํ๋ค. ์ปค์ ์ด๋ k ์ปค์๋ฅผ ์๋ก ์ด๋ํ๋ค. j ์ปค์๋ฅผ ์๋๋ก ์ด๋ํ๋ค. h ์ปค์๋ฅผ ์ผ์ชฝ์ผ๋ก ์ด๋ํ๋ค. l ์ปค์๋ฅผ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํ๋ค. ^ / O ์ปค์๋ฅผ ํ์ฌ ํ์ ์ฒ์์ผ๋ก ์ด๋ํ๋ค. $ ์ปค์๋ฅผ ํ์ฌ ํ์ ๋ง์ง๋ง์ผ๋ก ์ด๋ํ๋ค. - ์ปค์๋ฅผ ํ์ค ์ ์ฒ์์ผ๋ก ์ด๋ํ๋ค. + / Enter ์ปค์๋ฅผ ๋ค์ ํ์ ์ฒ์์ผ๋ก ์ด๋ํ๋ค. H ์ปค์๋ฅผ ํ๋ฉด์ ๋งจ ์ํ์ผ๋ก ์ด๋ํ๋ค. M ์ปค์๋ฅผ ํ๋ฉด์ ์ค๊ฐ ํ์ผ๋ก ์ด๋ํ๋ค. L ์ปค์๋ฅผ ..
[HardWare] HACKTHEBOX Debugging Interface Write Up
debugging_interface_signal.sal ํ์ผ์ด ์ ๊ณต๋จ ๐ ํ์ผ๋ถ์ ๋ก์ง ์ ๋๋ผ์ด์ ์์ ํ์ผ์ ์ด๋ฉด ์๋์ ๊ฐ์ด ๋์จ๋ค. ํ๋ํ๊ฑฐ๋ ์ถ์ํ ์ ์๋ค. ์ฐ์ธก์ 1F ์์ด์ฝ์ด ํ์๋ Analyzer ํญ์ ํด๋ฆญํ ๋ค์ Async Serial์ ํด๋ฆญํ๋ค. ๊ธฐ๋ณธ์ค์ ์ด ๋์ค๋๋ฐ ์๋์ ๊ฐ์ด ์ ์ฅํ๋ค. ๊ทธ๋ํ๋ฅผ ๋ณด๋ฉด 16์ง์ ๊ฐ์ ๋ธ๋ฐ์น์ ๋ง์ ํ๋ ์ด๋ฐ ์ค๋ฅ๊ฐ ์๋ค๋ ๊ฒ์ ์ ์ ์๋ค. ๋น๋๊ธฐ ์ง๋ ฌ ํต์ ์ ๋ํ ์ ๋ณด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ์ก๋๋ ๊ฐ ๋ฐ์ดํฐ๊ฐ ASCII์ด๊ณ ์์ ๋ฐ ์ค์ง ๋นํธ๊ฐ ์์์ ์ ์ ์๋ค. ๋ฐ๋ผ์ ์ฐ์ธก์๋จ์ ํ๋ฒ๊ฑฐ ๋ฉ๋ด์์ ASCII๋ก ๋ณํํ ๋ค์ ๊ฐ์ ํ์ธํด๋ณด์. ํจ์ฌ ๋ ์ฝ๊ธฐ ์ฌ์ด์ง ๊ฒ์ ํ์ธํ ์ ์๋ค. ์ด์ ํ๋ ์ด๋ฐ ์ค๋ฅ๋ฅผ ํด๊ฒฐํ ์ฐจ๋ก์ด๋ค. UART ๋ฑ๊ณผ ๊ฐ์ ์ ํธ๋ ๋ณ๋ ฌํํ๋ก ๋ค..