Loading...
2021. 2. 21. 18:20

[RxJava] 4. Reactive ์—ฐ์‚ฐ์ž ํŒŒํ—ค์ณ๋ณด๊ธฐ 2ํŽธ (๊ฒฐํ•ฉ, ์กฐ๊ฑด ์—ฐ์‚ฐ์ž)

2021/02/07 - [Programming/Java] - [RxJava] 3. Reactive ์—ฐ์‚ฐ์ž ํŒŒํ—ค์ณ๋ณด๊ธฐ 1ํŽธ (์ƒ์„ฑ, ๋ณ€ํ™˜ ์—ฐ์‚ฐ์ž) [RxJava] 3. Reactive ์—ฐ์‚ฐ์ž ํŒŒํ—ค์ณ๋ณด๊ธฐ 1ํŽธ (์ƒ์„ฑ, ๋ณ€ํ™˜ ์—ฐ์‚ฐ์ž) 2021/01/23 - [Programming/Java] - [RxJava] 2. Reactive ๊ธฐ๋ณธ ์—ฐ์‚ฐ์ž(Operator) - map, filter, reduce [RxJava] 2. Reactive ๊ธฐ๋ณธ ์—ฐ์‚ฐ์ž(Operator) - map, filter, reduce Reactive Programming์—์„œ ๊ฝƒ์ด๋ผ๊ณ .. blog.neonkid.xyz ์ด๋ฒˆ ํฌ์ŠคํŠธ๋Š” ์ง€๋‚œ ํฌ์ŠคํŠธ์— ์ด์–ด ๊ฒฐํ•ฉ, ์กฐ๊ฑด ์—ฐ์‚ฐ์ž์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฒฐํ•ฉ ์—ฐ์‚ฐ์ž ๊ฒฐํ•ฉ ์—ฐ์‚ฐ์ž๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ Obser..

2021. 2. 13. 13:26

[FastAPI] 6. Google-auth ๋ฐ PyJWT๋ฅผ ์ด์šฉํ•œ OAuth2 ์ธ์ฆ ๊ตฌํ˜„ 1

์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ์ธ์ฆ์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋ฅผ ํ•ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. Spring์—์„œ๋Š” Spring Security๋ผ๋Š” ๋ชจ๋“ˆ์„ ์ œ๊ณตํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ธ์ฆ์— ๋Œ€ํ•œ ๊ตฌํ˜„์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ํ•˜์ง€ ์•Š๊ณ ๋„ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์กด์žฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•˜์—ฌ Google ๊ฐœ๋ฐœ์ž ์ฝ˜์†”์—์„œ Client ID๋ฅผ ๋ฏธ๋ฆฌ ๋ฐœ๊ธ‰๋ฐ›์€ ํ›„ ๊ตฌํ˜„๋˜์–ด ์žˆ๋Š” ๊ตฌํ˜„์ฒด๋งŒ ์ž˜ ์‚ฌ์šฉํ•˜๋ฉด ์–ด๋ ต์ง€ ์•Š๊ฒŒ OAuth2 ์ธ์ฆ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์—ˆ์ฃ . FastAPI๋„ ์ด์™€ ๋น„์Šทํ•˜๊ฒŒ OAuth2 ์ธ์ฆ์„ ๊ตฌํ˜„ํ•˜์ง€๋งŒ JWT๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์—๋Š” ๋ณ„๋„์˜ ๊ตฌํ˜„ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ์ด ๋‘ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ€์ง€๊ณ  OAuth2 ์ธ์ฆ์„ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. [Spring boot] Spring boot Security๋กœ ์‹œ์ž‘ํ•ด๋ณด๋Š” ์ธ์ฆ Spring ..

2021. 2. 7. 17:17

[RxJava] 3. Reactive ์—ฐ์‚ฐ์ž ํŒŒํ—ค์ณ๋ณด๊ธฐ 1ํŽธ (์ƒ์„ฑ, ๋ณ€ํ™˜ ์—ฐ์‚ฐ์ž)

