| »óǰ ¾È³» ¹× ȯºÒ, ±³È¯, ¹è¼Û¹®ÀÇ | |
| - °¡°Ô ÀüȹøÈ£ : | 1544-1900 |
| - Àüȹ®ÀÇ ½Ã°£ : |
¿ÀÀü 9½ÃºÎÅÍ ¿ÀÈÄ 6½Ã±îÁö (¸ÅÁÖ ¿ù¿äÀÏ, È¿äÀÏ, ¼ö¿äÀÏ, ¸ñ¿äÀÏ, ±Ý¿äÀÏ, °øÈÞÀÏ Á¦¿Ü) |
| - °¡°Ô À̸ÞÀÏ : | ink@kyobobook.co.kr |
| - ÀÌ¿ë Åùèȸ»ç : | CJ´ëÇÑÅë¿î |
|
ÆÇ¸Å°¡°ÔÁ¤º¸ |
|
| - »ç¾÷ÀÚ¸í : | (ÁÖ)±³º¸¹®°í |
| - »ç¾÷ÀÚµî·Ï¹øÈ£ : | 102-81-11670 |
| - Åë½ÅÆÇ¸Å¾÷½Å°í : | 01-0653 |
|
- Çö±Ý¿µ¼öÁõ : ¹ß±Þ°¡´É |
|
|
ÀüÈÁÖ¹® ¹× °áÁ¦¹®ÀÇ |
|
| - ²ÉÇÇ´Â ¾ÆÄ§¸¶À» : | 1644-8422 |
|
°¡°Ô¿Í Á÷°Å·¡¸¦ ÇÏ½Ã¸é ²É¼ÛÀÌ Àû¸³ ¹× °¢Á¾ ÇýÅÿ¡¼ Á¦¿ÜµÇ°í, ¸¸ÀÏÀÇ ¹®Á¦°¡ ¹ß»ýÇÏ´Â °æ¿ì¿¡µµ ²É¸¶ÀÇ µµ¿òÀ» ¹ÞÀ¸½Ç ¼ö ¾ø½À´Ï´Ù. °¡°ÔÀÇ ºÎ´çÇÑ ¿ä±¸, ºÒ°øÁ¤ ÇàÀ§ µî¿¡ ´ëÇØ¼µµ ²É¸¶·Î Á÷Á¢ ÀüÈÁÖ¼¼¿ä. |
|
| »ó¼¼Á¤º¸ | ±¸¸ÅÈıâ (0) | »óǰQ&A (0) | ¹è¼Û/±³È¯/ȯºÒ ¾È³» |
Ã¥¼Ò°³±âȹ¿¡¼ Ãâ½Ã±îÁö! FastAPI·Î ½ÇÀü ÇÁ·ÎÁ§Æ® Àü °úÁ¤À» °æÇèÇÑ´Ù!
½Ç¹« È帧 ±×´ë·Î µû¶ó°¡¸ç ¡®¾à¼Ó Àâ±â À¥ ¼ºñ½º¡¯ ¸¸µé¾î º¸ÀÚ.
¼ºñ½º °³¹ßÀº ´Ü¼øÇÑ ÄÚµå ÀÛ¼ºÀÌ ¾Æ´Ï¶ó, ±âȹºÎÅÍ ¹èÆ÷±îÁöÀÇ Àü °úÁ¤À» ÀÌÇØÇÏ°í °æÇèÇÏ´Â ÀÏÀÌ´Ù. ÀÌ Ã¥Àº ¡®¾à¼Ó Àâ±â À¥ ¼ºñ½º¡¯¸¦ Á÷Á¢ ¸¸µé¸ç FastAPI¸¦ Ȱ¿ëÇÑ ½ÇÀü °³¹ß È帧À» ÇϳªÇϳª µû¶ó°£´Ù. ¼ºñ½ºÀÇ ¿ä±¸»çÇ× Á¤ÀǺÎÅÍ ½ÃÀÛÇØ, Å×½ºÆ® ÁÖµµ °³¹ß(TDD) ¹æ½ÄÀ¸·Î ¹é¿£µå¸¦ ±¸ÇöÇϰí, ¹Ì¸® ±¸ÇöÇØµÐ ÇÁ·±Æ®¿£µå¿ÍÀÇ ¿¬µ¿, ±¸±Û ͏°´õ °°Àº ¿ÜºÎ ¼ºñ½º ÅëÇÕµµ ´Ù·é´Ù. °³¹ßÇÑ ¼ºñ½º´Â AWS¿Í ±êÇãºê ¾×¼ÇÀ» ÀÌ¿ëÇØ ½ÇÁ¦·Î ¹èÆ÷Çϰí, µµ¸ÞÀÎ ¼³Á¤°ú ¿î¿µ±îÁö °æÇèÇÒ ¼ö ÀÖ´Ù. ´Ü¼øÈ÷ FastAPI¸¦ ÇнÀÇÏ´Â °Í¿¡ ±×Ä¡Áö ¾Ê°í, ÁøÂ¥ ¼ºñ½º¸¦ ¸¸µé¸ç ¹è¿ì´Â ½ÇÀüÇü °³¹ß °¡À̵å·Î, Ãʺ¸ÀÚ¸¦ À§ÇÑ ¼³¸í»Ó¸¸ ¾Æ´Ï¶ó ½Ç¹« °æÇèÀÚ¿¡°Ô ÇÊ¿äÇÑ ¹èÆ÷/¿î¿µ±îÁö Ãæ½ÇÈ÷ ´ã¾Ò´Ù.
»ó¼¼À̹ÌÁö![]() ¸ñÂ÷1Àå ¿ì¸®°¡ ¸¸µé ÇÁ·ÎÁ§Æ®¿Í µµ±¸ ÀÌÇØ
1.1?ÇÁ·ÎÁ§Æ®¸¦ ¸¸µé°í ¿î¿µÇØ¾ß ÇÏ´Â ÀÌÀ¯?
__1.1.1?Æ÷Æ®Æú¸®¿À ¸ñÀûÀ¸·Î ÇÁ·ÎÁ§Æ® ¸¸µé±â?
__1.1.2?ÇнÀ ¸ñÀûÀ¸·Î ÇÁ·ÎÁ§Æ® ¸¸µé±â?
__1.1.3?ÇÁ·ÎÁ§Æ® ¸ñÇ¥¸¦ Ãâ½Ã ÈÄ ¿î¿µÇÏ´Â °Í¿¡ µÎÀÚ!?
1.2?FastAPI¸¦ »ç¿ëÇÏ´Â ÀÌÀ¯
__1.2.1?FastAPI¶õ?
__1.2.2?FastAPI Ư¡
1.3?¿ì¸®°¡ ¸¸µé ÇÁ·ÎÁ§Æ®ÀÇ ¸ñÇ¥¿Í °èȹ?
__1.3.1?¸ñÇ¥?
__1.3.2?ÇÁ·ÎÁ§Æ® °èȹ?
1.4?¾à¼Ó Àâ±â ÇÁ·ÎÁ§Æ®¿¡ »ç¿ëÇÏ´Â µµ±¸?
__1.4.1?°³¹ß µµ±¸?
__1.4.2?¿î¿µ µµ±¸
2Àå ¼Ð ±âº» ±â´É ÀÍÈ÷±â
2.1?¼ÐÀ̶õ?
__2.1.1?¼Ð ÀÎÅÍÆäÀ̽ºÀÇ Á¾·ù
2.2?°æ·Î¿Í µð·ºÅ͸®?
__2.2.1?°æ·Î
__2.2.2?µð·ºÅ͸® ?
2.3?ÆÄÀÏ ´Ù·ç±â
3Àå ½Ç½À ȯ°æ Áغñ
3.1?ºñÁÖ¾ó ½ºÆ©µð¿À ÄÚµå ¼³Ä¡?
__3.1.1?ºñÁÖ¾ó ½ºÆ©µð¿À ÄÚµå ³»·Á¹Þ±â?
__3.1.2?¸ÆOS¿¡ ¼³Ä¡Çϱâ?
__3.1.3?À©µµ¿ì¿¡ ¼³Ä¡Çϱâ?
3.2?ºñÁÖ¾ó ½ºÆ©µð¿À ÄÚµå È¸é ±¸¼º?
3.3?ºñÁÖ¾ó ½ºÆ©µð¿À ÄÚµå ±âº» »ç¿ë¹ý?
__3.3.1?ÀÛ¾÷ µð·ºÅ͸® ÁöÁ¤Çϱâ?
__3.3.2?¸í·É¾î ÆÈ·¹Æ®?
__3.3.3?ÆÄÀÏ Å½»ö°ú »óÅ ǥ½Ã?
3.4?ºñÁÖ¾ó ½ºÆ©µð¿À ÄÚµå È®Àå ±â´É?
__3.4.1?È®Àå ±â´ÉÀ̶õ?
__3.4.2?¿Ü¾ç ¹Ù²Ù±â?
__3.4.3?ÆÄÀ̽ã È®Àå ±â´É ¼³Ä¡Çϱâ?
__3.4.4?¼Ð »ç¿ëÇØ º¸±â
3.5?ÆÄÀ̽㠰¡»ó ȯ°æ?
__3.5.1?ÆÄÀ̽㠰¡»ó ȯ°æÀ̶õ?
__3.5.2?°¡»ó ȯ°æ ´Ù·ç±â?
3.6?FastAPI ¼³Ä¡ÇÏ°í ¸Àº¸±â
__3.6.1?FastAPI ¼³Ä¡Çϱâ?
__3.6.2?ÆÐŰÁö °ü¸®ÀÚ, Poetry »ç¿ëÇϱâ?
__3.6.3?À¥ ¾ÖÇø®ÄÉÀÌ¼Ç ¼¹ö: Starlette, Uvicorn?
__3.6.4?Hello World
4Àå ¾à¼Ó Àâ±â ¼ºñ½º ±âȹ
4.1?¾à¼Ó Àâ±â ¼ºñ½º ±â´É ±âȹ?
__4.1.1?¼ºñ½º °³¿ä?
4.2?ÁÖ¿ä ±â´É?
__4.2.1?͏°´õ ±¸Çö: ¿øÇÏ´Â ÀÏÀÚ ¼±ÅÃÇϱâ?
__4.2.2?ºÎÅ· »ý¼º: ÀÏÁ¤ µî·ÏÇϱâ
__4.2.3?»ç¿ëÀÚº° ͏°´õ ±¸ºÐÇØ¼ º¸±â?
__4.2.4?±¸±Û ͏°´õ ¿¬µ¿Çϱâ?
__4.2.5? ¼Ò¼È ·Î±×ÀÎ ±¸ÇöÇϱâ?
4.3?»ç¿ëÀÚ ÀÎÅÍÆäÀ̽º ¿ä¼Ò ±âȹ?
__4.3.1?±âº» ȸé?
__4.3.2?ŸÀÓ½½·Ô ¿µ¿ª?
__4.3.3?¾à¼Ó ÀâÀ» Á¤º¸¸¦ ÀÔ·ÂÇϴ ȸé?
__4.3.4?¾à¼Ó ½Åû ¿Ï·á ȸé?
__4.3.5?¾à¼Ó ½ÅûÇÒ ÀÏÀÚ°¡ ¾ø´Â °æ¿ì?
4.4?µ¥ÀÌÅÍ ¼³°è?
__4.4.1?¸î °¡Áö °³³ä ¾Ë°í °¡±â?
__4.4.2?»ç¿ëÀÚ °³Ã¼?
__4.4.3?»ç¿ëÀÚ ¼Ò¼È °èÁ¤ °³Ã¼?
__4.4.4?»ç¿ëÀÚ Ä¶¸°´õ °³Ã¼?
__4.4.5?ŸÀÓ½½·Ô °³Ã¼?
__4.4.6?ºÎÅ· °³Ã¼?
__4.4.7?¾à¼Ó Àâ±â ¼ºñ½ºÀÇ °³Ã¼ °ü°è ´ÙÀ̾î±×·¥À¸·Î ±×·Á º¸±â
5Àå µ¥ÀÌÅÍ ¸ðµ¨¸µ
5.1?ÆÄÀ̽㿡¼ µ¥ÀÌÅͺ£À̽º¸¦ »ç¿ëÇÏ´Â ¹æ¹ý: SQLModel?
__5.1.1?SQL°ú ORM?
__5.1.2?SQLAlchemy?
__5.1.3?Pydantic?
__5.1.4?SQLModel?
5.2?¸ðµ¨¸µ?
__5.2.1?»ç¿ëÀÚ °³Ã¼: User ¸ðµ¨?
__5.2.2?»ç¿ëÀÚ ¼Ò¼È °èÁ¤ °³Ã¼: OAuthAccount ¸ðµ¨ ?
__5.2.3?»ç¿ëÀÚ Ä¶¸°´õ °³Ã¼: Calendar ¸ðµ¨ ?
__5.2.4?ŸÀÓ½½·Ô °³Ã¼: TimeSlot ¸ðµ¨?
__5.2.5?ºÎÅ· °³Ã¼: Booking ¸ðµ¨ ?
5.3?µ¥ÀÌÅͺ£À̽º ¿¬°á ¼³Á¤?
__5.3.1?SQLite¶õ?
__5.3.2?SQLAlchemy·Î µ¥ÀÌÅͺ£À̽º¿¡ ¿¬°áÇÏ´Â ¹æ¹ý?
__5.3.3?SQLAlchemy·Î ¼¼¼ÇÀ» »ý¼ºÇÏ´Â ¹æ¹ý?
__5.3.4?µ¥ÀÌÅͺ£À̽º ¿¬°á ¼³Á¤Çϱâ?
5.4?AlembicÀ» »ç¿ëÇÏ¿© µ¥ÀÌÅͺ£À̽º ¸¶À̱׷¹À̼Ç?
__5.4.1?Alembic ÁÖ¿ä °³³ä?
__5.4.2?Alembic ¼³Ä¡Çϰí ÃʱâÈÇϱâ?
__5.4.3?Alembic ¼³Á¤Çϱâ?
__5.4.4?¸¶À̱׷¹ÀÌ¼Ç ½ºÅ©¸³Æ® »ý¼ºÇϱâ?
__5.4.5?ÀÚµ¿ ¸¶À̱׷¹À̼Ç(autogenerate) ¼³Á¤ÇØ º¸±â?
__5.4.6?¸¶À̱׷¹ÀÌ¼Ç ½ºÅ©¸³Æ® ÅÛÇø´ »ç¿ëÇϱâ?
__5.4.7?¸¶À̱׷¹ÀÌ¼Ç ½ºÅ©¸³Æ® ÀÛµ¿ È®ÀÎÇϱâ: Àû¿ë ¹× µÇµ¹¸®±â?
6Àå ÄÚµå Å×½ºÆ®
6.1?Å×½ºÆÃ °³¿ä?
__6.1.1?Å×½ºÆÃÀ̶õ?
__6.1.2?Å×½ºÆÃ Á¾·ù?
__6.1.3?Å×½ºÆ® ´õºí?
__6.1.4?pytest¸¦ »ç¿ëÇÏ¿© Å×½ºÆÃÇϱâ?
6.2?´ÜÀ§ Å×½ºÆ® ½Ç½À?
__6.2.1?´ÜÀ§ Å×½ºÆ® ½Ç½À?
__6.2.2?¹®¼È Å×½ºÆ® ¾Ë¾Æº¸±â?
6.3?ÅëÇÕ Å×½ºÆ® ½Ç½À?
__6.3.1?»ç¿ëÀÚ Á¤º¸¸¦ ³»·Á¹Þ´Â API ±¸ÇöÇϱâ?
__6.3.2?Å×½ºÆ® Ŭ¶óÀÌ¾ðÆ®·Î API Å×½ºÆ®Çϱâ?
__6.3.3?µ¥ÀÌÅͺ£À̽º¿¡ »ç¿ëÀÚ »ý¼ºÇϰí Å×½ºÆ®Çϱâ?
6.4?pytestÀÇ ÇȽºÃ³ ±â´ÉÀ» »ç¿ëÇÑ Å×½ºÆÃ?
__6.4.1?Å×½ºÆ® Äڵ忡 ÇȽºÃ³ »ç¿ëÇϱâ?
__6.4.2?±¸Çö Äڵ忡µµ ¼¼¼Ç ÀÇÁ¸¼º ÁÖÀÔÇϱâ?
__6.4.3?Å×½ºÆ® Ŭ¶óÀÌ¾ðÆ®µµ ÇȽºÃ³·Î ÀÏ¿øÈÇϱâ
7Àå ȸ¿ø°¡ÀÔ ¹× »ç¿ëÀÚ ÀÎÁõ ±¸Çö
7.1?ȸ¿ø°¡ÀÔ Å×½ºÆ® ÄÚµå ÀÛ¼º?
__7.1.1?(1) ¸ðµç ÀÔ·Â Ç׸ñÀ» À¯È¿ÇÑ °ªÀ¸·Î ÀÔ·ÂÇÏ¸é °èÁ¤ÀÌ »ý¼ºµÈ´Ù?
__7.1.2?(2) »ç¿ëÀÚ¸íÀÌ À¯È¿ÇÏÁö ¾ÊÀ¸¸é À¯È¿ÇÏÁö ¾Ê´Ù´Â ¸Þ½ÃÁö¸¦ ´ãÀº ¿À·ù¸¦ ÀÏÀ¸Å²´Ù?
__7.1.3?(3) °èÁ¤ ID(username)°¡ Áߺ¹µÇ¸é Áߺ¹ °èÁ¤ ID ¿À·ù¸¦ ÀÏÀ¸Å²´Ù?
__7.1.4?(4) À̸ÞÀÏ ÁÖ¼Ò°¡ Áߺ¹µÇ¸é Áߺ¹ ¸Þ½ÃÁö¸¦ ´ãÀº ¿À·ù¸¦ ÀÏÀ¸Å²´Ù?
__7.1.5?(5) Ç¥½Ã¸íÀ» ÀÔ·ÂÇÏÁö ¾ÊÀ¸¸é ¹«ÀÛÀ§ ¹®ÀÚ¿ 8±ÛÀÚ·Î ´ë½ÅÇÑ´Ù
7.2?ȸ¿ø°¡ÀÔ API ±¸Çö?
__7.2.1?(1) PydanticÀ¸·Î Formdata À¯È¿¼º °ËÁõÇϱâ
__7.2.2?(2) signup API¿¡ SignupPayload ½ºÅ°¸¶ Àû¿ëÇϱâ?
__7.2.3?(3) ÀÀ´ä °á°ú¿¡´Â username, display_name, is_host¸¸ Ãâ·ÂÇϱâ?
7.3?·Î±×ÀÎ ±¸Çö?
__7.3.1?·Î±×ÀÎ ±¸Çö¿¡ ÇÊ¿äÇÑ ±â¼ú?
__7.3.2?·Î±×ÀÎ API ±¸ÇöÇϱâ?
7.4?ÀÚ±â ÀÚ½ÅÀÇ Á¤º¸¸¦ °¡Á®¿À´Â API ±¸Çö?
__7.4.1?FastAPIÀÇ ÀÇÁ¸¼º ÁÖÀÔÀ̶õ?
__7.4.2?ÀÚ½ÅÀÇ Á¤º¸¸¦ °¡Á®¿À´Â API ½Ã³ª¸®¿À?
__7.4.3?ÄíŰ¿¡¼ ÀÎÁõ ÅäÅ«À» °¡Á®¿Í ÀÎÁõ °Ë»çÇϱâ?
__7.4.4?½ÇÆÐÇÏ´Â Å×½ºÆ® ÄÚµå·Î ±¸Çö °ËÁõÇϱâ?
7.5?FastAPI ͏°´õ, °èÁ¤ ¼³Á¤ ÆäÀÌÁö ±¸Çö?
__7.5.1?°èÁ¤ Á¤º¸ º¯°æÇϱâ?
__7.5.2?·Î±×¾Æ¿ô ±¸ÇöÇϱâ?
__7.5.3?ȸ¿ø Å»Å𠱸ÇöÇϱâ
8Àå »ç¿ëÀÚº° ͏°´õ ¹× ¿¹¾à °ü¸® ±¸Çö
8.1?È£½ºÆ®º° ͏°´õ °¡Á®¿À±â?
__8.1.1?»ç¿ëÀÚ ½Ã³ª¸®¿À?
__8.1.2?È£½ºÆ®ÀÎ »ç¿ëÀÚÀÇ usernameÀ¸·Î ͏°´õ Á¤º¸ °¡Á®¿À±â?
__8.1.3?Á¸ÀçÇÏÁö ¾Ê´Â »ç¿ëÀÚÀÇ usernameÀ¸·Î ͏°´õ Á¤º¸¸¦ °¡Á®¿À·Á°í Çϸé 404 ÀÀ´ä ¹ÝȯÇϱâ?
__8.1.4?È£½ºÆ®°¡ ¾Æ´Ñ »ç¿ëÀÚÀÇ usernameÀ¸·Î ͏°´õ Á¤º¸¸¦ °¡Á®¿À·Á°í Çϸé 404 ÀÀ´ä ¹ÝȯÇϱâ?
__8.1.5?host_calendar_detail(?)À» API·Î Å×½ºÆ®Çϱâ
8.2?È£½ºÆ®ÀÇ Ä¶¸°´õ¸¦ »ý¼ºÇÏ°í º¯°æ?
__8.2.1? È£½ºÆ® »ç¿ëÀÚ´Â À¯È¿ÇÑ Ä¶¸°´õ Á¤º¸¸¦ Á¦ÃâÇÏ¿© ͏°´õ¸¦ »ý¼ºÇÒ ¼ö ÀÖ´Ù?
__8.2.2?͏°´õ°¡ ÀÖ´Â »óȲ¿¡¼ Ãß°¡ »ý¼ºÇÏ·Á°í Çϸé 422 ÀÀ´ä ¹ÝȯÇϱâ?
__8.2.3?°Ô½ºÆ® »ç¿ëÀÚ°¡ ͏°´õ¸¦ »ý¼ºÇÏ·Á°í Çϸé 403 ÀÀ´ä ¹ÝȯÇϱâ
__8.2.4?»ç¿ëÀÚ°¡ º¯°æÇÏ´Â Ç׸ñ¸¸ º¯°æµÇ°í ³ª¸ÓÁö´Â ±âÁ¸ °ª À¯ÁöÇϱâ?
8.3?ŸÀÓ½½·Ô °ü¸®?
__8.3.1?È£½ºÆ® »ç¿ëÀÚ´Â À¯È¿ÇÑ Å¸ÀÓ½½·Ô Á¤º¸¸¦ Á¦ÃâÇÏ¿© ŸÀÓ½½·ÔÀ» »ý¼ºÇÒ ¼ö ÀÖ´Ù?
__8.3.2?À¯È¿ÇÏÁö ¾ÊÀº ŸÀÓ½½·Ô Á¤º¸·Î »ý¼ºÇÏ·Á°í Çϸé HTTP 422 ÀÀ´äÇϱâ?
__8.3.3?°ãÄ¡´Â ½Ã°£´ë°¡ ÀÖ´Ù¸é HTTP 422 ÀÀ´äÇϱâ?
8.4?¿¹¾à?
__8.4.1?À¯È¿ÇÑ ¿¹¾à ½Åû ³»¿ëÀ¸·Î ¿¹¾à »ý¼ºÀ» ¿äûÇÏ¸é ¿¹¾à ³»¿ëÀ» ´ã¾Æ HTTP 201 ÀÀ´äÇϱâ?
__8.4.2?È£½ºÆ®°¡ ¾Æ´Ñ »ç¿ëÀÚ¿¡°Ô ¿¹¾àÀ» »ý¼ºÇϸé HTTP 404 ÀÀ´äÇϱâ?
__8.4.3?¾ø´Â ½Ã°£´ë¿¡ ¿¹¾àÀ» »ý¼ºÇϸé HTTP 404 ÀÀ´äÇϱâ?
8.5?͏°´õ ¿¹¾à °¡Á®¿À±â?
__8.5.1?È£½ºÆ®°¡ ÀÚ½ÅÀÌ ¿¹¾à¹ÞÀº ³»¿ªÀ» ¹Þ¾Æ º¸´Â API ±¸ÇöÇϱâ?
__8.5.2?°Ô½ºÆ®´Â È£½ºÆ®ÀÇ Ä¶¸°´õ ¿¹¾à ³»¿ªÀ» ¿ù ´ÜÀ§·Î ¹Þ´Â´Ù?
__8.5.3?°Ô½ºÆ®´Â ÀÚ½ÅÀÇ Ä¶¸°´õ ¿¹¾à ³»¿ªÀ» ÆäÀÌÁö ´ÜÀ§·Î ¹Þ´Â´Ù?
__8.5.4?»ç¿ëÀڴ ƯÁ¤ ¿¹¾à ³»¿ª µ¥ÀÌÅ͸¦ ¹Þ´Â´Ù?
8.6?FastAPI ͏°´õ, ¿¹¾à °ü¸®?
__8.6.1?È£½ºÆ®´Â Àڽſ¡°Ô ½ÅûÇÑ ºÎÅ·¿¡ ´ëÇØ ÀÏÀÚ, ŸÀÓ½½·ÔÀ» º¯°æÇÒ ¼ö ÀÖ´Ù?
__8.6.2?°Ô½ºÆ®¿Í È£½ºÆ®´Â ´Ù¸¥ È£½ºÆ®ÀÇ Å¸ÀÓ½½·ÔÀ¸·Î º¯°æÇÒ ¼ö ¾ø´Ù?
__8.6.3?°Ô½ºÆ®´Â ÀÚ½ÅÀÇ ºÎÅ·¿¡ ´ëÇØ ÁÖÁ¦, ¼³¸í, ÀÏÀÚ, ŸÀÓ½½·ÔÀ» º¯°æÇÒ ¼ö ÀÖ´Ù?
__8.6.4?¿©·¯ºÐÀ» À§ÇÑ ÀÛÀº Á¦¾È?
8.7?ºÎÅ·¿¡ Âü¼® »óÅ Á¤º¸ ´Ù·ç±â?
__8.7.1?ºÎÅ· ¸ðµ¨¿¡ Âü¼® »óÅ Çʵå Ãß°¡, Enum ÀÚ·áÇü?
__8.7.2?µ¥ÀÌÅͺ£À̽º ¸¶À̱׷¹À̼Ç?
__8.7.3?È£½ºÆ®´Â Àڽſ¡°Ô ½ÅûÇÑ ºÎÅ·ÀÇ Âü¼® »óŸ¦ º¯°æÇÒ ¼ö ÀÖ´Ù
8.8?ÆÄÀÏ ¾÷·Îµå?
__8.8.1?HTTP ÆÄÀÏ ¾÷·ÎµåÇϱâ?
__8.8.2?FastAPI¿¡¼ ÆÄÀÏ ¾÷·Îµå¸¦ ó¸®ÇÏ´Â ¹æ½Ä?
__8.8.3?°Ô½ºÆ®´Â ÀÚ½ÅÀÌ ½ÅûÇÑ ºÎÅ·¿¡ ÆÄÀÏÀ» ¾÷·ÎµåÇÒ ¼ö ÀÖ´Ù: ¿¬½ÀÇϱâ?
__8.8.4?fastapi-storages »ç¿ëÇϱâ?
__8.8.5?°Ô½ºÆ®´Â ÀÚ½ÅÀÌ ½ÅûÇÑ ºÎÅ·¿¡ ÆÄÀÏÀ» ¾÷·ÎµåÇÒ ¼ö ÀÖ´Ù: ½ÇÁ¦ ÇØ º¸±â?
__8.8.6?¾÷·Îµå °ü·Ã ¸¶À̱׷¹ÀÌ¼Ç ½ºÅ©¸³Æ® »ý¼ºÇϱâ?
__8.8.7?SQLAlchemyÀÇ Result °´Ã¼¸¦ ´Ù·ê ¶§ unique(?) ¸Þ¼µå »ç¿ëÇϱâ
9Àå ¿î¿µÀÚ ÆäÀÌÁö¿¡¼ µ¥ÀÌÅÍ °ü¸®
9.1?¿î¿µÀÚ ÆäÀÌÁö¿Í SQLAdmin?
__9.1.1?¿î¿µÀÚ ÆäÀÌÁö?
__9.1.2?SQLAdminÀ̶õ?
__9.1.3?SQLAdmin ¼³Ä¡¿Í ¼³Á¤?
9.2?SQLAdmin ±âº» Ȱ¿ë¹ý?
__9.2.1?¸ÞŸµ¥ÀÌÅÍ?
__9.2.2?¸ñ·Ï ÆäÀÌÁö
__9.2.3?»ó¼¼ ÆäÀÌÁö?
__9.2.4?ÆäÀÌÁö³×ÀÌ¼Ç ¿É¼Ç?
__9.2.5?ÀÏ¹Ý ¿É¼Ç?
__9.2.6?¾ç½Ä(form) ¿É¼Ç?
__9.2.7?³»º¸³»±â ¿É¼Ç?
__9.2.8?¸ðµ¨ °³º° °³Ã¼ Ç¥½Ã Á¶Á¤Çϱâ?
__9.2.9?¸ðµ¨µé¿¡ ´ëÀÀÇÏ´Â ¾îµå¹Î ÆäÀÌÁö Á¤ÀÇÇϱâ?
9.3?¸Þ¼µå ¿À¹ö¶óÀ̵ùÀ» Ȱ¿ëÇÏ¿© ±â´É È®Àå ¹× º¯°æ?
__9.3.1? on_model_change(self, data: dict, model: Any, is_created: bool, request: Request)?
__9.3.2?insert_model(self, request: Request, data: dict)
__9.3.3?update_model(self, request: Request, pk: str, data: dict)?
__9.3.4? after_model_change(self, data: dict, model: Any, is_created: bool, request: Request)?
__9.3.5?User ¸ðµ¨¿¡ status ¸ðµ¨ Çʵå Ãß°¡Çϱâ?
__9.3.6?on_model_delete(self, model: Any, request: Request)
__9.3.7? after_model_delete(self, model: Any, request: Request)?
__9.3.8?delete_model(self, request: Request, pk: Any)?
__9.3.9?scaffold_form(?)?
__9.3.10?list_query(self, request: Request)
__9.3.11?hybrid_property¿Í expression
__9.3.12?search_query(self, stmt: Select, term: str)?
9.4?SQLAdmin »ç¿ëÀÚ ÀÎÁõ ü°è?
__9.4.1?ÀÎÁõ ¹é¿£µå ±¸ÇöÇϱâ?
__9.4.2?ÀÎÁõ ¹é¿£µå Àû¿ëÇϱâ
10Àå ¾à¼Ó Àâ±â ÇÁ·ÎÁ§Æ®¿¡ ÇÁ·±Æ®¿£µå ¿¬µ¿
10.1?Á¤Àû ÆÄÀÏ?
__10.1.1?À¥ ¼¹ö¿Í À¥ ¾ÖÇø®ÄÉÀÌ¼Ç ¼¹ö?
__10.1.2?FastAPI¿¡¼ Á¤Àû ÆÄÀÏ Ã³¸®?
10.2?±¸ÇöµÈ °á°ú¹°À» ÆÄÀ̽ã À¥ ¼¹ö·Î ±¸µ¿?
10.3?CORS �
10.4?È£½ºÆ® ¸ñ·Ï API?
10.5?ÀÎÁõ ÅäÅ«ÀÌ ¾ø´Â °æ¿ì¿¡ ´ëÇÑ ¸íÈ®ÇÑ ÀÀ´ä
__10.5.1?ÀÎÁõ ÅäÅ«ÀÌ ¾ø´Â °æ¿ì ´ëÀÀÇϱâ?
__10.5.2?SQLAdmin¿¡µµ ¸íÈ®ÇÑ ÀÎÁõ ¿¹¿Ü ¿À·ù ó¸®Çϱâ
10.6?͏°´õ È帧?
__10.6.1?È£½ºÆ® ¸ñ·Ï?
__10.6.2?͏°´õ Ç¥½Ã?
__10.6.3?ºÎÅ· »ý¼º?
__10.6.4?°Ô½ºÆ®ÀÇ ºÎÅ· ³»¿ª?
__10.6.5?ºÎÅ· »ó¼¼ º¸±â?
10.7?À¥ ÇÁ·±Æ®¿£µå °³¹ß ¸í¼¼?
__10.7.1?»ç¿ëÇÏ´Â ±â¼ú ½ºÅÃ?
__10.7.2?µð·ºÅ͸® ±¸Á¶?
__10.7.3?°³¹ß ȯ°æ ±¸¼º
11Àå SQLAlchemy Áö¿¬ ·Îµù Àü·«
11.1?Áö¿¬ ·ÎµùÀ̶õ
11.2?Áö¿¬ ·ÎµùÀÇ Á¾·ù?
__11.2.1?Áï½Ã ·Îµù?
__11.2.2?Áö¿¬ ·Îµù?
__11.2.3?Áö¿¬ ·Îµù ¾È ÇÔ(no load)
__11.2.4?Â÷ÀÌÁ¡?
__11.2.5?À¯ÀÇÁ¡?
11.3?SQLAlchemy Áö¿¬ ·Îµù Àû¿ë?
__11.3.1?(1) User ¸ðµ¨¿¡ Áö¿¬ ·Îµù Àû¿ëÇϱâ?
__11.3.2?(2) OAuthAccount ¸ðµ¨¿¡ Áö¿¬ ·Îµù Àû¿ëÇϱâ
__11.3.3?(3) Calendar ¸ðµ¨¿¡ Áö¿¬ ·Îµù Àû¿ëÇϱâ?
__11.3.4?(4) TimeSlot ¸ðµ¨¿¡ Áö¿¬ ·Îµù Àû¿ëÇϱâ ?
__11.3.5?(5) Booking ¸ðµ¨¿¡ Áö¿¬ ·Îµù Àû¿ëÇϱâ?
__11.3.6?(6) BookingFile ¸ðµ¨¿¡ Áö¿¬ ·Îµù Àû¿ëÇϱâ
12Àå ±¸±Û ͏°´õ ¿¬µ¿
12.1?±¸±Û Ŭ¶ó¿ìµå API?
__12.1.1?±¸±Û Ŭ¶ó¿ìµå API¶õ?
__12.1.2?±¸±Û Ŭ¶ó¿ìµå APIÀÇ ÁÖ¿ä ¿ä¼Ò¿Í °³³ä?
__12.1.3?±¸±Û Ŭ¶ó¿ìµå ÄÜ¼Ö Áغñ
__12.1.4?͏°´õ °øÀ¯ ¹× ±ÇÇÑ ºÎ¿©Çϱâ?
12.2?±¸±Û ͏°´õ¿¡ À̺¥Æ® »ý¼º?
__12.2.1?±¸±Û Ŭ¶ó¿ìµå API ÆÄÀ̽ã Ŭ¶óÀÌ¾ðÆ® ¼³Ä¡Çϱâ?
__12.2.2?±¸±Û ͏°´õ ¼ºñ½º Á¤ÀÇ?
__12.2.3?ÀÏÁ¤(À̺¥Æ®) »ý¼ºÇϱâ?
__12.2.4?Å×½ºÆ® ±¸ÇöÇϱâ
__12.2.5?½ºÅ°¸¶ Á¤ÀÇÇϱâ?
12.3?±¸±Û ͏°´õÀÇ À̺¥Æ® °ü¸®?
__12.3.1?Å×½ºÆ® ÇȽºÃ³ Á¤ÀÇÇϱâ?
__12.3.2?ÀÏÁ¤ »èÁ¦Çϱâ?
__12.3.3?ƯÁ¤ ÀÏÁ¤ °¡Á®¿À±â?
__12.3.4?ÀÏÁ¤ ¼öÁ¤Çϱâ?
__12.3.5?ÀÏÁ¤ ¸ñ·Ï °¡Á®¿À±â?
12.4?¾à¼Ó Àâ±â ±¸Çöü¿¡ ±¸±Û ͏°´õ ¿¬µ¿ Àû¿ë?
__12.4.1?±¸±Û ͏°´õ ¼ºñ½º ÀÇÁ¸¼º Á¤ÀÇÇϱâ
__12.4.2?ºÎÅ·À» »ý¼ºÇÒ ¶§ ±¸±Û ͏°´õ¿¡ µî·ÏÇϱâ?
__12.4.3?ºÎÅ·À» º¯°æÇÒ ¶§ ±¸±Û ͏°´õ¿¡ ¹Ý¿µÇϱâ
__12.4.4?È£½ºÆ® ºÎÅ· ¸ñ·Ï¿¡¼ ±¸±Û ͏°´õ ÀÏÁ¤ ¹Ý¿µÇϱâ?
12.5?FastAPI ¹é±×¶ó¿îµå ÀÛ¾÷?
__12.5.1?BackgroundTasks?
__12.5.2?StreamResponse
13Àå ¿À·ù ±â·Ï°ú °üÂû, °ü¸®
13.1?¿À·ù ·Î±× ü°è?
13.2?Sentry¶õ?
13.3?°èÁ¤°ú ÇÁ·ÎÁ§Æ® »ý¼º?
13.4?¾à¼Ó Àâ±â ÇÁ·ÎÁ§Æ®¿¡ Sentry ¹Ý¿µ?
__13.4.1?ÃʱâÈ ÀÎÀÚ?
__13.4.2?ÅëÇÕ(integration) µµ±¸ ÀÎÀÚ
13.5?¿À·ù ·Î±× Å×½ºÆ®?
13.6?¼öµ¿À¸·Î ·Î±× ³²±â±â
14Àå ¾Æ¸¶Á¸ À¥ ¼ºñ½º¿¡ ¹èÆ÷Çϱâ
14.1?ÀÇÁ¸ ÆÐŰÁö °ü¸®?
__14.1.1?ÆÐŰÁö °ü¸®ÀÚ?
__14.1.2?ÀÇÁ¸ ÆÐŰÁö µ¿°á?
__14.1.3?uv·Î ´õ ºü¸£°Ô ¼³Ä¡Çϱâ?
14.2?AWS Lightsail(¶óÀÌÆ®¼¼ÀÏ)·Î ¼¹ö ±¸¼º?
__14.2.1?AWS LightsailÀ̶õ?
__14.2.2?Lightsail ¼ºñ½º?
__14.2.3?Lightsail¿¡ ¼¹ö ±¸¼ºÇϱâ
14.3?ÀνºÅϽº ¼¹ö¿¡ ȯ°æ ±¸¼º?
__14.3.1?SSH¿Í SSH ÀÎÁõŰ?
__14.3.2?apt ÆÐŰÁö °ü¸®ÀÚ?
__14.3.3?ºôµå µµ±¸ ¼³Ä¡Çϱâ?
__14.3.4?Nginx?
__14.3.5?ÆÄÀ̽㠰¡»ó ȯ°æ ±¸¼ºÇϱâ?
__14.3.6?Hello World¿ë FastAPI ¾Û ÀÛ¼ºÇϱâ?
__14.3.7?À¥ ¾ÖÇø®ÄÉÀÌ¼Ç ±¸µ¿ ½ºÅ©¸³Æ® ÀÛ¼ºÇϱâ?
__14.3.8?Systemd·Î ¼ºñ½º °ü¸®Çϱâ?
__14.3.9?Nginx¿¡ ÇÁ·Ï½Ã·Î ¿¬°áÇϱâ?
__14.3.10?Nginx·Î Á¤Àû ÆÄÀÏ ¼ºùÇϱâ
14.4?±êÇãºê ¾×¼ÇÀ» »ç¿ëÇÏ¿© ¹èÆ÷ ÀÚµ¿È?
__14.4.1?±êÇãºê ¾×¼ÇÀ̶õ
__14.4.2?±âº» °³³ä ÀÌÇØÇϱâ
__14.4.3?±êÇãºê ¿öÅ©Ç÷ΠÀÛ¼ºÇϱâ
Ã¥¼ÓÀ¸·ÎÀÌ Ã¥Àº ¿©·¯ºÐÀÌ À¥ ¾ÖÇø®ÄÉÀÌ¼Ç ¼¹ö¸¦ ±¸ÇöÇÏ°í ¹èÆ÷ÇÏ¿© Ãâ½ÃÇϵµ·Ï µ½½À´Ï´Ù. °³¹ßÇÑ ÇÁ·ÎÁ§Æ®¸¦ Ãâ½ÃÇÑ °æÇèÀÌ ¾ø´Â »óÅ¿¡¼´Â ÀÛ°Ô¶óµµ Ãâ½ÃÇÏ´Â °æÇèÀ» ÇÏ´Â °ÍÀÌ ¹«¾ùº¸´Ù Áß¿äÇÕ´Ï´Ù. ¿©±â¼ ¡®À۰Զ󵵡¯¶ó´Â ¸»Àº ÇÁ·ÎÁ§Æ® ±Ô¸ð¸¦ °¡¸®Å°±âµµ ÇÏÁö¸¸, ÇÁ·ÎÁ§Æ®¿¡ µéÀÌ´Â ³» ÀÇÁö·ÂÀ» °¡¸®Å°±âµµ ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î ÇÁ·ÎÁ§Æ®¸¦ ¸¸µå´Â µ¥ »ç¿ëÇÏ´Â µµ±¸°¡ ³Ê¹« ¾î·Æ°Å³ª º¹ÀâÇϸé Ãâ½Ã¿¡ À̸£Áö ¸øÇÒ °¡´É¼ºÀÌ ¸Å¿ì ³ô½À´Ï´Ù. ±×·± Á¡¿¡¼ FastAPI´Â ÇнÀ °î¼±ÀÌ °¡ÆÄ¸£Áö ¾Ê¾Æ ¡®À۰Զ󵵡¯¿¡ ºÎÇÕÇÕ´Ï´Ù.
Áï, ÀÌ Ã¥Àº FastAPI¸¦ ¼³¸íÇÏÁö¸¸, ÇÁ·ÎÁ§Æ®¸¦ °³¹ßÇØ¼ Ãâ½ÃÇÏ°í ¿î¿µÇÏ´Â µ¥ ÀûÇÕÇÑ ½Ç¹« µµ±¸ÀÌÀÚ ÇнÀ ±³º¸Àç·Î FastAPI¸¦ ´Ù·ì´Ï´Ù. ÀÌ Ã¥¿¡ ´ã°Å³ª ÀÌ Ã¥¿¡¼ ´Ù·ç´Â ³»¿ëÀº FastAPI°¡ ¾Æ´Ñ µµ±¸¿¡¼µµ Ȱ¿ëµÇ´Â Áö½ÄÀÌÀÚ ±â¼úÀÌÁö¸¸, FastAPI·Î º¸´Ù ½±°í Á÷°üÀûÀ¸·Î °æÇèÇϰí ÇнÀÇÕ´Ï´Ù. Á¦ ¿¹»ó¿¡´Â ´ÙÀ½ µ¶ÀںеéÀÌ ÀÌ Ã¥À» ±â´Ù¸®¼ÌÀ» °Í °°½À´Ï´Ù. ¡Ü ÆÄÀ̽ãÀ» ÁÖ¿äÇÏ°Ô »ç¿ëÇÑ ÀûÀº ¾øÁö¸¸, À¥ ¾ÖÇø®ÄÉÀÌ¼Ç ¼¹ö¸¦ ºü¸£°Ô °³¹ßÇϰíÀÚ ÇÏ´Â ´Ù¸¥ ¾ð¾î °æÇèÀÚ ¡Ü Àå°í(Django)³ª Çöó½ºÅ©(Flask)¸¦ »ç¿ëÇØ º¸¾Ò°í, FastAPI¸¦ ½Ç¹«ÀûÀ¸·Î ÇнÀÇϰíÀÚ ÇÏ ´Â °³¹ßÀÚ ¡Ü ÆÄÀ̽ãÀ» »ç¿ëÇϸç, À¥ ¾ÖÇø®ÄÉÀÌ¼Ç ¼¹ö¸¦ Á¦´ë·Î °³¹ßÇÏ°í ¹èÆ÷ÇØ º¸°íÀÚ ÇÏ´Â µ¥ÀÌÅÍ »çÀÌ¾ðÆ¼½ºÆ®³ª µ¥ÀÌÅÍ ¿£Áö´Ï¾î ¶Ç´Â AI ¿£Áö´Ï¾î ¶ÇÇÑ, ÀÌ Ã¥Àº Å×½ºÆ® ÁÖµµ °³¹ßÀ̳ª ¾ÖÀÚÀÏ ¹æ¹ý·ÐÀ» ÁÖÁ¦·Î »ïÀº Ã¥ÀÌ ¾Æ´Õ´Ï´Ù. ÇÏÁö¸¸ Å×½ºÆ® ÁÖµµ °³¹ßÀ̳ª ¾ÖÀÚÀÏ ¹æ¹ý·Ð¿¡¼ ¼öÇàÇÏ´Â ÀϺΠ¿ä¼Ò¸¦ È¿°úÀûÀÎ ÇнÀ°ú ÇÁ·ÎÁ§Æ® ¼öÇà¿¡ ÇÊ¿äÇÑ È°µ¿À¸·Î Ȱ¿ëÇÕ´Ï´Ù. µû¶ó¼ ½Ç¹«ÀûÀÎ Å×½ºÆ® Äڵ带 ¼³°èÇϰųª °èȹ ¶Ç´Â ÀÛ¼ºÇÏ´Â °æÇèÀ» Çϰųª ±âȹÀ̳ª ¿ä±¸ »çÇ×À» °³¹ß ÀÛ¾÷À¸·Î ÀüȯÇÏ´Â °æÇèÀ» ÀÌ Ã¥¿¡¼ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. Çö¾÷¿¡¼ ½Ç¹«¿¡ ÀÌ·± °³¹ß ¹æ¹ý·ÐÀ» ¾î¶»°Ô Àû¿ëÇÒÁö ¸·¸·ÇÏ´Ù¸é À¯ÀÍÇÑ ½Ç½À °æÇèÀ» ÇÒ °ÍÀÔ´Ï´Ù. -º»¹® Áß¿¡¼- ÃâÆÇ»ç ¼ÆòFastAPI¸¦ ÀÌ¿ëÇØ ¼ºñ½º °³¹ßºÎÅÍ Ãâ½Ã±îÁö
´õ ½±°í È¿À²ÀûÀ¸·Î ÇнÀÇÏ°í °æÇèÇÑ´Ù!
¼ºñ½º¸¦ ±âȹÇÏ°í ¸¸µå´Â °Íµµ ½±Áö ¾ÊÁö¸¸, ½ÇÁ¦·Î ¼¼»ó¿¡ Ãâ½ÃÇÏ°í ¿î¿µÇÏ´Â ÀÏÀº ±×º¸´Ù ´õ ¸¹Àº ½ÃÇàÂø¿À¿Í ³ëÇϿ츦 ¿ä±¸ÇÑ´Ù. ·ÎÄà ȣ½ºÆ®¿¡¼ ±¸µ¿ÇÏ´Â °úÁ¤¿¡¼´Â µå·¯³ªÁö ¾Ê´ø ¹®Á¦µéÀÌ Ãâ½ÃÇÏ´Â °úÁ¤¿¡¼ µå·¯³ª±âµµ Çϰí, ±×¿¡ µû¶ó Àå¾Ö¿Í º¹Àâµµµµ ÇÔ²² ´Ã¾î³´Ù. ±×·¡¼ ÀÌ Ã¥Àº À¥ ¾ÖÇø®ÄÉÀÌ¼Ç ¼¹ö¸¦ ±¸ÇöÇÏ´Â µ¥ ±×Ä¡Áö ¾Ê°í, ½ÇÁ¦ ¼ºñ½º¸¦ Ãâ½ÃÇÏ´Â °úÁ¤±îÁö ÇÔ²² ´Ù·é´Ù. À̶§ »ç¿ëÇÏ´Â µµ±¸°¡ ³Ê¹« ¾î·Æ°Å³ª º¹ÀâÇÏ¸é ³¡±îÁö ¿ÏÁÖÇϱ⠾î·Á¿îµ¥, ±× Á¡¿¡¼ FastAPI´Â ¹è¿ì±â ½±°í ºü¸£°Ô °á°ú¸¦ È®ÀÎÇÒ ¼ö ÀÖ¾î ½ÇÀü ÇÁ·ÎÁ§Æ®¸¦ °æÇèÇϱ⿡ ÀûÇÕÇÏ´Ù.
ÀÌ Ã¥Àº ¾à¼Ó Àâ±â À¥ ¼ºñ½º¸¦ ÇϳªÀÇ ÇÁ·ÎÁ§Æ®·Î »ï¾Æ, ±âȹºÎÅÍ ±¸Çö, ¹èÆ÷±îÁöÀÇ ¸ðµç È帧À» µû¶ó°£´Ù. 1~6Àå¿¡¼´Â ¿ä±¸ »çÇ× Á¤ÀÇ, ¼³°è, ȯ°æ ±¸¼º µî °³¹ß¿¡ ÇÊ¿äÇÑ ±â¹ÝÀ» ´ÙÁö°í, 7~12Àå¿¡¼´Â º»°ÝÀûÀÎ ±â´É ±¸Çö°ú ÇÁ·±Æ®¿£µå ¹× ¿ÜºÎ ¼ºñ½º(±¸±Û ͏°´õ)¿ÍÀÇ ¿¬µ¿À» ´Ù·é´Ù. 13~14Àå¿¡¼´Â ±êÇãºê¿Í AWS¸¦ Ȱ¿ëÇÑ ¹èÆ÷¿Í ¿î¿µ ¹æ¹ýÀ» »ìÆìº»´Ù. Àüü °úÁ¤¿¡¼ Å×½ºÆ® ÁÖµµ °³¹ß(TDD)°ú ¾ÖÀÚÀÏ °³¹ß ¹æ½ÄÀÇ ÀϺΠ¿ä¼Ò¸¦ Àû¿ëÇØ ½ÇÁ¦ °³¹ß ÇöÀå¿¡ °¡±î¿î È帧À» µû¶ó°¡¸ç, °¢ ±â´ÉÀÌ ³¡³¯ ¶§¸¶´Ù Å×½ºÆ®¸¦ ÅëÇØ ¿Ï¼ºµµ¸¦ ³ô¿©°£´Ù. ÀÌ Ã¥ ÇÑ ±ÇÀ¸·Î, FastAPI¸¦ ÀÌ¿ëÇÑ À¥ ¼ºñ½º °³¹ß°ú Ãâ½Ã Àü °úÁ¤À» ½Ç½À Áß½ÉÀ¸·Î ¿ÂÀüÈ÷ üÇèÇÒ ¼ö ÀÖ´Ù.
CONTENTS
1Àå. ¿ì¸®°¡ ¸¸µé ÇÁ·ÎÁ§Æ®¿Í µµ±¸ ÀÌÇØ
2Àå. ¼Ð ±âº» ±â´É ÀÍÈ÷±â
3Àå. ½Ç½À ȯ°æ Áغñ
4Àå. ¾à¼Ó Àâ±â ¼ºñ½º ±âȹ
5Àå. µ¥ÀÌÅÍ ¸ðµ¨¸µ
6Àå. ÄÚµå Å×½ºÆ®
7Àå. ȸ¿ø°¡ÀÔ ¹× »ç¿ëÀÚ ÀÎÁõ ±¸Çö
8Àå. »ç¿ëÀÚº° ͏°´õ ¹× ¿¹¾à °ü¸® ±¸Çö
9Àå. ¿î¿µÀÚ ÆäÀÌÁö¿¡¼ µ¥ÀÌÅÍ °ü¸®
10Àå. ¾à¼Ó Àâ±â ÇÁ·ÎÁ§Æ®¿¡ ÇÁ·±Æ®¿£µå ¿¬µ¿
11Àå. SQLAlchemy Áö¿¬ ·Îµù Àü·«
12Àå. ±¸±Û ͏°´õ ¿¬µ¿
13Àå. ¿À·ù ±â·Ï°ú °üÂû, °ü¸®
14Àå. ¾Æ¸¶Á¸ À¥ ¼ºñ½º¿¡ ¹èÆ÷Çϱâ
[º£Å¸Å×½ºÅÍ Èıâ]
Àúó·³ »ý¼ºÇü AI°¡ »ý¼ºÇÏ´Â ÄÚµå·Î ÇÁ·ÎÁ§Æ®¸¦ ±¸ÇöÇϸç Áö½ÄÀÇ °ø¹éÀ» ´À³¤ »ç¶÷¿¡°Ô ÀÌ Ã¥À» °·ÂÈ÷ ÃßõÇÕ´Ï´Ù. °ú°Å MCP ¼¹ö °³¹ß ´ç½Ã ¾ÆÅ°ÅØÃ³¿¡ ´ëÇÑ ¸·¸·ÇÔÀÌ ÄǴµ¥, ÀÌ Ã¥¿¡¼ ü°èÀûÀÎ ÇØ´äÀ» ãÀ» ¼ö ÀÖ¾ú½À´Ï´Ù. ÀÌ Ã¥Àº FastAPI ¹®¹ý¸¸ ¾Ë·ÁÁÖ´Â ±â¼ú¼°¡ ¾Æ´Ñ ¡®±âȹºÎÅÍ ¿î¿µ±îÁö¡¯¶ó´Â Çö½ÇÀûÀÎ ¸ñÇ¥¸¦ °¡Áö°í À¥ ¾ÖÇø®ÄÉÀ̼ÇÀÇ Àüü »çÀÌŬÀ» °æÇèÇÏ°Ô ÇÏ´Â ½ÇÀü Áöħ¼ÀÔ´Ï´Ù. °¢ ÀåÀ» µû¶ó°¡´Ù º¸¸é Èð¾îÁ® ÀÖ´ø °³³äµéÀÌ ÇϳªÀÇ À¯±âÀûÀÎ È帧À¸·Î ¿¬°áµÇ´Â °ÍÀ» ´À³¥ ¼ö ÀÖ½À´Ï´Ù. »ó¼¼Çϸ鼵µ ½¬¿î ¼³¸í ´öºÐ¿¡ ºñÀü°øÀÚµµ ÃæºÐÈ÷ µû¶ó°¥ ¼ö ÀÖ´Â ·Îµå¸ÊÀ» Á¦½ÃÇÕ´Ï´Ù. ¡®Á÷Á¢ °³¹ßÇÑ ¼ºñ½º¸¦ ¿î¿µÇÒ ¶§ °¡Àå ¸¹ÀÌ ¼ºÀåÇß´Ù¡¯´Â ÀúÀÚÀÇ °æÇè´ãÀº ÀÌ Ã¥ÀÇ ¸ðµç °ÍÀ» °üÅëÇÏ´Â ÇÙ½É Ã¶ÇÐÀÔ´Ï´Ù. ÀÌ Ã¥Àº µ¶ÀÚ°¡ ±× ¼ºÀåÀ» Á÷Á¢ °æÇèÇÒ ¼ö ÀÖµµ·Ï ¼³°èµÈ ½Ç¿ëÀûÀÎ ¾È³»¼ÀÔ´Ï´Ù.
½Ç½À ȯ°æ: Macbook M1 Pro
±ÇÁØÇõ | Ãë¾÷Áغñ»ý
FastAPI¸¦ ½ÇÀü Àû¿ë Â÷¿ø¿¡¼ ´Ü°èº°·Î Â÷±ÙÂ÷±Ù ¾È³»ÇÑ ½Ç¿ëÀûÀÎ Áöħ¼ÀÔ´Ï´Ù. ½ÇÁ¦ ¿¹Á¦ ÇÁ·ÎÁ§Æ®¸¦ ¹ÙÅÁÀ¸·Î FastAPI¸¦ »ç¿ëÇØ º¼ ¼ö ÀÖµµ·Ï ±¸¼ºÇßÀ¸¸ç, AWS¿¡¼ ±¸ÇöÇÏ´Â ¹æ¹ýÀ» ´Ü°èÀûÀ¸·Î Àß ¼³¸íÇÕ´Ï´Ù. ´ëºÎºÐÀÇ ±â¼ú¼°¡ »õ·Î¿î ±â¼úÀ» ¼Ò°³Çϱâ À§Çؼ Áö³ªÄ¡°Ô ¸¹ÀÌ ¼³¸íÇϰųª »ý·«ÇÏ´Â °æ¿ì¸¦ º¸¾Ò½À´Ï´Ù. ÇÏÁö¸¸ ÀÌ Ã¥Àº ÀúÀÚÀÇ ½ÇÀü ³ëÇϿ츦 ¹ÙÅÁÀ¸·Î ÀûÀýÇÑ ³À̵µ·Î ºü¸£°Ô FastAPI ½ÇÀü¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Â ³ëÇϿ츦 Áý¾àÇß´Ù°í »ý°¢µË´Ï´Ù. ´õºÒ¾î ½ÇÀü Àû¿ë¿¡ ÇÊ¿äÇÑ ±â¹Ý ±â¼úÀ» ÀûÀýÇÑ ºÐ·®°ú ³À̵µ·Î ¼³¸íÇÑ °ÍÀÌ ÀÌ Ã¥ÀÇ ÀåÁ¡ÀÔ´Ï´Ù. °³ÀÎÀûÀ¸·Î´Â FastAPI¸¦ ½ÇÀü¿¡ »ç¿ëÇÏ´Â »ç¶÷(´ëºÎºÐ ¸®´ª½º¿¡ Àͼ÷ÇÑ °³¹ßÀÚ¶ó)ÀÌ ¾Ë¾Æ¾ß Çϱ⿡´Â ÀϺΠ¼¼ºÎ ³»¿ëÀ» Áß°£Áß°£ ´Ù·é Á¡ÀÌ Ã¥À» Á» »ê¸¸ÇÏ°Ô ÇÏ´Â °æÇâÀÌ ÀÖ´Â °Í °°½À´Ï´Ù. ÀüüÀûÀ¸·Î´Â FastAPI¸¦ µû¶ó ÇÏ¸é¼ Àß ÀÌÇØÇÒ ¼ö ÀÖ°Ô ÀûÀýÈ÷ ±¸¼ºµÇ¾î ÀÖ´Ù°í »ý°¢ÇÕ´Ï´Ù.
½Ç½À ȯ°æ: MacOS Ventura 13
³ª¿µÈ£ | ÀÓº£µðµå ½Ã½ºÅÛ ¿£Áö´Ï¾î
C++ °ÔÀÓ ÇÁ·Î±×·¡¸Ó·Î Ä¿¸®¾î¸¦ ½ÃÀÛÇØ¼ º»°ÝÀûÀ¸·Î ÆÄÀ̽ã°ú À¥ °³¹ßÀ» ÇÒ ÀÏÀÌ ¸¹Áö ¾Ê¾ÒÁö¸¸ ÃÖ±Ù¿¡´Â ÀΰøÁö´ÉÀ̳ª °³ÀÎÀûÀÎ ÇÊ¿ä·Î °£´ÜÇÑ À¥ ¾ÛµéÀ» °³¹ßÇÒ ÀÏÀÌ ÀÖ¾ú½À´Ï´Ù. ÆÄÀ̽ãÀº Á¶±Ý¾¿ ¾²°í ÀÖ°í óÀ½¿¡ Ãßõ¹Þ¾Ò´ø ÇÁ·¹ÀÓ¿öÅ©°¡ Àå°í¿©¼ Àå°í¸¦ ÁÖ·Î ¾²´Ù°¡ ÃÖ±Ù¿¡´Â FastAPI¸¦ ¾²¸é¼ ±× °¡º¿ò°ú ÆíÇÔ¿¡ °¨ÅºÇÏ¸ç »ç¿ëÇϰí ÀÖ¾ú½À´Ï´Ù. ±×·¯´ø Â÷¿¡ ÀÌ Ã¥À» Àд٠º¸´Ï ¸¸µé´ø ¾ÛÀ» ÁÖº¯ »ç¶÷°ú °øÀ¯Çϱâ À§ÇØ °í¹ÎÇÏ´ø ºÎºÐÀÌ ¸íÄèÇÏ°Ô ÇØ°áµÇ´Â ´À³¦À» ¹Þ¾Ò½À´Ï´Ù. ƯÈ÷ Ãß°¡ ¶óÀ̺귯¸®¸¦ »ç¿ëÇØ¼ ¼¹ö¿¡ ¿Ã¸®´Â ´Ü°è±îÁö Â÷±ÙÂ÷±Ù ¼³¸íÇÏ´Â ºÎºÐÀº Á¤¸» µµ¿òÀÌ µÇ¾ú½À´Ï´Ù. °³¹ß ÃÊ±â ¼ÂÆÃ¿¡¼ ÀÌ¹Ì °Þ¾ú´ø ¹®Á¦µéÀº ÀÌ Ã¥ÀÌ ÀÖ¾úÀ¸¸é Ãʱâ ÇнÀ ºñ¿ëÀ» ÁÙÀÌ´Â µ¥ µµ¿òÀÌ µÇ¾ú°Ú±¸³ª ½Í¾î ÀÌ Ã¥ÀÌ ³Ê¹« ´Ê°Ô ³ª¿Ô´Ù´Â ¾Æ½¬¿òÀÌ ÀÖ¾ú½À´Ï´Ù. ƯÈ÷ ´ëºÎºÐÀÇ Æ©Å丮¾óÀÌ µ¿ÀÛÇÏ´Â ´Ü°è¿¡¼ ³¡³´Ù¸é ½ÇÁ¦ ¼¹ö¿¡¼ µ¿ÀÛÇϱâ À§ÇØ Ãß°¡·Î ¾î¶² ¼³Á¤°ú ¶óÀ̺귯¸®µéÀ» »ç¿ëÇÏ´ÂÁö¿¡ ´ëÇÑ Á¤º¸´Â Çö¾÷ÀÌ ¾Æ´Ï¶ó¸é ¾ò±â Èûµç ÁÁÀº Á¤º¸¶ó°í »ý°¢µË´Ï´Ù. ÃÖ±Ù¿¡ ÀΰøÁö´É ¶óÀ̺귯¸®¸¦ »ç¿ëÇÏ¸é¼ FastAPI¸¦ ÇÔ²² »ç¿ëÇÏ´Â ÆíÀε¥, ÀÌ·¸°Ô ¸¸µç ÇÁ·ÎÅäŸÀÔÀ» ½ÇÁ¦·Î ¼¹ö¿¡ ¿Ã¸®´Â µ¥ µµ¿òÀ» ¸¹ÀÌ ¾òÀ» ¼ö ÀÖÀ» °Í °°½À´Ï´Ù.
½Ç½À ȯ°æ: Macbook M1 Pro
¿À¿µ¿í | °ÔÀÓ °³¹ßÀÚ
½ÇÁ¦ ¼ºñ½º¸¦ ¿î¿µÇÏ´Â °³³äÀ¸·Î Á¢±ÙÇÑ ±¸¼º ÀÚü°¡ ÁÁ¾Ò½À´Ï´Ù. ÀúÀÚ°¡ ±×·± Àǵµ·Î ±â¼úÇßÀ½À» ¹àÇûÀ½¿¡µµ Ãʹݿ¡´Â ³Ê¹« »ó¼¼ÇÏ´Ù´Â ´À³¦ÀÌ µé¾úÁö¸¸ ´ë»ó µ¶ÀÚ¸¦ °¨¾ÈÇÏ¸é ³³µæÇÒ ¸¸ÇÕ´Ï´Ù. ´Ù¸¥ Ãø¸é¿¡¼ »ý°¢ÇÏ´Ï Àúµµ Àß ¸ð¸£°í Áö³ª°¬´ø ³»¿ëÀ» ´Ù½Ã È®ÀÎÇÏ°í ³Ñ¾î°¥ ¼ö ÀÖ´Â ±âȸÀ̱⵵ Çß½À´Ï´Ù. ÀÌ·± ºÎºÐ±îÁö ¼³¸íÇß³ª ½ÍÀ» Á¤µµ·Î »ó´çÈ÷ ¼¼¹ÐÇÏ°Ô ¼³¸íÇϰí ÀÖ¾î µû¶ó°¡´Ù º¸¸é ½ÇÁ¦ ¼ºñ½º¸¦ ¸¸µé°í ¿î¿µÇÏ´Â ´Ü°è±îÁö À̾îÁö´Â Àü¹ÝÀûÀÎ ³»¿ëÀ» ÆÄ¾ÇÇϱâ ÁÁ½À´Ï´Ù. °³ÀÎÀûÀ¸·Î´Â ÃÖ±Ù Æ®·»µåÀÎ uv°¡ ¾Æ´Ï¶ó Poetry¿Í venv·Î ¼³¸íÇÏ´Â ºÎºÐÀÌ Á¶±Ý ¾Æ½±½À´Ï´Ù.
½Ç½À ȯ°æ: Macbook Air M3
ÇÃ¶óÆ¼³ª | DevOps Korea ¼ºñ½º ¿£Áö´Ï¾î |
| ±³È¯ ¹× ȯºÒ °¡´É |
»óǰ¿¡ ¹®Á¦°¡ ÀÖÀ» °æ¿ì |
1) »óǰÀÌ Ç¥½Ã/±¤°íµÈ ³»¿ë°ú ´Ù¸£°Å³ª ºÒ·®(ºÎÆÐ, º¯Áú, ÆÄ¼Õ, Ç¥±â¿À·ù, À̹°È¥ÀÔ, Áß·®¹Ì´Þ)ÀÌ ¹ß»ýÇÑ °æ¿ì - ½Å¼±½Äǰ, ³ÃÀå½Äǰ, ³Ãµ¿½Äǰ : ¼ö·ÉÀÏ ´ÙÀ½³¯±îÁö ½Åû - ±âŸ »óǰ : ¼ö·ÉÀϷκÎÅÍ 30ÀÏ À̳», ±× »ç½ÇÀ» ¾È ³¯ ¶Ç´Â ¾Ë ¼ö ÀÖ¾ú´ø ³¯·ÎºÎÅÍ 30ÀÏ À̳» ½Åû 2) ±³È¯ ¹× ȯºÒ½Åû ½Ã ÆÇ¸ÅÀÚ´Â »óǰÀÇ »óŸ¦ È®ÀÎÇÒ ¼ö ÀÖ´Â »çÁøÀ» ¿äûÇÒ ¼ö ÀÖÀ¸¸ç »óǰÀÇ ¹®Á¦ Á¤µµ¿¡ µû¶ó Àç¹è¼Û, ÀϺÎȯºÒ, ÀüüȯºÒÀÌ ÁøÇàµË´Ï´Ù. ¹Ýǰ¿¡ µû¸¥ ºñ¿ëÀº ÆÇ¸ÅÀÚ ºÎ´ãÀ̸ç ȯºÒÀº ¹ÝǰµµÂøÀϷκÎÅÍ ¿µ¾÷ÀÏ ±âÁØ 3ÀÏ À̳»¿¡ ¿Ï·áµË´Ï´Ù. |
|
´Ü¼øº¯½É ¹× ÁÖ¹®Âø¿ÀÀÇ °æ¿ì |
1) ½Å¼±½Äǰ, ³ÃÀå½Äǰ, ³Ãµ¿½Äǰ ÀçÆÇ¸Å°¡ ¾î·Á¿î »óǰÀÇ Æ¯¼º»ó, ±³È¯ ¹× ȯºÒÀÌ ¾î·Æ½À´Ï´Ù. 2) ÈÀåǰ ÇǺΠƮ·¯ºí ¹ß»ý ½Ã Àü¹®ÀÇ Áø´Ü¼ ¹× ¼Ò°ß¼¸¦ Á¦ÃâÇϽøé ȯºÒ °¡´ÉÇÕ´Ï´Ù. ÀÌ °æ¿ì Á¦¹Ýºñ¿ëÀº ¼ÒºñÀÚ ºÎ´ãÀ̸ç, ¹è¼Ûºñ´Â ÆÇ¸ÅÀÚ°¡ ºÎ´ãÇÕ´Ï´Ù. ÇØ´ç ÈÀåǰ°ú ÇǺΠƮ·¯ºí°úÀÇ »ó´çÇÑ Àΰú°ü°è°¡ ÀÎÁ¤µÇ´Â °æ¿ì ¶Ç´Â Áúȯġ·á ¸ñÀûÀÇ °æ¿ì¿¡´Â Áø´Ü¼ ¹ß±Þºñ¿ëÀ» ÆÇ¸ÅÀÚ°¡ ºÎ´ãÇÕ´Ï´Ù. 3) ±âŸ »óǰ ¼ö·ÉÀϷκÎÅÍ 7ÀÏ À̳» ½Åû, ¿Õº¹¹è¼Ûºñ´Â ¼ÒºñÀÚ ºÎ´ã 4) ¸ð´ÏÅÍ ÇØ»óµµÀÇ Â÷ÀÌ·Î »ö»óÀ̳ª À̹ÌÁö°¡ ´Ù¸¥ °æ¿ì ´Ü¼øº¯½É¿¡ ÀÇÇÑ ±³È¯ ¹× ȯºÒÀÌ Á¦ÇÑµÉ ¼ö ÀÖ½À´Ï´Ù. |
|
| ±³È¯ ¹× ȯºÒ ºÒ°¡ |
1) ½Åû±âÇÑÀÌ Áö³ °æ¿ì 2) ¼ÒºñÀÚÀÇ °ú½Ç·Î ÀÎÇØ »óǰ ¹× ±¸¼ºÇ°ÀÇ Àüü ¶Ç´Â ÀϺΰ¡ ¾ø¾îÁö°Å³ª ÈѼÕ, ¿À¿°µÇ¾úÀ» °æ¿ì 3) °³ºÀÇÏ¿© ÀÌ¹Ì ¼·ÃëÇÏ¿´°Å³ª »ç¿ë(Âø¿ë ¹× ¼³Ä¡ Æ÷ÇÔ)ÇØ »óǰ ¹× ±¸¼ºÇ°ÀÇ °¡Ä¡°¡ ¼Õ»óµÈ °æ¿ì 4) ½Ã°£ÀÌ °æ°úÇÏ¿© »óǰÀÇ °¡Ä¡°¡ ÇöÀúÈ÷ °¨¼ÒÇÑ °æ¿ì 5) »ó¼¼Á¤º¸ ¶Ç´Â »ç¿ë¼³¸í¼¿¡ ¾È³»µÈ ÁÖÀÇ»çÇ× ¹× º¸°ü¹æ¹ýÀ» ÁöŰÁö ¾ÊÀº °æ¿ì 6) »çÀü¿¹¾à ¶Ç´Â ÁÖ¹®Á¦ÀÛÀ¸·Î ÅëÇØ ¼ÒºñÀÚÀÇ ÁÖ¹®¿¡ µû¶ó °³º°ÀûÀ¸·Î »ý»êµÇ´Â »óǰÀÌ ÀÌ¹Ì Á¦ÀÛÁøÇàµÈ °æ¿ì 7) º¹Á¦°¡ °¡´ÉÇÑ »óǰ µîÀÇ Æ÷ÀåÀ» ÈѼÕÇÑ °æ¿ì 8) ¸À, Çâ, »ö µî ´Ü¼ø ±âÈ£Â÷ÀÌ¿¡ ÀÇÇÑ °æ¿ì |
|