2021/01/23 - [Programming/Java] - [RxJava] 2. Reactive ๊ธฐ๋ณธ ์—ฐ์‚ฐ์ž(Operator) - map, filter, reduce [RxJava] 2. Reactive ๊ธฐ๋ณธ ์—ฐ์‚ฐ์ž(Operator) - map, filter, reduce Reactive Programming์—์„œ ๊ฝƒ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š” Reactive Operator์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด Java 8์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋ฉด, ์ด๋Ÿฌํ•œ Reactive ์—ฐ์‚ฐ์ž๊ฐ€ ๋งค์šฐ ์ต์ˆ™ํ•˜์‹ค ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. RxJava์—. blog.neonkid.xyz ์ง€๋‚œ ํฌ์ŠคํŠธ์—์„œ Reactive์˜ ๊ธฐ๋ณธ ์—ฐ์‚ฐ์ž๋ฅผ ๋‹ค๋ค˜์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์—ฐ์‚ฐ์ž๋ฅผ ๋‹ค๋ฃจ๋ฉด์„œ RxJava์—์„œ ์ œ๊ณตํ•˜๋Š” ์ˆ˜๋งŽ์€ ์—ฐ์‚ฐ์ž๊ฐ€ ์žˆ๊ณ  ๊ทธ ์ค‘์— ๊ธฐ๋ณธ์ ์ธ ์—ฐ์‚ฐ์ž..

2021. 2. 6. 15:07

[Algorithm] - 2021 ์นด์นด์˜ค ์‹ ์ž… 1์ฐจ ์˜จ๋ผ์ธ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ (Kakao Newbie Primary Online Coding Test) for Tech Developers ๋ฌธ์ œ ํ’€์ด

์ง€๋‚œ ์ฃผ, 2021๋…„ ์นด์นด์˜ค ์‹ ์ž… ์˜จ๋ผ์ธ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ ํ’€์ด๊ฐ€ ์นด์นด์˜ค ๊ณต์‹ ๋ธ”๋กœ๊ทธ์— ์˜ฌ๋ผ์˜ค๊ฒŒ ๋˜๋ฉด์„œ ํ’€์ด๋ฅผ ํ•ด๋ณด๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ์ธํ„ด์‹ญ ๋ฌธ์ œ๋‚˜ ์ด๋Ÿฐ ๋ฌธ์ œ๋“ค๋„ ๋งŽ์ด ๋ดค์—ˆ๋Š”๋ฐ, ์‹ ์ž… ๋ฌธ์ œ๋ฅผ ํ’€์ดํ•œ ๊ฒƒ์€ ๊ฑฐ์˜ ์—†์—ˆ๋Š”๋ฐ์š”. ๋จผ์ € ์งค๋ง‰ํ•˜๊ฒŒ ์š”์ ์„ ๋ง์”€๋“œ๋ฆฌ์ž๋ฉด ์ธํ„ด์‹ญ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ์™€ ์‹ ์ž… ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ์˜ ๋ฌธ์ œ ๋‚œ์ด๋„๊ฐ€ ์กฐ๊ธˆ ์ฐจ์ด๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. DFS๋‚˜ BFS ๋ฌธ์ œ๋“ค์ด ๊ฐ€๋” ํ•œ ๋ฌธ์ œ ์ •๋„ ๋‚˜์˜ค๋Š” ์ธํ„ด์‹ญ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ์— ๋น„ํ•ด ์‹ ์ž… ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ์—์„œ๋Š” ๋ฐฑํŠธ๋ž˜ํ‚น์ด๋‚˜ ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๊ฐ™์€ Computer Science์˜ ๊ธฐ๋ณธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„ ๋ฌธ์ œ๋„ ๊ฐ™์ด ์žˆ์–ด์„œ ์ด๋Ÿฌํ•œ ๋ถ€๋ถ„๋„ ์กฐ๊ธˆ ์ค€๋น„๋ฅผ ํ•ด๋‘๋Š” ๊ฒŒ ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค๋ผ๋Š” ์ƒ๊ฐ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ๋ฌธ์ œ ํ’€์ด๋ฅผ ์‹œ์ž‘ํ•ด๋ณด๋„๋ก ํ•˜์ฃ . Question 01. ์•„์ด๋”” ์ถ”์ฒœ ๋ฌธ์ œ ์›๋ฌธ..

2021. 1. 31. 00:11

[FastAPI] 5. pyyaml์„ ์ด์šฉํ•œ FastAPI ํ™˜๊ฒฝ ๋‚˜๋ˆ„๊ธฐ

FastAPI๋กœ ๊ธฐ๋ณธ์ ์ธ API์™€ ๋ฌธ์„œ๋ฅผ ๋งŒ๋“œ๋Š” ์ž‘์—… ๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์—ฐ๋™ํ•˜๋Š” ๊ฒƒ๊นŒ์ง€ ํ•ด๋ดค๋‹ค๋ฉด ์ด์ œ๋Š” ๋ณธ๊ฒฉ์ ์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด ํ™˜๊ฒฝ์„ ๋‚˜๋ˆ„์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํ™˜๊ฒฝ์ด๋ผ๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ผ๊นŒ์š”? ๊ฐœ๋ฐœ ํ™˜๊ฒฝ? ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์ด๋ผ๋ฉด ์šฐ๋ฆฌ๋Š” PyCharm์„ ์‚ฌ์šฉํ•˜๊ณ  Python์„ ์„ค์น˜ํ–ˆ๊ณ  ์ด๋ฏธ ๋‹ค ์ž‘์—…ํ•œ ๊ฒƒ์ด ์•„๋‹Œ๊ฐ€์š”? 2021/01/16 - [Programming/Python] - [FastAPI] 4. SQLAlchemy + Alembic ์กฐํ•ฉ์„ ์ด์šฉํ•œ Database Migration ๊ฐ€์ด๋“œ [FastAPI] 4. SQLAlchemy + Alembic ์กฐํ•ฉ์„ ์ด์šฉํ•œ Database Migration ๊ฐ€์ด๋“œ ์›น ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ๋ฐฐํฌํ•œ ๋’ค์— ๋ฐ˜๋“œ์‹œ ํ•œ ๋ฒˆ ์ฏค ๋”ฐ๋ฅด๋Š” ์—…๋ฐ์ดํŠธ ์‚ฌํ•ญ์ด ๋ฐ”๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งˆ์ด..

2021. 1. 23. 11:13

[RxJava] 2. Reactive ๊ธฐ๋ณธ ์—ฐ์‚ฐ์ž(Operator) - map, filter, reduce

Reactive Programming์—์„œ ๊ฝƒ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š” Reactive Operator์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด Java 8์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋ฉด, ์ด๋Ÿฌํ•œ Reactive ์—ฐ์‚ฐ์ž๊ฐ€ ๋งค์šฐ ์ต์ˆ™ํ•˜์‹ค ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. RxJava์—์„œ๋Š” Reactive Programming์— ๋งž์ถฐ, ์ด๋Ÿฌํ•œ Reactive Operator๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ์•„์…”์•ผํ•  ๊ฒƒ์€ ์ด๋Ÿฐ Reactive ์—ฐ์‚ฐ์ž๊ฐ€ ๋‹จ์—ฐ RxJava, Java 8์—์„œ์™€ ๊ฐ™์ด "Java"์—์„œ๋งŒ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. Python์—์„œ๋„ Javascript์—์„œ๋„ Reactive Programming๋งŒ ์ง€์›ํ•œ๋‹ค๋ฉด ์ด๋Ÿฌํ•œ ์—ฐ์‚ฐ์ž๋Š” ์–ด๋””์„œ๋“  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” RxJava์—์„œ Reative Operator๊ฐ€ ์–ด๋–ค์‹์œผ..

2021. 1. 16. 13:55

[FastAPI] 4. SQLAlchemy + Alembic ์กฐํ•ฉ์„ ์ด์šฉํ•œ Database Migration ๊ฐ€์ด๋“œ

์›น ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ๋ฐฐํฌํ•œ ๋’ค์— ๋ฐ˜๋“œ์‹œ ํ•œ ๋ฒˆ ์ฏค ๋”ฐ๋ฅด๋Š” ์—…๋ฐ์ดํŠธ ์‚ฌํ•ญ์ด ๋ฐ”๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๋ณดํ†ต ์•„๋ž˜์˜ 3๊ฐ€์ง€๊ฐ€ ๋Œ€ํ‘œ์ ์ž…๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค์˜ ์ด์ „ ํด๋ผ์šฐ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค, ํ˜น์€ ๋‹ค๋ฅธ ๋ฆฌ์ „์œผ๋กœ์˜ ์ด์ „ ํŠน์ • Entity์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์š”์ฒญ ์šฐ๋ฆฌ ๋ถ€์„œ ํ˜น์€ ์šฐ๋ฆฌ ์„œ๋น„์Šค์—๋Š” ์ด ๊ธฐ๋Šฅ์„ ๋„ฃ๊ธฐ ์œ„ํ•ด ์ด ์นผ๋Ÿผ์ด ๋” ์ถ”๊ฐ€๋กœ ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™์•„์š”. ์ผ๋ถ€ ์˜์†๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํŠน์ • ๋ฐ์ดํ„ฐ๋กœ ๋ณ€๊ฒฝ ์ด์ œ๋Š” ์ด ๋ช…์นญ์„ ์ด ๋ช…์นญ์œผ๋กœ ๋ฐ”๊ฟ€๊ฑฐ์—์š”. ๋ชจ๋“  ์‚ฌํ•ญ์— ์ ์šฉ๋˜์—ˆ์œผ๋ฉด ์ข‹๊ฒ ์–ด์š”. ๊ฐ„๋‹จํ•˜๊ฒŒ ์ƒ๊ฐํ•œ๋‹ค๋ฉด ์ด๋Ÿฌํ•œ ์ž‘์—…์„ ์ˆ˜๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค๋ฅผ ํ•˜๋‚˜ ํ…Œ์ŠคํŠธ์šฉ์œผ๋กœ ๋งŒ๋“ค๊ณ , SQL ์ฟผ๋ฆฌ๋ฅผ ์งœ๋ณธ ๋‹ค์Œ ์ฟผ๋ฆฌ ํ…Œ์ŠคํŠธํ•˜๊ณ , ํ™•์‹คํ•œ ์ฟผ๋ฆฌ๊ฐ€ ์ž‘์„ฑ๋˜์—ˆ๋‹ค๋ฉด ์ด๋ฅผ..

2021. 1. 10. 17:13

[RxJava] 1. RxJava์˜ ๊ธฐ๋ณธ - Observable

์ง€๋‚œ ํฌ์ŠคํŠธ์—์„œ Observable์— ๋Œ€ํ•ด ๊ฐ„๋‹จํžˆ ๋‹ค๋ค„๋ดค๊ณ , ์ด์— ๋”ฐ๋ฅธ ๋ฆฌ์•กํŠธ ํ•จ์ˆ˜์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋ฉฐ ๊ฐ ์ฐจ์ด๋ฅผ ์•Œ์•„๋ดค์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” Observable์„ ์ข€ ๋” ์‹ฌ์˜คํ•˜๊ฒŒ ๋‹ค๋ค„๋ณด๊ณ , ์ด์— ์‘ํ•˜๋Š” Single, Maybe ๋“ฑ ๋‹ค์–‘ํ•œ ํด๋ž˜์Šค ๋“ฑ์„ ๊ณต๋ถ€ํ•˜๋ฉด์„œ RxJava์™€ ์ข€ ๋” ์นœ์ˆ™ํ•ด์ง€๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. Observer Design Pattern RxJava์˜ ๊ทผ๊ฐ„์ด ๋˜๋Š” Observable ํด๋ž˜์Šค๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๋””์ž์ธ ํŒจํ„ด์ธ Observer Pattern์„ ๊ทผ๊ฐ„์œผ๋กœ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ต์„œ๋ฒ„ ํŒจํ„ด - ์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „ ์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „. ์˜ต์„œ๋ฒ„ ํŒจํ„ด(observer pattern)์€ ๊ฐ์ฒด์˜ ์ƒํƒœ ๋ณ€ํ™”๋ฅผ ๊ด€์ฐฐํ•˜๋Š” ๊ด€์ฐฐ์ž๋“ค, ์ฆ‰ ์˜ต์ €๋ฒ„๋“ค์˜ ๋ชฉ๋ก์„ ๊ฐ์ฒด์— ๋“ฑ๋กํ•˜์—ฌ ..

2021. 1. 9. 16:38

[RxJava] RxJava๋กœ ์‹œ์ž‘ํ•˜๋Š” Java Reactive ํ”„๋กœ๊ทธ๋ž˜๋ฐ

Java์—์„œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€์˜ ์ผ์„ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์—๋Š” ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. Java์—์„œ๋„ C++์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ select ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•˜๊ณ , Thread ๊ฐ์ฒด๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ์ด์šฉํ•ด์„œ ๋™์‹œ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋Š” ๊ฒƒ์€ ๊ทธ๋ฆฌ ํฐ ๊ณ ๋ฏผ์ด ๋  ๋ฌธ์ œ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Java๋กœ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ Python์ด๋‚˜ Go์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ๋น„ํ•ด ์‚ฌ์šฉํ•˜๊ธฐ๊ฐ€ ๋ฌด์ฒ™ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๊ทธ๋ƒฅ ๋‹จ์ˆœํ•˜๊ฒŒ Thread ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋งŒ ๊ณ ๋ คํ•œ๋‹ค๋ฉด ๊ทธ๋ฆฌ ํฐ ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋œ ์ž์›์„ ๋™์‹œ์— ์‚ฌ์šฉํ•˜๋Š” ์ด์Šˆ ๋“ฑ ์ฒ˜๋ฆฌํ•ด์ค˜์•ผ ํ•  ์ผ๋“ค์ด ๊ต‰์žฅํžˆ ๋งŽ์„ ๋ฟ๋”๋Ÿฌ ์ฝ”๋“œ๋ฅผ ๊ฐ„๋žตํ•˜๊ฒŒ ์ง ๋‹คํ•˜๋”๋ผ๋„ ๋‚ด๊ฐ€ ๋งŒ๋“  ๋ฉ”์†Œ๋“œ๋‚˜ ํ•จ์ˆ˜๊ฐ€ ์Šค๋ ˆ๋“œ ์œ„์—์„œ ๋™์ž‘ํ•˜๋Š”์ง€ ๊ทธ๋ ‡..

2020. 12. 31. 15:41

[FastAPI] 3. SQLAlchemy + Graphene ์กฐํ•ฉ์œผ๋กœ GraphQL ์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ

์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” GraphQL์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋ฅผ ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. What is GraphQL ? GraphQL์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋Š” ๊ทธ๋ฆฌ ๊ธธ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๊ธฐ์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋‹ค๋ค„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. GraphQL์€ Facebook์—์„œ ๊ฐœ๋ฐœํ•œ ๋ฐ์ดํ„ฐ ํ‘œํ˜„ ์–ธ์–ด๋กœ ์—ฌ๊ธฐ์„œ QL์ด Query Language์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด REST API๋ฅผ ์‚ฌ์šฉํ•˜์˜€๊ณ , REST API๋Š” ๋ฉ”์†Œ๋“œ์™€ ์š”์ฒญ ๋ฐ์ดํ„ฐ ํ˜น์€ ์‘๋‹ต ๋ฐ์ดํ„ฐ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ ์žฌํ•˜๋Š” ๋“ฑ์„ ์ˆ˜ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ GraphQL์€ ๋ฉ”์†Œ๋“œ ์—†์ด ์˜ค์ง Query Language๋งŒ์„ ์ด์šฉํ•˜์—ฌ ์›ํ•˜๋Š” ๋ชจ๋ธ์„ ์ ์žฌํ•˜๊ณ , ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์›ํ•˜๋Š” ํ•ญ๋ชฉ์„ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ง์ ‘ ๋ช…์‹œํ•จ์œผ๋กœ์จ ์„œ๋ฒ„์—์„œ ์ œ๊ณตํ•ด์ฃผ๋Š”..

2020. 12. 27. 12:14

[FastAPI] 2. SQLAlchemy๋ฅผ ์ด์šฉํ•œ ๊ฐ„๋‹จํ•œ CRUD API ๋งŒ๋“ค๊ธฐ

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ORM์— ๋Œ€ํ•œ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ORM์€ Object Relation Mapping์˜ ์•ฝ์ž๋กœ ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค Entity์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋ณดํ†ต ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ ˆ๋ฒจ์—์„œ DB์— ์ ‘๊ทผํ•  ๋•Œ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ด์šฉํ•˜์—ฌ SQL Query๋ฅผ ๋˜์ ธ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ SQL Query๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด์—๊ฒŒ ์žˆ์–ด ๋Ÿฌ๋‹ ์ปค๋ธŒ๋ฅผ ์ฆ๊ฐ€ ์‹œํ‚ค๊ณ , ์†Œํ”„ํŠธ์›จ์–ด ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์„ ์ €ํ•˜์‹œํ‚ค๋Š” ์›์ธ์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ORM์„ ์ด์šฉํ•˜๋ฉด ๊ธฐ๋ณธ์ ์ธ CRUD๋ฅผ ํฌํ•จํ•œ ๊ฐ„๋‹จํ•œ ์ฟผ๋ฆฌ์— ๋Œ€ํ•ด SQL Query๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ฝ”๋“œ์— ์งˆ์˜ํ•˜์ง€ ์•Š์•„๋„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ฝ”๋“œ ์•ˆ์—์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Python ์–ธ์–ด์—์„œ์˜ ๋Œ€ํ‘œ์ ์ธ ORM ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ SQLAlch..

2020. 12. 25. 16:42

[FastAPI] 1. GET, POST, PUT, DELETE ๋“ฑ ๊ธฐ๋ณธ API ๋งŒ๋“ค๊ณ  ๋ฌธ์„œ ์ž๋™ํ™” ํ•ด๋ณด๊ธฐ

์ง€๋‚œ ๊ธ€์— ์ด์–ด์„œ FastAPI๋ฅผ ์ด์šฉํ•ด์„œ ๊ธฐ๋ณธ์ ์ธ REST API ๊ฐœ๋ฐœ ์ด์•ผ๊ธฐ ๋‘ ๋ฒˆ์งธ๋ฅผ ์ด์–ด๊ฐ€๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ REST API๋ฅผ ๊ฐœ๋ฐœํ•˜๋ฉด ์ฃผ์š” ๋ฉ”์†Œ๋“œ ์ข…๋ฅ˜ 5๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ์š”. ๋ฐ”๋กœ GET, POST, PUT, DELETE, PATCH ์ด๋ ‡๊ฒŒ 5๊ฐ€์ง€ ์ž…๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ด ์™ธ์—๋„ OPTIONS๊ฐ€ ์žˆ์ง€๋งŒ ์ด ๊ธ€์—์„œ๋Š” ๋‹ค๋ฃจ์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ API ๋งŒ๋“ค๊ธฐ (GET) REST API์˜ ๊ธฐ๋ณธ API๋Š” ๋จผ์ € GET ๋ฉ”์†Œ๋“œ๋ถ€ํ„ฐ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. GET ๋ฉ”์†Œ๋“œ๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์“ฐ๋Š” READ API ์ž…๋‹ˆ๋‹ค. FastAPI์—์„œ๋Š” ์•„๋ž˜์˜ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. from fastapi import FastAPI app = FastAPI() @app.route('/health') async ..

2020. 12. 25. 15:16

[Python] FastAPI ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•œ ๋น„๋™๊ธฐ REST API ๊ฐœ๋ฐœ

Python ์–ธ์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ REST API ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตญ๋‚ด ํ˜น์€ ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์˜ ์‚ฌ๋ž‘์„ ๋ฐ›๊ณ  ์žˆ๋Š” Django, ๊ทธ๋ฆฌ๊ณ  ๊ฐ€๋ฒผ์šด ํ”„๋ ˆ์ž„์›Œํฌ๋กœ์จ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” Flask ๋“ฑ ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ์š”. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” Jetbrains์˜ IDE ๋„๊ตฌ์ธ PyCharm๊ณผ FastAPI ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•ด์„œ REST API ์„œ๋ฒ„๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. What is FastAPI? Python์—์„œ๋Š” ์›น ์„œ๋ฒ„์™€ ์—ฐ๋™ํ•˜๊ธฐ ์œ„ํ•ด WSGI๋ผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ WSGI๋Š” ๋™๊ธฐ ๋ฐฉ์‹์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฏธ๋ฆฌ ๋“ค์–ด์˜จ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ๋•Œ๊นŒ์ง€ ๋‹ค์Œ ์‚ฌ๋žŒ์ด ๊ณ„์† ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋Š” ๋‹จ์ ์„ ๊ฐ์ˆ˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. FastAPI๋Š” Starlette์ด๋ผ๋Š” ๋น„๋™๊ธฐ ํ”„..

2020. 12. 20. 11:14

[Python] PyCharm์—์„œ Poetry๋ฅผ ์ด์šฉํ•œ ๋””ํŽœ๋˜์‹œ ๊ด€๋ฆฌ

์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์‹œ ๋””ํŽœ๋˜์‹œ์˜ ๊ด€๋ฆฌ๋Š” ์ด์ œ ์„ ํƒ์ด ์•„๋‹Œ ํ•„์ˆ˜๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌํƒœ๊นŒ์ง€ Python ์–ธ์–ด๋ฅผ ์ด์šฉํ•ด ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์„ ํ•˜์˜€์„ ๋•Œ๋Š” requirement๋ฅผ ์ด์šฉํ•˜์—ฌ ํ™˜๊ฒฝ๋ณ„๋กœ ๋””ํŽœ๋˜์‹œ ๊ด€๋ฆฌ๋ฅผ ํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ requirements๋Š” ํ•˜๋‚˜์˜ ๋””ํŽœ๋˜์‹œ๋ฅผ ์„ค์น˜ํ•  ๋•Œ ํ•˜์œ„ ์š”์†Œ๊นŒ์ง€ ์„ค์น˜ํ•ด์ฃผ์ง€ ์•Š์•„ ์ข…์†๋˜๋Š” ๋””ํŽœ๋˜์‹œ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์„ค์น˜ํ•ด์•ผ ํ•˜๋Š” ๋ถˆํŽธํ•จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. Poetry Poetry - Python dependency management and packaging made easy. Intuitive CLI Poetry's commands are intuitive and easy to use, with sensible defaults while still being configurable. Soon ex..

2020. 12. 6. 18:42

[Python] REST API ๊ฐœ๋ฐœ๋กœ ์•Œ์•„๋ณด๋Š” WSGI, ASGI

REST API ์„œ๋ฒ„๋ฅผ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ด์ œ ํŠน์ • ์–ธ์–ด๋ฅผ ๋ฐฐ์›Œ์•ผ ํ•  ํ•„์š” ์—†์ด ์›ํ•˜๋Š” ์–ธ์–ด๋กœ ์ž์œ ๋กญ๊ฒŒ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋Š” ์„ธ์ƒ์ด ์˜ค๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Python ์–ธ์–ด ๋˜ํ•œ ๋‹ค์–‘ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ œ๊ณตํ•จ์œผ๋กœ์จ REST API ์„œ๋ฒ„๋ฅผ ์‰ฝ๊ฒŒ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ์š”. ์ด๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋‹ค์–‘ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋งŽ์ด ์กด์žฌํ•˜์ง€๋งŒ ๊ทธ ์ค‘ ๊ฐ€์žฅ ๋ณดํŽธํ™” ๋˜์–ด ์•Œ๋ ค์ง„ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์•„๋ž˜์˜ ๋‘ ๊ฐ€์ง€ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Django Flask Django๋Š” MTV ํŒจํ„ด์„ ์ œ๊ณตํ•˜์—ฌ API ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ…œํ”Œ๋ฆฟ์„ ์ด์šฉํ•˜์—ฌ ์ •์  HTML ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด ๋ทฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ์ œ๊ณตํ•˜์—ฌ ๋น ๋ฅธ ๊ฐœ๋ฐœ์„ ํ†ตํ•ด ๋†’์€ ์ƒ์‚ฐ์„ฑ์„ ์ž๋ž‘ํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด Flask๋Š” ์˜ค์ง API๋งŒ์„ ์‰ฝ๊ฒŒ ์ œ๊ณตํ•˜์—ฌ ๋น ๋ฅธ API ์„œ๋ฒ„๋งŒ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ํŠน์ง•์ด์ฃ . Sprin..

2020. 11. 21. 18:42

[Kubernetes] 4. Minikube๋กœ ์‹œ์ž‘ํ•˜๋Š” kubernetes

Kubernetes ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด ๋‘ ๊ฐœ์˜ ๋…ธ๋“œ๋ฅผ ์ค€๋น„ํ•˜๊ณ  ์ด๋ฅผ ๋งˆ์Šคํ„ฐ์™€ ๊ฐ ๋…ธ๋“œ๋กœ ๋‚˜๋ˆ„์–ด์•ผ ํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ๊ฐ–์ถฐ์•ผ ํ•˜์ง€๋งŒ ์ด๋Š” ์‹ค์ œ ์„œ๋น„์Šคํ•˜๊ธฐ ์œ„ํ•œ ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ๊ถŒ์žฅ ์‚ฌํ•ญ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์‹ค ์„œ๋น„์Šคํ•ด๋ณด๊ธฐ ์ „์— ์ง์ ‘ ์‚ฌ์šฉํ•ด๋ณด๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์žˆ์Šต๋‹ˆ๋‹ค. AWS์˜ EKS, GCP์˜ GKE ๋“ฑ ํด๋ผ์šฐ๋“œ ๋ฒค๋”๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• ์ง์ ‘ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์ง€๋งŒ ์‹ค์ œ๋กœ ์ฒดํ—˜ํ•ด๋ณด๊ธฐ ์œ„ํ•ด ํด๋ผ์šฐ๋“œ ๋ฒค๋”์˜ ๊ฐ’๋น„์‹ผ ๋น„์šฉ์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋งˆ์Šคํ„ฐ, ๋…ธ๋“œ์˜ ํ•˜๋“œ์›จ์–ด ์žฅ๋น„๋ฅผ ์ง์ ‘ ๊ตฌ์ž…ํ•˜๋Š” ๊ฒƒ์€ ๋น„์šฉ์ ์œผ๋กœ ๋ถ€๋‹ด์ด ๋  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Minikube๋Š” ๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ ์ตœ์ƒ์˜ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœ์ ํŠธ๋กœ ์šฐ๋ฆฌ๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฒดํ—˜ํ•ด๋ณด๊ธฐ ์œ„ํ•ด ์ผ๋ จ์˜ ๋งˆ์Šคํ„ฐ, ์Šฌ๋ ˆ์ด๋ธŒ ๋…ธ๋“œ๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ ..

2020. 11. 18. 21:49

[Kubernetes] 3. Controller๋กœ ๋” ๋‚˜์•„๊ฐ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ

์šฐ๋ฆฌ๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ 4๊ฐœ ๊ฐ์ฒด๋“ค์˜ ์—ญํ• ๊ณผ ๊ทธ๋“ค์˜ ๋ชจ์ž„์œผ๋กœ ํ•œ ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•˜๊ณ  ์šด์˜ํ•˜๋Š” ๋ฐ ์žˆ์–ด ๊ธฐ๋ณธ์ ์ธ ์š”์†Œ๋ผ๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์„œ๋น„์Šค์˜ ํŠธ๋ž˜ํ”ฝ์— ๋”ฐ๋ผ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ž๋™์œผ๋กœ ์ฆ๊ฐ€์‹œ์ผœ์ฃผ๋Š” ์Šค์ผ€์ผ ์—…/์•„์›ƒ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ•„์š”ํ•œ batch ์ž‘์—… ๋“ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์ •, ๋ฐฐํฌ์— ๋”์šฑ ๋น›์„ ๋ฐœํœ˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Controller ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์ด์ „์— ์„ค๋ช…ํ•œ ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐฐํฌํ•œ ์„œ๋น„์Šค๋“ค์— ๋” ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€์‹œ์ผœ์ฃผ๋Š” ์กด์žฌ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์šฐ๋ฆฌ์˜ ์„œ๋น„์Šค๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋งŽ์•„ ์š”์ฒญ ์ˆ˜๊ฐ€ ๋งŽ์„ ๊ฒƒ์ด๋ฏ€๋กœ Namespace์— ๋ถ€์—ฌ๋œ ๋ฆฌ์†Œ์Šค ํ—ˆ์šฉ๋Ÿ‰์— ํ•œํ•˜์—ฌ ํŠธ๋ž˜ํ”ฝ๋Ÿ‰์ด ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑ/์‚ญ์ œํ•˜๋Š” ์˜คํ†  ์Šค์ผ€์ผ๋ง ๊ธฐ๋Šฅ, ๋‚ด ์„œ๋น„์Šค ์•ž๋‹จ์— ๋กœ๊ทธ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ฑฐ๋‚˜ ๋ฐ๋ชฌ์„..

2020. 11. 14. 17:44

[Kubernetes] 2. Kubernetes ๊ธฐ๋ณธ ๊ตฌ์„ฑ๊ณผ ๊ฐ์ฒด(object)

์ง€๋‚œ ํฌ์ŠคํŠธ์—์„œ Kubernetes์™€ Container Deployment์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋ฉฐ ์ปจํ…Œ์ด๋„ˆ๋กœ ์„œ๋น„์Šค ๋ฐฐํฌํ•˜๊ธฐ๊นŒ์ง€์˜ ๊ณผ์ •๊ณผ Docker Swarm ๋“ฑ์˜ ๋‹ค๋ฅธ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ํˆด๊ณผ ์–ด๋–ค ์ ์ด ๋‹ค๋ฅธ์ง€ ์‚ดํŽด๋ดค์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ ์„ ํ™•์ธํ•˜๊ณ , ์šฐ๋ฆฌ๊ฐ€ ์šด์˜ํ•˜๋Š” ์„œ๋น„์Šค๊ฐ€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์— ์ ํ•ฉํ•œ์ง€, ์ฐจํ›„ ๋ฏธ๋ž˜ ์šด์˜ ๋Œ€์ฑ…์œผ๋กœ ์‚ฌ์šฉํ• ๋งŒํ•œ์ง€๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ๊ณ ๋ ค ๋Œ€์ƒ์œผ๋กœ ์„ ์ •ํ•˜์…จ๋‹ค๋ฉด ์ด ๊ธ€์„ ๊ณ„์† ์ฝ์œผ๋ฉฐ Kubernetes๋ฅผ ์ง์ ‘ ๊ณต๋ถ€ํ•ด๋ณด๊ณ , ์‚ฌ์šฉํ•ด๋ณด์‹œ๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ ๊ฐ™๋„ค์š”. Kubernetes์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ ์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ Kubernetes๊ฐ€ ์–ด๋–ป๊ฒŒ ์ด๋ฃจ์–ด์กŒ๋Š”์ง€ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด์˜ Docker์—์„œ๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ด€๋ฆฌํ•  ๋•Œ ์ค‘์•™์˜ Docker Engine์ด ์ž๋ฆฌ์žก๊ณ  ์žˆ์–ด, ์ด ์—”์ง„์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฏธ์ง€๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , ์ƒ์„ฑํ•˜๋Š”..