±¹³»µµ¼
Àü°øµµ¼/´ëÇб³Àç
°øÇаè¿
ÄÄÇ»ÅÍ°øÇÐ
2013³â 9¿ù 9ÀÏ ÀÌÈÄ ´©Àû¼öÄ¡ÀÔ´Ï´Ù.
Á¤°¡ |
45,000¿ø |
---|
40,500¿ø (10%ÇÒÀÎ)
2,250P (5%Àû¸³)
ÇÒÀÎÇýÅÃ | |
---|---|
Àû¸³ÇýÅà |
|
|
|
Ãß°¡ÇýÅÃ |
|
À̺¥Æ®/±âȹÀü
¿¬°üµµ¼(1)
»óÇ°±Ç
ÀÌ»óÇ°ÀÇ ºÐ·ù
Ã¥¼Ò°³
±âÁ¸ ÀÏüÇü ¾ÖÇø®ÄÉÀ̼ÇÀ» ¸¶ÀÌÅ©·Î¼ºñ½º·Î ³ª´©°í ¿ÂÇÁ·¹¹Ì½º³ª Ŭ¶ó¿ìµå·Î ¹èÆ÷ÇÏ·Á´Â ÀÚ¹Ù, ½ºÇÁ¸µ °³¹ßÀÚ¿Í ¾ÆÅ°ÅØÆ®¸¦ À§ÇÑ Ã¥ÀÌ´Ù.
½ºÇÁ¸µ ºÎÆ®, ½ºÇÁ¸µ Ŭ¶ó¿ìµå¿Í µµÄ¿, Äí¹ö³×Ƽ½º, À̽ºÆ¼¿À, EFK ½ºÅÃ, ÇÁ·Î¸ÞÅ׿콺, ±×¶óÆijª µîÀÇ ¿ÀǼҽº µµ±¸¸¦ Á¶ÇÕÇØ ¸¶ÀÌÅ©·Î¼ºñ½º¸¦ ±¸ÃàÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù. ¿ÀǼҽº µµ±¸¿Í ½ºÇÁ¸µ ±â¹Ý ÀÚ¹Ù Äڵ带 ½Ç½À À§ÁÖ·Î ¼³¸íÇϸç, ÃÖ¼ÒÇÑÀÇ ½Ã°£ ÅõÀÚ¸¸À¸·Îµµ ´Ù¾çÇÏ°í ³ÐÀº ¹üÀ§ÀÇ Áö½ÄÀ» ÇнÀÇÒ ¼ö ÀÖ°Ô²û È¿À²ÀûÀ¸·Î ±¸¼ºµÅ ÀÖ´Ù.
°³Á¤ÆÇÀº ½ºÇÁ¸µ ºÎÆ®¿Í ´Ù¾çÇÑ ¿ÀǼҽº µµ±¸ÀÇ ÃֽŠ¹öÀüÀ» »ç¿ëÇØ º¸´Ù ½±°í ºü¸£°Ô ÇнÀÇÒ ¼ö ÀÖµµ·Ï ³»¿ëÀ» ¾÷µ¥ÀÌÆ®ÇßÀ¸¸ç, ½ºÇÁ¸µ ±â¹Ý ¸¶ÀÌÅ©·Î¼ºñ½º¸¦ ³×ÀÌƼºê ÄÄÆÄÀÏÇÏ´Â ¹æ¹ý, À©µµ¿ì WSL 2 ȯ°æ ¼³Á¤ ¹æ¹ý, Ç︧ 3 »ç¿ë ¹æ¹ý µîÀÇ ³»¿ëÀ» Ãß°¡Çß´Ù.
ÃâÆÇ»ç ¼Æò
¢Â ÀÌ Ã¥¿¡¼ ´Ù·ç´Â ³»¿ë ¢Â
¡ß ½ºÇÁ¸µ ºÎÆ®¸¦ »ç¿ëÇÑ ¸®¾×Ƽºê ¸¶ÀÌÅ©·Î¼ºñ½º ±¸Ãà
¡ß ½ºÇÁ¸µ Ŭ¶ó¿ìµå¸¦ »ç¿ëÇØ º¹¿ø·Â ¹× È®À强 ÀÖ´Â ¸¶ÀÌÅ©·Î¼ºñ½º °³¹ß
¡ß ½ºÇÁ¸µ ½ÃÅ¥¸®Æ¼ ¹× OAuth 2.1/OIDC¸¦ »ç¿ëÇØ °ø°³ API º¸È£
¡ß µµÄ¿¸¦ »ç¿ëÇØ °³¹ß, Å×½ºÆ® ȯ°æ°ú »ó¿ë ȯ°æ »çÀÌÀÇ °ÝÂ÷ ÇؼÒ
¡ß Äí¹ö³×Ƽ½º¸¦ »ç¿ëÇÑ ¸¶ÀÌÅ©·Î¼ºñ½º ¹èÆ÷ ¹× °ü¸®
¡ß À̽ºÆ¼¿À¸¦ »ç¿ëÇÑ º¸¾È¼º, °üÂû °¡´É¼º, Æ®·¡ÇÈ °ü¸® ÆíÀǼº Çâ»ó
¡ß JUnit, Testcontainers, ±×·¡µé(Gradle), ¹è½Ã(Bash)¸¦ »ç¿ëÇØ ÀÚµ¿ÈµÈ ¸¶ÀÌÅ©·Î¼ºñ½º Å×½ºÆ® ÀÛ¼º ¹× ½ÇÇà
¢Â ÀÌ Ã¥ÀÇ ´ë»ó µ¶ÀÚ ¢Â
Äí¹ö³×Ƽ½º¸¦ ÄÁÅ×ÀÌ³Ê ¿ÀÄɽºÆ®·¹ÀÌÅÍ(container orchestrator)·Î »ç¿ëÇÏ°í À̽ºÆ¼¿À¸¦ ¼ºñ½º ¸Þ½Ã(service mesh)·Î »ç¿ëÇØ, ±â¹Ý ¸¶ÀÌÅ©·Î¼ºñ½º ȯ°æÀ» ±¸ÃàÇÏ°í ¿ÂÇÁ·¹¹Ì½º(onpremise)³ª Ŭ¶ó¿ìµå·Î ¹èÆ÷ÇÏ´Â ¹æ¹ýÀ» ¹è¿ì·Á´Â ÀÚ¹Ù, ½ºÇÁ¸µ °³¹ßÀÚ¿Í ¾ÆÅ°ÅØÆ®¸¦ À§ÇÑ Ã¥ÀÌ´Ù. ¸¶ÀÌÅ©·Î¼ºñ½º ¾ÆÅ°ÅØó(microservice architecture)¿¡ Àͼ÷ÇÏÁö ¾Ê´õ¶óµµ ¹®Á¦¾øÀÌ ÀÐÀ» ¼ö ÀÖ´Ù.
¢Â ÀÌ Ã¥ÀÇ ±¸¼º ¢Â
1Àå, ¡®¸¶ÀÌÅ©·Î¼ºñ½º ¼Ò°³¡¯¿¡¼´Â ÀÌ Ã¥ÀÇ ±âº» ÀüÁ¦ÀÎ ¸¶ÀÌÅ©·Î¼ºñ½ºÀÇ Çʼö °³³ä°ú µðÀÚÀÎ ÆÐÅÏÀ» ¼³¸íÇÑ´Ù.
2Àå, ¡®½ºÇÁ¸µ ºÎÆ® ¼Ò°³¡¯¿¡¼´Â ½ºÇÁ¸µ ºÎÆ®¿Í Ã¥ÀÇ ¾ÕºÎºÐ¿¡¼ »ç¿ëÇÒ ¿ÀǼҽº ÇÁ·ÎÁ§Æ®¸¦ ¼Ò°³ÇÑ´Ù. RESTful API °³¹ß¿¡ »ç¿ëÇÏ´Â ½ºÇÁ¸µ À¥Ç÷°½º, OpenAPI ±â¹Ý API ¹®¼¸¦ »ý¼ºÇÏ´Â springdoc-openapi, SQL ¹× NoSQL µ¥ÀÌÅͺ£À̽º¿¡ µ¥ÀÌÅ͸¦ ÀúÀåÇÒ ¶§ »ç¿ëÇÏ´Â ½ºÇÁ¸µ µ¥ÀÌÅÍ, ¸Þ½ÃÁö ±â¹ÝÀÇ ¸¶ÀÌÅ©·Î¼ºñ½º¿¡¼ »ç¿ëÇÏ´Â ½ºÇÁ¸µ Ŭ¶ó¿ìµå ½ºÆ®¸², ¸¶ÀÌÅ©·Î¼ºñ½º¸¦ ÄÁÅ×À̳ʷΠ½ÇÇàÇÏ´Â µµÄ¿ µîÀ» ¼Ò°³ÇÑ´Ù.
3Àå, ¡¯°øÁ¶ ¸¶ÀÌÅ©·Î¼ºñ½º ÁýÇÕ¡¯¿¡¼´Â »ý¼º °øÁ¶ ¸¶ÀÌÅ©·Î¼ºñ½º ÁýÇÕÀ» »ý¼ºÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù. ½ºÇÁ¸µ À̴ϼȶóÀÌÀú(Spring Initializr)¸¦ »ç¿ëÇØ ½ºÇÁ¸µ ÇÁ·¹ÀÓ¿öÅ© 5.3 ¹× ½ºÇÁ¸µ ºÎÆ® 2.5 ±â¹ÝÀÇ °ñ°Ý ÇÁ·ÎÁ§Æ®¸¦ »ý¼ºÇÏ°í ¼¼ °¡Áö ÇÙ½É ¼ºñ½º¸¦ ¸¸µç´Ù. ¶ÇÇÑ ¼¼ °¡Áö ÇÙ½É ¼ºñ½º¿¡¼ ¾òÀº Á¤º¸¸¦ Áý°èÇØ º¹ÇÕÀû °á°ú¸¦ ¸¸µå´Â º¹ÇÕ ¼ºñ½ºµµ ¸¸µç´Ù. 3ÀåÀÇ µÞºÎºÐ¿¡¼± ½ºÇÁ¸µ À¥Ç÷°½º(Spring WebFlux)¸¦ ±â¹ÝÀ¸·Î ±âº»ÀûÀÎ RESTful API¸¦ Ãß°¡ÇÏ´Â ¹æ¹ýÀ» ¹è¿ì¸ç, 4Àå¿¡¼´Â ´õ ¸¹Àº ±â´ÉÀ» ¸¶ÀÌÅ©·Î¼ºñ½º¿¡ Ãß°¡ÇÑ´Ù.
4Àå, ¡®µµÄ¿¸¦ »ç¿ëÇÑ ¸¶ÀÌÅ©·Î¼ºñ½º ¹èÆ÷¡¯¿¡¼´Â µµÄ¿¸¦ »ç¿ëÇØ ¸¶ÀÌÅ©·Î¼ºñ½º¸¦ ¹èÆ÷ÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù. DockerfileÀ̳ª docker-compose ÆÄÀÏÀ» ÀÌ¿ëÇØ Àüü ¸¶ÀÌÅ©·Î¼ºñ½º ȯ°æÀ» ÇϳªÀÇ Ä¿¸Çµå·Î ½ÃÀÛÇÏ´Â ¹æ¹ýÀ» ¹è¿ì°í, ¿©·¯ ½ºÇÁ¸µ ÇÁ·ÎÇÊÀ» »ç¿ëÇØ µµÄ¿¿ë ±¸¼º°ú ÀÌ¿ÜÀÇ ±¸¼ºÀ» ºÐ¸®Çؼ ó¸®ÇÏ´Â ¹æ¹ýµµ »ìÆ캻´Ù.
5Àå, ¡®OpenAPI¸¦ »ç¿ëÇÑ API ¹®¼È¡¯¿¡¼´Â OpenAPI¸¦ »ç¿ëÇØ, ¸¶ÀÌÅ©·Î¼ºñ½º¿¡¼ °ø°³ÇÏ´Â API¸¦ ºü¸£°Ô ¹®¼ÈÇÏ´Â ¹æ¹ýÀ» ¹è¿î´Ù. ¼ºñ½º Äڵ忡 ºÙÀÎ ¾Ö³ëÅ×À̼Ç(annotation)À» °Ë»çÇØ OpenAPI ±â¹ÝÀÇ API ¹®¼¸¦ »ý¼ºÇÏ´Â springdoc-openapi¿Í À¥ ºê¶ó¿ìÀú¿¡¼ API¸¦ Å×½ºÆ®ÇÏ´Â ½º¿þ°Å UI(Swagger UI)¸¦ »ç¿ëÇغ»´Ù.
6Àå, ¡®¿µ¼Ó¼º Ãß°¡¡¯¿¡¼´Â ¸¶ÀÌÅ©·Î¼ºñ½º µ¥ÀÌÅÍ¿¡ ¿µ¼Ó¼ºÀ» ºÎ¿©ÇÏ´Â ¹æ¹ýÀ» ¹è¿î´Ù. ½ºÇÁ¸µ µ¥ÀÌÅ͸¦ »ç¿ëÇØ µÎ ÇÙ½É ¸¶ÀÌÅ©·Î¼ºñ½ºÀÇ µ¥ÀÌÅ͸¦ ¹®¼ µ¥ÀÌÅͺ£À̽ºÀÎ MongoDB¿¡ ÀúÀå ¹× Á¢±ÙÇÏ°Ô ÇÏ°í, ³ª¸ÓÁö ¸¶ÀÌÅ©·Î¼ºñ½ºÀÇ µ¥ÀÌÅÍ´Â °ü°èÇü µ¥ÀÌÅͺ£À̽ºÀÎ MySQL¿¡ µÎ°í Á¢±ÙÇÏ°Ô ÇÑ´Ù. ÅëÇÕ Å×½ºÆ®¸¦ ½ÇÇàÇÒ ¶§´Â Testcontainers¸¦ »ç¿ëÇØ µ¥ÀÌÅͺ£À̽º¸¦ ½ÃÀÛÇÑ´Ù.
7Àå, ¡®¸®¾×Ƽºê ¸¶ÀÌÅ©·Î¼ºñ½º °³¹ß¡¯¿¡¼´Â ¸®¾×Ƽºê(reactive) ¹æ½ÄÀ» »ç¿ëÇØ¾ß ÇÏ´Â ÀÌÀ¯¿Í »ç¿ë ½Ã±â, Á¾´Ü °£(end-to-end) ¸®¾×Ƽºê ¼ºñ½º¸¦ °³¹ßÇÏ´Â ¹æ¹ýÀ» ¹è¿î´Ù. ³íºí·ÎÅ·(non-blocking) µ¿±â ¹æ½Ä RESTful API, À̺¥Æ® ±â¹Ý ºñµ¿±â ¹æ½Ä ¼ºñ½º¸¦ °³¹ßÇÏ°í Å×½ºÆ®ÇÏ´Â ¹æ¹ýµµ ¹è¿î´Ù. ¶ÇÇÑ MongoDB¿ë ¸®¾×Ƽºê ³íºí·ÎÅ· µå¶óÀ̹ö »ç¿ë ¹æ¹ý°ú ÀϹÝÀûÀÎ MySQL¿ë ºí·ÎÅ· ÄÚµå »ç¿ë ¹æ¹ýÀ» ¹è¿î´Ù.
8Àå, ¡®½ºÇÁ¸µ Ŭ¶ó¿ìµå ¼Ò°³¡¯¿¡¼´Â ÀÌ Ã¥¿¡¼ »ç¿ëÇÏ´Â ½ºÇÁ¸µ Ŭ¶ó¿ìµå ¹× ½ºÇÁ¸µ Ŭ¶ó¿ìµå ÄÄÆ÷³ÍÆ®¸¦ ¼Ò°³ÇÑ´Ù.
9Àå, ¡®³ÝÇø¯½º À¯·¹Ä«¸¦ »ç¿ëÇÑ ¼ºñ½º °Ë»ö¡¯¿¡¼´Â ½ºÇÁ¸µ Ŭ¶ó¿ìµå¿¡ ³ÝÇø¯½º À¯·¹Ä«(Netflix Eureka)¸¦ »ç¿ëÇØ ¼ºñ½º °Ë»ö ±â´ÉÀ» Ãß°¡ÇÏ´Â ¹æ¹ýÀ» ¾Ë¾Æº»´Ù. Áï ³ÝÇø¯½º À¯·¹Ä« ±â¹ÝÀÇ ¼ºñ½º °Ë»ö ¼¹ö¸¦ ½Ã½ºÅÛ È¯°æ¿¡ Ãß°¡ÇÏ°í, ½ºÇÁ¸µ Ŭ¶ó¿ìµå ·Îµå ¹ë·±¼(LoadBalancer)¸¦ »ç¿ëÇØ ´Ù¸¥ ¸¶ÀÌÅ©·Î¼ºñ½º¸¦ ãµµ·Ï ¸¶ÀÌÅ©·Î¼ºñ½º¸¦ ±¸¼ºÇÑ´Ù. ¶ÇÇÑ ÀÚµ¿À¸·Î ¸¶ÀÌÅ©·Î¼ºñ½º¸¦ µî·ÏÇÏ´Â ¹æ¹ý°ú ½ºÇÁ¸µ Ŭ¶ó¿ìµå ·Îµå ¹ë·±¼¸¦ ÅëÇØ Àü´ÞµÈ Æ®·¡ÇÈÀ» È°¼ºÈµÈ »õ ÀνºÅϽº·Î ÀÚµ¿ ·Îµå ¹ë·±½ÌÇÏ´Â ¹æ¹ýÀ» ¹è¿î´Ù.
10Àå, ¡®½ºÇÁ¸µ Ŭ¶ó¿ìµå °ÔÀÌÆ®¿þÀ̸¦ ¿¡Áö ¼¹ö·Î »ç¿ë¡¯¿¡¼´Â ½ºÇÁ¸µ Ŭ¶ó¿ìµå °ÔÀÌÆ®¿þÀ̸¦ »ç¿ëÇØ ¸¶ÀÌÅ©·Î¼ºñ½º¸¦ ¿¡Áö ¼¹ö(edge server) µÚ·Î ¼û±â°í, °ñ¶ó³½ ÀϺΠAPI¸¸ ¿ÜºÎ ¼ÒºñÀÚ¿¡°Ô °ø°³ÇÏ´Â ¹æ¹ýÀ» ¹è¿î´Ù. ¶ÇÇÑ ¿ÜºÎ ¼ÒºñÀÚ°¡ º¼ ¼ö ¾øµµ·Ï ¸¶ÀÌÅ©·Î¼ºñ½º ³»ºÎÀÇ º¹À⼺À» ¼û±â´Â ¹æ¹ýÀ» »ìÆ캻´Ù. Áï ½ºÇÁ¸µ Ŭ¶ó¿ìµå °ÔÀÌÆ®¿þÀÌ ±â¹ÝÀÇ ¿¡Áö ¼¹ö¸¦ ½Ã½ºÅÛ È¯°æ¿¡ Ãß°¡ÇÏ°í °ø°³ API¸¸ ³ëÃâÇϵµ·Ï ¿¡Áö ¼¹ö¸¦ ±¸¼ºÇÑ´Ù.
11Àå, ¡®API Á¢±Ù º¸¾È¡¯¿¡¼´Â OAuth 2.0 ¹× OpenID Connect¸¦ »ç¿ëÇØ °ø°³ API¸¦ º¸È£ÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù. Spring Authorization Server ±â¹ÝÀÇ OAuth 2.0 ±ÇÇÑ ¼¹ö¸¦ ½Ã½ºÅÛ È¯°æ¿¡ Ãß°¡ÇÏ´Â ¹æ¹ý°ú ÇØ´ç ±ÇÇÑ ¼¹ö¿¡¼ ¹ß±ÞÇÑ À¯È¿ÇÑ Á¢±Ù ÅäÅ«À» °¡Áø Ŭ¶óÀ̾ðÆ®¸¸ ¿¡Áö ¼¹ö¿Í º¹ÇÕ ¼ºñ½º¿¡ Á¢±ÙÇÒ ¼ö ÀÖµµ·Ï ±¸¼ºÇÏ´Â ¹æ¹ýÀ» ¹è¿î´Ù. ¶ÇÇÑ ¿¡Áö ¼¹ö¸¦ ÅëÇØ ±ÇÇÑ ºÎ¿© ¼¹ö¸¦ °ø°³ÇÏ°í HTTPS¸¦ »ç¿ëÇØ ¿ÜºÎ ¼ÒºñÀÚ¿ÍÀÇ Åë½ÅÀ» º¸È£ÇÏ´Â ¹æ¹ýÀ» ¾Ë¾Æº»´Ù. ¸¶Áö¸·À¸·Î, ³»ºÎ OAuth 2.0 ÀÎÁõ ¼¹ö¸¦ ¿ÜºÎ OpenID Connect °ø±ÞÀÚÀÎ Auth0·Î ±³Ã¼ÇÏ´Â ¹æ¹ýÀ» ¹è¿î´Ù.
12Àå, ¡®±¸¼º Áß¾ÓÈ¡¯¿¡¼´Â ÇϳªÀÇ Áß¾Ó ±¸¼º ÀúÀå¼Ò¿¡¼ ¸ðµç ¸¶ÀÌÅ©·Î¼ºñ½ºÀÇ ±¸¼º ÆÄÀÏÀ» °¡Á®¿À°í, ±¸¼º ¼¹ö¸¦ »ç¿ëÇØ ·±Å¸ÀÓ(runtime)¿¡ ¸¶ÀÌÅ©·Î¼ºñ½º·Î ±¸¼ºÀ» ¹èÆ÷ÇÏ´Â ¹æ¹ýÀ» ¹è¿î´Ù. ¶ÇÇÑ ½Ã½ºÅÛ È¯°æ¿¡ ½ºÇÁ¸µ Ŭ¶ó¿ìµå ÄÁÇÇ±× ¼¹ö(Spring Cloud Config Server)¸¦ Ãß°¡ÇÏ°í ½ºÇÁ¸µ ÄÁÇÇ±× ¼¹ö(Spring Config Server)¿¡¼ ±¸¼ºÀ» °¡Á®¿Àµµ·Ï ¸¶ÀÌÅ©·Î¼ºñ½º¸¦ ±¸¼ºÇÏ´Â ¹æ¹ýÀ» »ìÆ캻´Ù.
13Àå, ¡®Resilience4j¸¦ »ç¿ëÇÑ º¹¿ø·Â °³¼±¡¯¿¡¼´Â Resilience4jÀÇ ±â´ÉÀ» ÀÌ¿ëÇØ ¿¬¼â Àå¾Ö(chain of failure) °°Àº ¾ÈƼ ÆÐÅÏ(anti-pattern)À» ¹æÁöÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇϸç, º¹ÇÕ ¼ºñ½º¿¡ Àç½Ãµµ ¸ÞÄ¿´ÏÁò°ú ¼Å¶ ºê·¹ÀÌÄ¿(circuit breaker)¸¦ Ãß°¡ÇÏ´Â ¹æ¹ýÀ» ¹è¿î´Ù. ¼Å¶ÀÌ ¿·Á ÀÖÀ» ¶§ ºü¸¥ ½ÇÆÐ ·ÎÁ÷ÀÌ ÀÛµ¿Çϵµ·Ï ¼Å¶ ºê·¹ÀÌÄ¿¸¦ ±¸¼ºÇÏ´Â ¹æ¹ý°ú Æú¹é ¸Þ¼µå(fallback method)¸¦ »ç¿ëÇØ ÃÖÀûÈµÈ ÀÀ´äÀ» »ý¼ºÇÏ´Â ¹æ¹ýµµ ¹è¿î´Ù.
14Àå, ¡®ºÐ»ê ÃßÀû¡¯¿¡¼´Â ÁýŲ(Zipkin)À» »ç¿ëÇØ ÃßÀû Á¤º¸¸¦ ¼öÁýÇÏ°í ½Ã°¢ÈÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù. ¶ÇÇÑ ½ºÇÁ¸µ Ŭ¶ó¿ìµå ½½·ç½º(Spring Cloud Sleuth)·Î ¿äû¿¡ ÃßÀû ID¸¦ Ãß°¡ÇØ °øÁ¶ ¸¶ÀÌÅ©·Î¼ºñ½º °£ÀÇ ¿äû üÀÎÀ» ½Ã°¢ÈÇÏ´Â ¹æ¹ýÀ» ¹è¿î´Ù.
15Àå, ¡®Äí¹ö³×Ƽ½º ¼Ò°³¡¯¿¡¼´Â Äí¹ö³×Ƽ½ºÀÇ ÇÙ½É °³³ä°ú »ùÇà µðÇ÷ÎÀ̸ÕÆ®(sample deployment) »ý¼º ¹æ¹ýÀ» ¼³¸íÇÑ´Ù. ¹Ì´ÏÅ¥ºê(Minikube)¸¦ »ç¿ëÇØ °³¹ß ¹× Å×½ºÆ® ¿ëµµÀÇ Äí¹ö³×Ƽ½º¸¦ ·ÎÄÿ¡ ¼³Ä¡ÇÏ´Â ¹æ¹ýÀ» ¹è¿î´Ù.
16Àå, ¡®Äí¹ö³×Ƽ½º¿¡ ¸¶ÀÌÅ©·Î¼ºñ½º ¹èÆ÷¡¯¿¡¼´Â Äí¹ö³×Ƽ½º¿¡ ¸¶ÀÌÅ©·Î¼ºñ½º¸¦ ¹èÆ÷ÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇϸç, Ç︧(Helm)À» »ç¿ëÇØ Äí¹ö³×Ƽ½º¿¡ ¹èÆ÷ÇÒ ¸¶ÀÌÅ©·Î¼ºñ½º¸¦ ÆÐŰ¡ÇÏ°í ±¸¼ºÇÏ´Â ¹æ¹ýÀ» ¹è¿î´Ù. Å×½ºÆ® ȯ°æ, »ó¿ë ȯ°æ µî ´Ù¾çÇÑ ·±Å¸ÀÓ È¯°æ¿¡ Ç︧À» »ç¿ëÇØ ¸¶ÀÌÅ©·Î¼ºñ½º¸¦ ¹èÆ÷ÇÑ´Ù. ¶ÇÇÑ Äí¹ö³×Ƽ½º ¼ºñ½º °´Ã¼¿Í kube-proxy ·±Å¸ÀÓ ÄÄÆ÷³ÍÆ®¸¦ ±â¹ÝÀ¸·Î ÇÏ´Â, Äí¹ö³×Ƽ½º¿¡ ³»ÀåµÈ ¼ºñ½º °Ë»ö ±â´ÉÀ¸·Î ³ÝÇø¯½º À¯·¹Ä«¸¦ ´ëüÇÏ´Â ¹æ¹ýÀ» ¹è¿î´Ù.
17Àå, ¡®Äí¹ö³×Ƽ½º·Î ±âÁ¸ ½Ã½ºÅÛ È¯°æ ´ëü¡¯¿¡¼´Â ¾Õ¿¡¼ ¼Ò°³ÇÑ ½ºÇÁ¸µ Ŭ¶ó¿ìµå ¼ºñ½º¸¦ Äí¹ö³×Ƽ½º ±â´ÉÀ¸·Î ´ëüÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù. ½ºÇÁ¸µ Ŭ¶ó¿ìµå ÄÁÇÇ±× ¼¹ö¸¦ Äí¹ö³×Ƽ½º ½ÃÅ©¸´°ú ÄÁÇDZ׸Ê(ConfigMap)À¸·Î ´ëüÇÏ´Â ÀÌÀ¯¿Í ¹æ¹ýÀ» ¹è¿î´Ù. ¶ÇÇÑ ½ºÇÁ¸µ Ŭ¶ó¿ìµå °ÔÀÌÆ®¿þÀ̸¦ Äí¹ö³×Ƽ½º Àα׷¹½º(Kubernetes Ingress) °´Ã¼·Î ´ëüÇÏ´Â ¹æ¹ý°ú cert-manager¸¦ »ç¿ëÇØ ¿ÜºÎ HTTPS ¿£µåÆ÷ÀÎÆ®¸¦ À§ÇÑ ÀÎÁõ¼¸¦ ÀÚµ¿À¸·Î ÇÁ·ÎºñÀú´×ÇÏ°í °»½ÅÇÏ´Â ¹æ¹ýÀ» ¹è¿î´Ù.
18Àå, ¡®¼ºñ½º ¸Þ½Ã¸¦ »ç¿ëÇØ °üÂû °¡´É¼º ¹× °ü¸® ÆíÀǼº °³¼±¡¯¿¡¼´Â ¼ºñ½º ¸Þ½Ã °³³äÀ» ¼Ò°³ÇÏ°í À̽ºÆ¼¿À¸¦ »ç¿ëÇØ Äí¹ö³×Ƽ½º¿¡ ¼ºñ½º ¸Þ½Ã¸¦ ±¸ÇöÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù. ¼ºñ½º ¸Þ½Ã¸¦ »ç¿ëÇØ ¸¶ÀÌÅ©·Î¼ºñ½º ȯ°æÀÇ º¹¿ø·Â, º¸¾È, Æ®·¡ÇÈ °ü¸®, °üÂû °¡´É¼ºÀ» Çâ»óÇÏ´Â ¹æ¹ýÀ» ¹è¿î´Ù.
19Àå, ¡®EFK ½ºÅÃÀ» »ç¿ëÇÑ ·Î±ë Áß¾ÓÈ¡¯¿¡¼´Â ÀÏ·¡½ºÆ½¼Ä¡(Elasticsearch), Ç÷ç¾ðƼµå(Fluentd), Å°¹Ù³ª(Kibana)¸¦ »ç¿ëÇØ ¸¶ÀÌÅ©·Î¼ºñ½ºÀÇ ·Î±× ½ºÆ®¸²(log stream)À» ¼öÁý, ÀúÀå, ½Ã°¢ÈÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù. ¹Ì´ÏÅ¥ºê¿¡ EFK ½ºÅÃÀ» ¹èÆ÷ÇÏ´Â ¹æ¹ý°ú EFK ½ºÅÃÀ¸·Î ¼öÁýÇÑ ·Î±× ·¹Äڵ带 ºÐ¼®ÇÏ´Â ¹æ¹ý, ¿©·¯ ¸¶ÀÌÅ©·Î¼ºñ½º°¡ °ü·ÃµÈ ¿äûÀ» ó¸®ÇÏ¸é¼ ¹ß»ýÇÏ´Â ¸¶ÀÌÅ©·Î¼ºñ½º ·Î±× Ãâ·ÂÀ» ã´Â ¹æ¹ýÀ» ¹è¿î´Ù. ¶ÇÇÑ EFK ½ºÅÃÀ» »ç¿ëÇØ ±Ùº» ¿øÀÎ ºÐ¼®À» ¼öÇàÇÏ´Â ¹æ¹ýÀ» ¾Ë¾Æº»´Ù.
20Àå, ¡®¸¶ÀÌÅ©·Î¼ºñ½º ¸ð´ÏÅ͸µ¡¯¿¡¼´Â ÇÁ·Î¸ÞÅ׿콺¿Í ±×¶óÆijª¸¦ ÀÌ¿ëÇØ Äí¹ö³×Ƽ½º¿¡ ¹èÆ÷µÈ ¸¶ÀÌÅ©·Î¼ºñ½º¸¦ ¸ð´ÏÅ͸µÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù. ±âÁ¸ ±×¶óÆijª ´ë½Ãº¸µå¸¦ È°¿ëÇØ ´Ù¾çÇÑ À¯ÇüÀÇ ¸ÞÆ®¸¯À» ¸ð´ÏÅ͸µÇÏ´Â ¹æ¹ý°ú Á÷Á¢ ´ë½Ãº¸µå¸¦ ¸¸µå´Â ¹æ¹ýÀ» ¹è¿î´Ù. ¸¶Áö¸·À¸·Î, ±×¶óÆijª¿¡¼ ƯÁ¤ ¸ÞÆ®¸¯¿¡ ÀÓ°ì°ªÀ» ±¸¼ºÇÏ°í, À̸¦ ÃÊ°úÇϸé À̸ÞÀÏÀ» Àü¼ÛÇÏ´Â °æ°í¸¦ »ý¼ºÇÏ´Â ¹æ¹ýÀ» ¹è¿î´Ù.
21Àå, ¡®¸ÆOS¿ë ¼³Ä¡ Áöħ¡¯¿¡¼´Â ¸ÆOS(MacOS)¿¡ ÀÌ Ã¥¿¡¼ »ç¿ëÇÏ´Â µµ±¸¸¦ ¼³Ä¡ÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù.
22Àå, ¡®À©µµ¿ì¿ë ¼³Ä¡ Áöħ¡¯¿¡¼´Â À©µµ¿ì PC¿¡ ¸®´ª½º¿ë À©µµ¿ì ÇÏÀ§ ½Ã½ºÅÛ v2(WSL 2, Windows Subsystem for Linux 2)¸¦ »ç¿ëÇØ ÀÌ Ã¥¿¡¼ »ç¿ëÇÏ´Â µµ±¸¸¦ ¼³Ä¡ÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù.
23Àå, ¡®ÀÚ¹Ù ¸¶ÀÌÅ©·Î¼ºñ½ºÀÇ ³×ÀÌƼºê ÄÄÆÄÀÏ¡¯¿¡¼´Â ½ºÇÁ¸µ ³×ÀÌƼºê(Spring Native) º£Å¸ ¹öÀü°ú ±×¶öVM ³×ÀÌƼºê À̹ÌÁö ÄÄÆÄÀÏ·¯(GraalVM native-image compiler)¸¦ »ç¿ëÇØ ½ºÇÁ¸µ ±â¹Ý ¸¶ÀÌÅ©·Î¼ºñ½º¸¦ ³×ÀÌƼºê ÄÚµå·Î ÄÄÆÄÀÏÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù. ÀÚ¹Ù VM(Java Virtual Machine) ±â¹Ý ¸¶ÀÌÅ©·Î¼ºñ½ºº¸´Ù ½ÃÀÛ ¼Óµµ°¡ ¿ùµîÈ÷ ºü¸¥ ¸¶ÀÌÅ©·Î¼ºñ½º¸¦ »ý¼ºÇÒ ¼ö ÀÖ´Ù.
°¢ ÀåÀÇ ¸»¹Ì¿¡´Â ÇØ´ç Àå¿¡¼ ´Ù·ç´Â ³»¿ëÀ» Á¤¸®ÇÏ´Â µ¥ µµ¿òÀÌ µÇ´Â °£´ÜÇÑ Áú¹®ÀÌ ¸î °³¾¿ ÀÖ´Ù. Áú¹®¿¡ ´ëÇÑ ´äÀº ±êÇãºê ÀúÀå¼Ò¿¡ ÀÖ´Â Assessments ÆÄÀÏ¿¡ ÀÖ´Ù.
¢Â ¿Å±äÀÌÀÇ ¸» ¢Â
½Ã½ºÅÛ ÅëÇÕÀ̳ª ¿£ÅÍÇÁ¶óÀÌÁî ¾÷°è¿¡¼ ÀÏÇÏ´Â ÀÚ¹Ù °³¹ßÀÚ¶ó¸é °©ÀÛ½º·´°Ô ¹Ð¾î´ÚÄ£ ¸¶ÀÌÅ©·Î¼ºñ½º ¿Ç³°ú À̸¦ º¸Á¶ÇÏ´Â µµÄ¿, Äí¹ö³×Ƽ½º µî ÄÁÅ×ÀÌ³Ê ±â¹Ý ȯ°æÀÇ Àα⿡ ºÎ´ã°¨À» ´À³¥ ¼ö¹Û¿¡ ¾øÀ» °ÍÀÌ´Ù. Á» ´õ À¯¿¬ÇÏ°í È®À强 ÀÖ´Â ¼ºñ½º¸¦ À§ÇÑ ½Ã´ëÀûÀÎ ¿ä±¸¿¡ µû¸¥ °ÍÀ̶ó°ï ÇÏÁö¸¸, °³¹ß ÀÚü°¡ ¾Æ´Ñ ±â¹Ý ȯ°æÀÇ º¯È¿¡ µû¶ó ¸Â´Ú¶ß¸° ±Þ°ÝÇÑ ÇнÀ °î¼±Àº °³¹ßÀÚ¿¡°Ô ±×¸® ´Þ°¡¿î »óȲÀº ¾Æ´Ï±â ¶§¹®ÀÌ´Ù.
ÀÌ·± »õ·Î¿î º¯È¿¡ µû¸¥ ÇнÀÀÌ ÇÊ¿äÇÏ´Ù°í ´À³¤´Ù¸é ÀÌ Ã¥ÀÌ ÁÁÀº ¼±ÅÃÀÌ µÉ °ÍÀÌ´Ù. °³¹ßÀÚ¿Í ¾ÆÅ°ÅØÆ®°¡ ÆíÇÏ°Ô º¼ ¼ö ÀÖµµ·Ï À̷аú ½Ç½ÀÀ» ÀûÀýÈ÷ Á¶ÇÕÇß°í, ½ºÇÁ¸µ ºÎÆ®¿Í ½ºÇÁ¸µ Ŭ¶ó¿ìµå¸¦ ÀÌ¿ëÇØ ¸¶ÀÌÅ©·Î¼ºñ½º¸¦ ±¸ÃàÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù. ¶ÇÇÑ ´Ù¾çÇÑ ¿ÀǼҽº µµ±¸¸¦ µµÀÔÇØ¾ß ÇÏ´Â ÀÌÀ¯¿Í ½ºÇÁ¸µ ¾ÖÇø®ÄÉÀ̼ǰúÀÇ ¿¬µ¿ ¹æ¹ýÀ» Ä£ÀýÇÏ°Ô ¾Ë·ÁÁØ´Ù. ³ÐÀº ¹üÀ§¸¦ ´Ù·çÁö¸¸ °¢ ±â¼ú ¿ä¼ÒÀÇ ¼Ò°³º¸´Ù´Â ¼Ò½º ÄÚµå Áß½ÉÀ¸·Î ½Ç¹«¿¡ ÇÊ¿äÇÑ ¹üÀ§¿¡ ¸ÂÃç ÇÙ½ÉÀ» Àü´ÞÇϴ åÀ̶ó°í ¸»ÇÒ ¼ö ÀÖ´Ù.
̵̧ȍ
½ºÇÁ¸µ ºÎÆ®¿Í ½ºÇÁ¸µ Ŭ¶ó¿ìµå¸¦ »ç¿ëÇØ »ó¿ë ¸¶ÀÌÅ©·Î¼ºñ½º¸¦ ±¸ÃàÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇϴ åÀÌ´Ù. ³»°¡ óÀ½ ¸¶ÀÌÅ©·Î¼ºñ½º ÇнÀÀ» ½ÃÀÛÇÑ 8³â Àü¿¡ ¹Ù·Î ÀÌ·± Ã¥À» ã¾Æ Çì¸Ì´Ù.
³ª´Â °øÁ¶ ¸¶ÀÌÅ©·Î¼ºñ½º ȯ°æÀ» °³¹ß, Å×½ºÆ®, ¹èÆ÷, °ü¸®ÇÒ ¶§ »ç¿ëÇÏ´Â ¿ÀǼҽº ¼ÒÇÁÆ®¿þ¾î¸¦ ÇнÀÇÏ°í Àͼ÷ÇØÁø ÈÄ¿¡ ÀÌ Ã¥À» ½è´Ù.
ÁÖ·Î ½ºÇÁ¸µ ºÎÆ®, ½ºÇÁ¸µ Ŭ¶ó¿ìµå, µµÄ¿, Äí¹ö³×Ƽ½º, À̽ºÆ¼¿À, EFK ½ºÅÃ(Elasticsearch, Fluentd, Kibana stack), ÇÁ·Î¸ÞÅ׿콺(Prometheus), ±×¶óÆijª(Grafana)¿¡ ´ëÇØ ´Ù·é´Ù. ÀÌ·± ¿ÀǼҽº µµ±¸´Â °³º°ÀûÀ¸·Î´Â ÈǸ¢ÇÏ°Ô ÀÛµ¿ÇÏÁö¸¸, ¿©·¯ µµ±¸¸¦ ¾î¶² ¹æ½ÄÀ¸·Î Á¶ÇÕÇÏ´Â °Ô ÁÁÀ»Áö ¾Ë¾Æ³»±â ¾î·Æ´Ù. ¾î¶² ¿µ¿ª¿¡¼´Â »óÈ£ º¸¿ÏÀûÀÌÁö¸¸ ´Ù¸¥ ¿µ¿ª¿¡¼´Â °ãÃļ ƯÁ¤ »óȲ¿¡ ¸Â´Â ¸íÈ®ÇÑ Á¶ÇÕÀÌ ÀÖ´Â °ÍÀÌ ¾Æ´Ï±â ¶§¹®ÀÌ´Ù.
ÀÌ·± ¿ÀǼҽº µµ±¸¸¦ ÇÔ²² »ç¿ëÇÏ´Â ¹æ¹ýÀ» ½Ç½ÀÀ» ¹ÙÅÁÀ¸·Î ´Ü°èº°·Î ¼³¸íÇÑ´Ù. ³»°¡ ¸¶ÀÌÅ©·Î¼ºñ½º ÇнÀÀ» ½ÃÀÛÇÑ 8³â Àü¿¡ ÀÌ·± Ã¥À» ã±ä ÇßÁö¸¸ ¿ÀǼҽº µµ±¸´Â ¾÷µ¥ÀÌÆ®µÈ ¹öÀüÀ» »ç¿ëÇÑ´Ù.
¸ñÂ÷
1ºÎ. ½ºÇÁ¸µ ºÎÆ®¸¦ »ç¿ëÇÑ ¸¶ÀÌÅ©·Î¼ºñ½º °³¹ß
1Àå. ¸¶ÀÌÅ©·Î¼ºñ½º ¼Ò°³
__±â¼ú ¿ä±¸ »çÇ×
__³» ¸¶ÀÌÅ©·Î¼ºñ½º °æÇè
____µ¶¸³ ¼ÒÇÁÆ®¿þ¾î ÄÄÆ÷³ÍÆ®ÀÇ ÀåÁ¡
____µ¶¸³ ¼ÒÇÁÆ®¿þ¾î ÄÄÆ÷³ÍÆ®ÀÇ ¹®Á¦
____¸¶ÀÌÅ©·Î¼ºñ½º ÀÔ¹®
____»ùÇà ¸¶ÀÌÅ©·Î¼ºñ½º ȯ°æ
__¸¶ÀÌÅ©·Î¼ºñ½º Á¤ÀÇ
__¸¶ÀÌÅ©·Î¼ºñ½ºÀÇ ¹®Á¦
__¸¶ÀÌÅ©·Î¼ºñ½º µðÀÚÀÎ ÆÐÅÏ
____¼ºñ½º °Ë»ö
____¿¡Áö ¼¹ö
____¸®¾×Ƽºê ¸¶ÀÌÅ©·Î¼ºñ½º
____±¸¼º Áß¾ÓÈ
____·Î±× ºÐ¼® Áß¾ÓÈ
____ºÐ»ê ÃßÀû
____¼Å¶ ºê·¹ÀÌÄ¿
____Á¦¾î ·çÇÁ
____¸ð´ÏÅ͸µ ¹× °æ°í Áß¾ÓÈ
__Çʼö ¼ÒÇÁÆ®¿þ¾î
__´Ù¸¥ ÁÖ¿ä °í·Á »çÇ×
__¿ä¾à
2Àå. ½ºÇÁ¸µ ºÎÆ® ¼Ò°³
__±â¼ú ¿ä±¸ »çÇ×
__½ºÇÁ¸µ ºÎÆ®
____¼³Á¤º¸´Ù °ü·Ê¿Í ÆÖ JAR ÆÄÀÏ
____½ºÇÁ¸µ ºÎÆ® ¾ÖÇø®ÄÉÀÌ¼Ç ¼³Á¤¿¡ ´ëÇÑ ÄÚµå ¿¹Á¦
__½ºÇÁ¸µ À¥Ç÷°½º
____REST ¼ºñ½º ¼³Á¤¿¡ ´ëÇÑ ÄÚµå ¿¹Á¦
__springdoc-openapi
__½ºÇÁ¸µ µ¥ÀÌÅÍ
____¿£Æ¼Æ¼
____¸®Æ÷ÁöÅ͸®
__½ºÇÁ¸µ Ŭ¶ó¿ìµå ½ºÆ®¸²
____¸Þ½ÃÁö ¼Û¼ö½Å¿¡ ´ëÇÑ ÄÚµå ¿¹Á¦
__µµÄ¿
__¿ä¾à
__Áú¹®
3Àå. °øÁ¶ ¸¶ÀÌÅ©·Î¼ºñ½º ÁýÇÕ »ý¼º
__±â¼ú ¿ä±¸ »çÇ×
__¸¶ÀÌÅ©·Î¼ºñ½º ȯ°æ ¼Ò°³
____¸¶ÀÌÅ©·Î¼ºñ½º°¡ ó¸®ÇÏ´Â Á¤º¸
____Àӽ÷Π°Ë»ö ¼ºñ½º ´ëü
__°ñ°Ý ¸¶ÀÌÅ©·Î¼ºñ½º »ý¼º
____½ºÇÁ¸µ À̴ϼȶóÀÌÀú·Î °ñ°Ý ÄÚµå »ý¼º
____±×·¡µé¿¡ ¸ÖƼ ÇÁ·ÎÁ§Æ® ºôµå ¼³Á¤
__RESTful API Ãß°¡
____api ÇÁ·ÎÁ§Æ®¿Í util ÇÁ·ÎÁ§Æ® Ãß°¡
____API ±¸Çö
__º¹ÇÕ ¸¶ÀÌÅ©·Î¼ºñ½º Ãß°¡
____API Ŭ·¡½º
____¼Ó¼º
____ÅëÇÕ ÄÄÆ÷³ÍÆ®
____º¹ÇÕ API ±¸Çö
__¿¹¿Ü ó¸® Ãß°¡
____Àü¿ª REST ÄÁÆ®·Ñ·¯ ¿¹¿Ü Çڵ鷯
____API ±¸ÇöÀÇ ¿¹¿Ü ó¸®
____API Ŭ¶óÀ̾ðÆ®ÀÇ ¿¹¿Ü ó¸®
__API ¼öµ¿ Å×½ºÆ®
__ÀÚµ¿ÈµÈ ¸¶ÀÌÅ©·Î¼ºñ½º Å×½ºÆ®
__¹ÝÀÚµ¿ÈµÈ ¸¶ÀÌÅ©·Î¼ºñ½º ȯ°æ Å×½ºÆ®
____Å×½ºÆ® ½ºÅ©¸³Æ® ½ÇÇà
__¿ä¾à
__Áú¹®
4Àå. µµÄ¿¸¦ »ç¿ëÇÑ ¸¶ÀÌÅ©·Î¼ºñ½º ¹èÆ÷
__±â¼ú ¿ä±¸ »çÇ×
__µµÄ¿ ¼Ò°³
____ù µµÄ¿ Ä¿¸Çµå ½ÇÇà
__µµÄ¿¿¡¼ ÀÚ¹Ù¸¦ ½ÇÇàÇÒ ¶§ÀÇ ¹®Á¦
____»ç¿ë °¡´ÉÇÑ CPU Á¦ÇÑ
____»ç¿ë °¡´ÉÇÑ ¸Þ¸ð¸® Á¦ÇÑ
__µµÄ¿·Î ´ÜÀÏ ¸¶ÀÌÅ©·Î¼ºñ½º ½ÇÇà
____¼Ò½º ÄÚµå º¯°æ
____µµÄ¿ À̹ÌÁö ºôµå
____¼ºñ½º ½ÃÀÛ
____ÄÁÅ×À̳ʸ¦ ºÐ¸® ¸ðµå·Î ½ÇÇà
__µµÄ¿ ÄÄÆ÷Á »ç¿ëÇÑ ¸¶ÀÌÅ©·Î¼ºñ½º ȯ°æ °ü¸®
____¼Ò½º ÄÚµå º¯°æ
____¸¶ÀÌÅ©·Î¼ºñ½º ȯ°æ ½ÃÀÛ
__°øÁ¶ ¸¶ÀÌÅ©·Î¼ºñ½ºÀÇ Å×½ºÆ® ÀÚµ¿È
____Å×½ºÆ® ½ÇÇà ¹®Á¦ ÇØ°á
__¿ä¾à
__Áú¹®
5Àå. OpenAPI¸¦ »ç¿ëÇÑ API ¹®¼È
__±â¼ú ¿ä±¸ »çÇ×
__springdoc-openapi ¼Ò°³
__¼Ò½º ÄÚµå º¯°æ
____±×·¡µé ºôµå ÆÄÀÏ¿¡ ÀÇÁ¸¼º Ãß°¡
____ProductCompositeServiceApplication¿¡ ±¸¼º°ú API Á¤º¸ Ãß°¡
____ProductCompositeService ÀÎÅÍÆäÀ̽º¿¡ API Á¤º¸ Ãß°¡
__¸¶ÀÌÅ©·Î¼ºñ½º ȯ°æ ±¸Ãà ¹× ½ÃÀÛ
__OpenAPI ¹®¼ »ç¿ë¹ý
__¿ä¾à
__Áú¹®
6Àå. ¿µ¼Ó¼º Ãß°¡
__±â¼ú ¿ä±¸ »çÇ×
__¸ñÇ¥
__ÇÙ½É ¸¶ÀÌÅ©·Î¼ºñ½º¿¡ ¿µ¼Ó¼º °èÃþ Ãß°¡
____ÀÇÁ¸¼º Ãß°¡
____¿£Æ¼Æ¼ Ŭ·¡½º¸¦ »ç¿ëÇØ µ¥ÀÌÅÍ ÀúÀå
____½ºÇÁ¸µ µ¥ÀÌÅÍ ¸®Æ÷ÁöÅ͸® Á¤ÀÇ
__¿µ¼Ó¼º¿¡ ÁßÁ¡À» µÐ ÀÚµ¿ Å×½ºÆ® ÀÛ¼º
____Testcontainers »ç¿ë¹ý
____¿µ¼Ó¼º Å×½ºÆ® ÀÛ¼º
__¼ºñ½º °èÃþ¿¡¼ ¿µ¼Ó¼º °èÃþ »ç¿ë
____µ¥ÀÌÅͺ£À̽º ¿¬°á URL ±â·Ï
____»õ API Ãß°¡
____¼ºñ½º °èÃþ¿¡¼ ¿µ¼Ó¼º °èÃþ È£Ãâ
____ÀÚ¹Ù ºó ¸ÅÆÛ ¼±¾ð
____¼ºñ½º Å×½ºÆ® ¾÷µ¥ÀÌÆ®
__º¹ÇÕ ¼ºñ½º API È®Àå
____º¹ÇÕ ¼ºñ½º API¿¡ »õ ¿ÀÆÛ·¹ÀÌ¼Ç Ãß°¡
____ÅëÇÕ °èÃþ¿¡ ¸Þ¼µå Ãß°¡
____»õ º¹ÇÕ API ¿ÀÆÛ·¹ÀÌ¼Ç ±¸Çö
____º¹ÇÕ ¼ºñ½º Å×½ºÆ® ¾÷µ¥ÀÌÆ®
__µµÄ¿ ÄÄÆ÷Áî ȯ°æ¿¡ µ¥ÀÌÅͺ£À̽º Ãß°¡
____µµÄ¿ ÄÄÆ÷Áî ±¸¼º
____µ¥ÀÌÅͺ£À̽º ¿¬°á ±¸¼º
____MongoDB ¹× MySQL CLI µµ±¸
__»õ API ¹× ¿µ¼Ó¼º °èÃþÀÇ ¼öµ¿ Å×½ºÆ®
__¸¶ÀÌÅ©·Î¼ºñ½º ȯ°æÀÇ ÀÚµ¿ Å×½ºÆ® ¾÷µ¥ÀÌÆ®
__¿ä¾à
__Áú¹®
7Àå. ¸®¾×Ƽºê ¸¶ÀÌÅ©·Î¼ºñ½º °³¹ß
__±â¼ú ¿ä±¸ »çÇ×
__³íºí·ÎÅ· µ¿±â API¿Í À̺¥Æ® ±â¹Ý ºñµ¿±â ¼ºñ½ºÀÇ ¼±Åà ±âÁØ
__³íºí·ÎÅ· µ¿±â REST API °³¹ß
____ÇÁ·ÎÁ§Æ® ¸®¾×ÅÍ ¼Ò°³
____½ºÇÁ¸µ µ¥ÀÌÅÍ MongoDB¸¦ »ç¿ëÇÑ ³íºí·ÎÅ· ¿µ¼Ó¼º
____ÇÙ½É ¼ºñ½ºÀÇ ³íºí·ÎÅ· REST API
____º¹ÇÕ ¼ºñ½ºÀÇ ³íºí·ÎÅ· REST API
__À̺¥Æ® ±â¹Ý ºñµ¿±â ¼ºñ½º °³¹ß
____¸Þ½Ã¡ °ü·Ã ¹®Á¦ ó¸®
____ÅäÇÈ ¹× À̺¥Æ® Á¤ÀÇ
____±×·¡µé ºôµå ÆÄÀÏ º¯°æ
____ÇÙ½É ¼ºñ½º¿¡¼ À̺¥Æ® ¼Òºñ
____º¹ÇÕ ¼ºñ½º¿¡¼ À̺¥Æ® °Ô½Ã
__¸®¾×Ƽºê ¸¶ÀÌÅ©·Î¼ºñ½º ȯ°æÀÇ ¼öµ¿ Å×½ºÆ®
____À̺¥Æ® ÀúÀå
____»óÅÂ Á¡°Ë API Ãß°¡
____ÆÄƼ¼Ç ¾øÀÌ RabbitMQ »ç¿ë
____ÆÄƼ¼ÇÀ» Ãß°¡ÇØ RabbitMQ »ç¿ë
____ÅäÇÈ´ç 2°³ÀÇ ÆÄƼ¼ÇÀ¸·Î Ä«ÇÁÄ« »ç¿ë
__¸®¾×Ƽºê ¸¶ÀÌÅ©·Î¼ºñ½º ȯ°æÀÇ ÀÚµ¿ Å×½ºÆ®
__¿ä¾à
__Áú¹®
2ºÎ. ½ºÇÁ¸µ Ŭ¶ó¿ìµå¸¦ È°¿ëÇÑ ¸¶ÀÌÅ©·Î¼ºñ½º °ü¸®
8Àå. ½ºÇÁ¸µ Ŭ¶ó¿ìµå ¼Ò°³
__±â¼ú ¿ä±¸ »çÇ×
__½ºÇÁ¸µ Ŭ¶ó¿ìµåÀÇ ÁøÈ
__³ÝÇø¯½º À¯·¹Ä«¸¦ °Ë»ö ¼ºñ½º·Î »ç¿ë
__½ºÇÁ¸µ Ŭ¶ó¿ìµå °ÔÀÌÆ®¿þÀ̸¦ ¿¡Áö ¼¹ö·Î »ç¿ë
__±¸¼º Áß¾Óȸ¦ À§ÇØ ½ºÇÁ¸µ Ŭ¶ó¿ìµå ÄÁÇÇ±× »ç¿ë
__º¹¿ø·Â Çâ»óÀ» À§ÇØ Resilience4j »ç¿ë
____Resilience4j¸¦ »ç¿ëÇÑ ¼Å¶ ºê·¹ÀÌÄ¿ »ùÇÃ
__½ºÇÁ¸µ Ŭ¶ó¿ìµå ½½·ç½º¿Í ÁýŲÀ» »ç¿ëÇÑ ºÐ»ê ÃßÀû
__¿ä¾à
__Áú¹®
9Àå. ³ÝÇø¯½º À¯·¹Ä«¸¦ »ç¿ëÇÑ ¼ºñ½º °Ë»ö
__±â¼ú ¿ä±¸ »çÇ×
__¼ºñ½º °Ë»ö ¼Ò°³
____DNS ±â¹Ý ¼ºñ½º °Ë»öÀÇ ¹®Á¦
____¼ºñ½º °Ë»öÀÇ ¹®Á¦
____³ÝÇø¯½º À¯·¹Ä«¸¦ ÀÌ¿ëÇÑ ¼ºñ½º °Ë»ö
__³ÝÇø¯½º À¯·¹Ä« ¼¹ö ¼³Á¤
__³ÝÇø¯½º À¯·¹Ä« ¼¹ö¿¡ ¸¶ÀÌÅ©·Î¼ºñ½º ¿¬°á
__°³¹ß¿ë ±¸¼º ¼³Á¤
____À¯·¹Ä« ±¸¼º ¸Å°³ º¯¼ö
____À¯·¹Ä« ¼¹ö ±¸¼º
____À¯·¹Ä« ¼¹ö¿¡ ¿¬°áÇÒ Å¬¶óÀ̾ðÆ® ±¸¼º
__°Ë»ö ¼ºñ½º »ç¿ë
____È®Àå
____Ãà¼Ò
____À¯·¹Ä« ¼¹öÀÇ Àå¾Ö »óȲ Å×½ºÆ®
__À¯·¹Ä« ¼¹ö ´Ù½Ã ½ÃÀÛ
__¿ä¾à
__Áú¹®
10Àå. ½ºÇÁ¸µ Ŭ¶ó¿ìµå °ÔÀÌÆ®¿þÀ̸¦ ¿¡Áö ¼¹ö·Î »ç¿ë
__±â¼ú ¿ä±¸ »çÇ×
__½Ã½ºÅÛ È¯°æ¿¡ ¿¡Áö ¼¹ö Ãß°¡
__½ºÇÁ¸µ Ŭ¶ó¿ìµå °ÔÀÌÆ®¿þÀÌ ¼³Á¤
____º¹ÇÕ »óÅ Á¡°Ë Ãß°¡
____½ºÇÁ¸µ Ŭ¶ó¿ìµå °ÔÀÌÆ®¿þÀÌ ±¸¼º
__¿¡Áö ¼¹ö Å×½ºÆ®
____µµÄ¿ ¿£Áø ¿ÜºÎ·Î °ø°³µÇ´Â Ç׸ñ È®ÀÎ
____¶ó¿ìÆà ±ÔÄ¢ Å×½ºÆ®
__¿ä¾à
__Áú¹®
11Àå. API Á¢±Ù º¸¾È
__±â¼ú ¿ä±¸ »çÇ×
__OAuth 2.0 ¹× OpenID Connect ¼Ò°³
____OAuth 2.0 ¼Ò°³
____OpenID Connect ¼Ò°³
__½Ã½ºÅÛ È¯°æ º¸¾È
__HTTPS¸¦ »ç¿ëÇÑ ¿ÜºÎ Åë½Å º¸È£
____·±Å¸ÀÓ¿¡ ÀÚü ¼¸í ÀÎÁõ¼ ±³Ã¼
__°Ë»ö ¼ºñ½º Á¢±Ù º¸¾È
____À¯·¹Ä« ¼¹ö º¯°æ
____À¯·¹Ä« Ŭ¶óÀ̾ðÆ® º¯°æ
__·ÎÄà ±ÇÇÑ ºÎ¿© ¼¹ö Ãß°¡
__OAuth 2.0°ú OpenID Connect¸¦ »ç¿ëÇÑ API º¸¾È
____¿¡Áö ¼¹ö¿Í product-composite ¼ºñ½º º¯°æ
____product-composite ¼ºñ½º º¯°æ
____Å×½ºÆ® ½ºÅ©¸³Æ® º¯°æ
__·ÎÄà ±ÇÇÑ ºÎ¿© ¼¹ö¸¦ »ç¿ëÇÑ Å×½ºÆ®
____ÀÚµ¿ Å×½ºÆ® ºôµå ¹× ½ÇÇà
____°Ë»ö ¼¹ö º¸¾È Å×½ºÆ®
____Á¢±Ù ÅäÅ« ȹµæ
____Á¢±Ù ÅäÅ«À» »ç¿ëÇØ º¸¾È API È£Ãâ
____½º¿þ°Å UI¿¡¼ OAuth 2.0 Å×½ºÆ®
__¿ÜºÎ OpenID Connect °ø±ÞÀÚ¸¦ »ç¿ëÇÑ Å×½ºÆ®
____Auth0 »ç¿ëÀÚ °èÁ¤ÀÇ ¼³Á¤ ¹× ±¸¼º
____Auth0¸¦ OpenID °ø±ÞÀÚ·Î »ç¿ëÇϱâ À§ÇØ ÇÊ¿äÇÑ º¯°æ »çÇ× Àû¿ë
____Auth0¸¦ OpenID Connect °ø±ÞÀÚ·Î »ç¿ëÇØ Å×½ºÆ® ½ºÅ©¸³Æ® ½ÇÇà
____Ŭ¶óÀ̾ðÆ® ÀÚ°Ý Áõ¸í ½ÂÀÎ È帧À» »ç¿ëÇØ Á¢±Ù ÅäÅ« ȹµæ
____±ÇÇÑ ÄÚµå ½ÂÀÎ È帧À» »ç¿ëÇØ Á¢±Ù ÅäÅ« ȹµæ
____Auth0 Á¢±Ù ÅäÅ«À» »ç¿ëÇØ º¸¾È API È£Ãâ
____»ç¿ëÀÚ¿¡ ´ëÇÑ Ãß°¡ Á¤º¸ ȹµæ
__¿ä¾à
__Áú¹®
12Àå. ±¸¼º Áß¾ÓÈ
__±â¼ú ¿ä±¸ »çÇ×
__½ºÇÁ¸µ Ŭ¶ó¿ìµå ÄÁÇÇ±× ¼¹ö ¼Ò°³
____±¸¼º ÀúÀå¼ÒÀÇ ÀúÀå À¯Çü ¼±ÅÃ
____Ŭ¶óÀ̾ðÆ®°¡ ¸ÕÀú Á¢¼ÓÇÒ ¼¹ö °áÁ¤
____±¸¼º º¸¾È
____±¸¼º ¼¹ö API ¼Ò°³
__±¸¼º ¼¹ö ¼³Á¤
____¿¡Áö ¼¹ö¿¡ ¶ó¿ìÆà ±ÔÄ¢ ¼³Á¤
____µµÄ¿ ȯ°æÀ» À§ÇÑ ±¸¼º ¼¹ö ¼³Á¤
__±¸¼º ¼¹öÀÇ Å¬¶óÀ̾ðÆ® ¼³Á¤
____¿¬°á Á¤º¸ ±¸¼º
__±¸¼º ÀúÀå¼Ò ±¸Á¶È
__½ºÇÁ¸µ Ŭ¶ó¿ìµå ÄÁÇÇ±× ¼¹ö »ç¿ë
____ºôµå ¹× ÀÚµ¿È Å×½ºÆ® ½ÇÇà
____±¸¼º ¼¹ö API·Î ±¸¼º Á¶È¸
____¹Î°¨ÇÑ Á¤º¸ÀÇ ¾ÏÈ£È ¹× Çص¶
__¿ä¾à
__Áú¹®
13Àå. Resilience4j¸¦ »ç¿ëÇÑ º¹¿ø·Â °³¼±
__±â¼ú ¿ä±¸ »çÇ×
__Resilience4jÀÇ º¹¿ø ¸ÞÄ¿´ÏÁò ¼Ò°³
____¼Å¶ ºê·¹ÀÌÄ¿ ¼Ò°³
____½Ã°£ Á¦Çѱ⠼Ұ³
____Àç½Ãµµ ¸ÞÄ¿´ÏÁò ¼Ò°³
__¼Ò½º Äڵ忡 º¹¿ø·Â ¸ÞÄ¿´ÏÁò Ãß°¡
____ÇÁ·Î±×·¡¹Ö ¹æ½ÄÀ¸·Î Áö¿¬ ¹× ¹«ÀÛÀ§ ¿À·ù Ãß°¡
____¼Å¶ ºê·¹ÀÌÄ¿ ¹× ½Ã°£ Á¦Çѱâ Ãß°¡
____Àç½Ãµµ ¸ÞÄ¿´ÏÁò Ãß°¡
____ÀÚµ¿ Å×½ºÆ® Ãß°¡
__¼Å¶ ºê·¹ÀÌÄ¿ ¹× Àç½Ãµµ ¸ÞÄ¿´ÏÁò Å×½ºÆ®
____ºôµå ¹× ÀÚµ¿È Å×½ºÆ® ½ÇÇà
____Á¤»óÀûÀÎ ¿äû¸¸ À¯À﵃ ¶§ ¼Å¶ÀÌ ´ÝÇô ÀÖ´ÂÁö È®ÀÎ
____¹®Á¦°¡ ¹ß»ýÇßÀ» ¶§ ¼Å¶ÀÌ ¿¸®´ÂÁö È®ÀÎ
____¼Å¶ ºê·¹ÀÌÄ¿ ´Ù½Ã ´Ý±â
____¹«ÀÛÀ§ ¿À·ù·Î Àç½Ãµµ ¸ÞÄ¿´ÏÁò Å×½ºÆ®
__¿ä¾à
__Áú¹®
14Àå. ºÐ»ê ÃßÀû
__±â¼ú ¿ä±¸ »çÇ×
__½ºÇÁ¸µ Ŭ¶ó¿ìµå ½½·ç½º¿Í ÁýŲÀ» »ç¿ëÇÑ ºÐ»ê ÃßÀû
__¼Ò½º Äڵ忡 ºÐ»ê ÃßÀû Ãß°¡
____ºôµå ÆÄÀÏ¿¡ ÀÇÁ¸¼º Ãß°¡
____½ºÇÁ¸µ Ŭ¶ó¿ìµå ½½·ç½º ¹× ÁýŲ¿¡ ´ëÇÑ ±¸¼º Ãß°¡
____µµÄ¿ ÄÄÆ÷Áî ÆÄÀÏ¿¡ ÁýŲ Ãß°¡
__ºÐ»ê ÃßÀû ¼öÇà
____RabbitMQ¸¦ ´ë±â¿ °ü¸®ÀÚ·Î »ç¿ëÇØ ½Ã½ºÅÛ È¯°æ ½ÃÀÛ
____Á¤»óÀûÀÎ API ¿äû Àü¼Û
____ºñÁ¤»óÀûÀÎ API ¿äû Àü¼Û
____ºñµ¿±â 󸮸¦ À¯¹ßÇÏ´Â API ¿äû Àü¼Û
____RabbitMQ¸¦ ÅëÇØ ÁýŲÀ¸·Î Àü´ÞµÈ ÃßÀû Á¤º¸ ¸ð´ÏÅ͸µ
____Ä«ÇÁÄ«¸¦ ¸Þ½ÃÁö ºê·ÎÄ¿·Î »ç¿ë
__¿ä¾à
__Áú¹®
3ºÎ. Äí¹ö³×Ƽ½º¸¦ »ç¿ëÇÑ °æ·® ¸¶ÀÌÅ©·Î¼ºñ½º °³¹ß
15Àå. Äí¹ö³×Ƽ½º ¼Ò°³
__±â¼ú ¿ä±¸ »çÇ×
__Äí¹ö³×Ƽ½º °³³ä ¼Ò°³
__Äí¹ö³×Ƽ½º API °´Ã¼ ¼Ò°³
__Äí¹ö³×Ƽ½º ·±Å¸ÀÓ ÄÄÆ÷³ÍÆ® ¼Ò°³
__¹Ì´ÏÅ¥ºê¸¦ »ç¿ëÇØ Äí¹ö³×Ƽ½º Ŭ·¯½ºÅÍ »ý¼º
____¹Ì´ÏÅ¥ºê ÇÁ·ÎÇÊ »ç¿ë
____Äí¹ö³×Ƽ½ºÀÇ CLI µµ±¸ÀÎ kubectl »ç¿ë
____kubectl ÄÜÅؽºÆ® »ç¿ë
____Äí¹ö³×Ƽ½º Ŭ·¯½ºÅÍ »ý¼º
__»ùÇà µðÇ÷ÎÀ̸ÕÆ® »ý¼º
__·ÎÄà Äí¹ö³×Ƽ½º Ŭ·¯½ºÅÍ °ü¸®
____Äí¹ö³×Ƽ½º Ŭ·¯½ºÅÍ ÁßÁö ¹× ½ÃÀÛ
____Äí¹ö³×Ƽ½º Ŭ·¯½ºÅÍ Á¾·á
__¿ä¾à
__Áú¹®
16Àå. Äí¹ö³×Ƽ½º¿¡ ¸¶ÀÌÅ©·Î¼ºñ½º ¹èÆ÷
__±â¼ú ¿ä±¸ »çÇ×
__³ÝÇø¯½º À¯·¹Ä«¸¦ Äí¹ö³×Ƽ½º ¼ºñ½º·Î ´ëü
__Äí¹ö³×Ƽ½º °´Ã¼ ¼Ò°³
__½ºÇÁ¸µ ºÎÆ®ÀÇ Áö¿ø ±â´É »ç¿ë
__Ç︧ ¼Ò°³
____Ç︧ Ä¿¸Çµå ½ÇÇà
____Ç︧ Â÷Æ®ÀÇ ±¸Á¶
____Ç︧ ÅÛÇø´°ú Àü´Þ °ª
____common ¶óÀ̺귯¸® Â÷Æ®
____components Â÷Æ®
____environments Â÷Æ®
__°³¹ß ¹× Å×½ºÆ® ȯ°æÀ» À§ÇÑ Äí¹ö³×Ƽ½º ¹èÆ÷
____µµÄ¿ À̹ÌÁö ºôµå
____Ç︧ Â÷Æ®ÀÇ ÀÇÁ¸¼º ÇØ°á
____Äí¹ö³×Ƽ½º¿¡ ¹èÆ÷
____Äí¹ö³×Ƽ½º ȯ°æ¿¡ ¸Â°Ô Å×½ºÆ® ½ºÅ©¸³Æ® ¼öÁ¤
____µðÇ÷ÎÀ̸ÕÆ® Å×½ºÆ®
__½ºÅ×ÀÌ¡ ¹× »ó¿ë ȯ°æÀ» À§ÇÑ Äí¹ö³×Ƽ½º ¹èÆ÷
____¼Ò½º ÄÚµå ¼öÁ¤
____Äí¹ö³×Ƽ½º¿¡ ¹èÆ÷
____Á¤¸®
__¿ä¾à
__Áú¹®
17Àå. Äí¹ö³×Ƽ½º·Î ±âÁ¸ ½Ã½ºÅÛ È¯°æ ´ëü
__±â¼ú ¿ä±¸ »çÇ×
__½ºÇÁ¸µ Ŭ¶ó¿ìµå ÄÁÇÇ±× ¼¹ö ´ëü
____½ºÇÁ¸µ Ŭ¶ó¿ìµå ÄÁÇÇ±× ¼¹ö¸¦ ´ëüÇϱâ À§ÇÑ º¯°æ ÀÛ¾÷
__½ºÇÁ¸µ Ŭ¶ó¿ìµå °ÔÀÌÆ®¿þÀÌ ´ëü
____½ºÇÁ¸µ Ŭ¶ó¿ìµå °ÔÀÌÆ®¿þÀ̸¦ ´ëüÇϱâ À§ÇÑ º¯°æ ÀÛ¾÷
__ÀÎÁõ¼ ÇÁ·ÎºñÀú´× ÀÚµ¿È
__Äí¹ö³×Ƽ½º ÄÁÇÇ±× ¸Ê, ½ÃÅ©¸´, Àα׷¹½º, cert-manager¸¦ »ç¿ëÇÑ Å×½ºÆ®
____ÀÎÁõ¼ °»½Å
____½ºÅ×ÀÌ¡ ¹× »ó¿ë ȯ°æÀ» À§ÇÑ Äí¹ö³×Ƽ½º ¹èÆ÷
__Äí¹ö³×Ƽ½º ¾øÀ̵µ ¸¶ÀÌÅ©·Î¼ºñ½º°¡ ÀÛµ¿ÇÏ´ÂÁö È®ÀÎ
____µµÄ¿ ÄÄÆ÷Áî ÆÄÀÏÀÇ ¼öÁ¤ »çÇ×
____µµÄ¿ ÄÄÆ÷Áî·Î Å×½ºÆ®
__¿ä¾à
__Áú¹®
18Àå. ¼ºñ½º ¸Þ½Ã¸¦ »ç¿ëÇØ °üÂû °¡´É¼º ¹× °ü¸® ÆíÀǼº °³¼±
__±â¼ú ¿ä±¸ »çÇ×
__À̽ºÆ¼¿À¸¦ ÀÌ¿ëÇÑ ¼ºñ½º ¸Þ½Ã ¼Ò°³
____À̽ºÆ¼¿À ¼Ò°³
____¸¶ÀÌÅ©·Î¼ºñ½º¿¡ À̽ºÆ¼¿À ÇÁ·Ï½Ã »ðÀÔ
____À̽ºÆ¼¿ÀÀÇ API °´Ã¼ ¼Ò°³
__¸¶ÀÌÅ©·Î¼ºñ½º ȯ°æ ´Ü¼øÈ
____À̽ºÆ¼¿À Àα׷¹½º °ÔÀÌÆ®¿þÀÌ·Î Äí¹ö³×Ƽ½º Àα׷¹½º ÄÁÆ®·Ñ·¯ ´ëü
____À̽ºÆ¼¿À ¿¹°Å ÄÄÆ÷³ÍÆ®·Î ÁýŲ ¼¹ö ´ëü
__Äí¹ö³×Ƽ½º Ŭ·¯½ºÅÍ¿¡ À̽ºÆ¼¿À ¹èÆ÷
____À̽ºÆ¼¿À ¼ºñ½º¿¡ ´ëÇÑ Á¢±Ù ¼³Á¤
__¼ºñ½º ¸Þ½Ã »ý¼º
____¼Ò½º ÄÚµå º¯°æ
____Ä¿¸Çµå¸¦ ½ÇÇàÇØ ¼ºñ½º ¸Þ½Ã »ý¼º
__¼ºñ½º ¸Þ½Ã °üÂû
__¼ºñ½º ¸Þ½Ã º¸¾È
____HTTPS¿Í ÀÎÁõ¼·Î ¿ÜºÎ ¿£µåÆ÷ÀÎÆ® º¸È£
____OAuth 2.0/OIDC Á¢±Ù ÅäÅ«À» »ç¿ëÇÑ ¿ÜºÎ ¿äû ÀÎÁõ
____»óÈ£ ÀÎÁõÀ» »ç¿ëÇÑ ³»ºÎ Åë½Å º¸È£
__¼ºñ½º ¸Þ½ÃÀÇ º¹¿ø·Â È®º¸
____°áÇÔÀ» »ðÀÔÇØ Åº·Â¼º Å×½ºÆ®
____Áö¿¬À» »ðÀÔÇØ º¹¿ø·Â Å×½ºÆ®
__ºñ°¡µ¿ ½Ã°£ ¾øÀÌ ¾÷µ¥ÀÌÆ® ¼öÇà
____¼Ò½º ÄÚµå º¯°æ
____v1 ¹× v2 ¹öÀüÀÇ ¸¶ÀÌÅ©·Î¼ºñ½º ¹èÆ÷
____¸ðµç Æ®·¡ÇÈÀÌ v1 ¹öÀüÀÇ ¸¶ÀÌÅ©·Î¼ºñ½º·Î Àü´ÞµÇ´ÂÁö È®ÀÎ
____Ä«³ª¸®¾Æ Å×½ºÆ® ½ÇÇà
____ºí·ç/±×¸° ¹èÆ÷ ½ÇÇà
__µµÄ¿ ÄÄÆ÷Áî·Î Å×½ºÆ® ½ÇÇà
__¿ä¾à
__Áú¹®
19Àå. EFK ½ºÅÃÀ» »ç¿ëÇÑ ·Î±ë Áß¾ÓÈ
__±â¼ú ¿ä±¸ »çÇ×
__Ç÷ç¾ðƼµå ¼Ò°³
____Ç÷ç¾ðƼµå °³¿ä
____Ç÷ç¾ðƼµå ±¸¼º
__Äí¹ö³×Ƽ½º¿¡ EFK ½ºÅà ¹èÆ÷
____¸¶ÀÌÅ©·Î¼ºñ½º ºôµå ¹× ¹èÆ÷
____ÀÏ·¡½ºÆ½¼Ä¡¿Í Å°¹Ù³ª ¹èÆ÷
____Ç÷ç¾ðƼµå ¹èÆ÷
__EFK ½ºÅà ½Ç½À
____Å°¹Ù³ª ÃʱâÈ
____·Î±× ·¹ÄÚµå ºÐ¼®
____¸¶ÀÌÅ©·Î¼ºñ½ºÀÇ ·Î±× ·¹ÄÚµå °Ë»ö
____±Ùº» ¿øÀÎ ºÐ¼® ¼öÇà
__¿ä¾à
__Áú¹®
20Àå. ¸¶ÀÌÅ©·Î¼ºñ½º ¸ð´ÏÅ͸µ
__±â¼ú ¿ä±¸ »çÇ×
__ÇÁ·Î¸ÞÅ׿콺¿Í ±×¶óÆijª¸¦ »ç¿ëÇÑ ¼º´É ¸ð´ÏÅ͸µ
__¾ÖÇø®ÄÉÀÌ¼Ç ¸ÞÆ®¸¯ ¼öÁýÀ» À§ÇÑ ¼Ò½º ÄÚµå º¯°æ
__¸¶ÀÌÅ©·Î¼ºñ½º ºôµå ¹× ¹èÆ÷
__±×¶óÆijª ´ë½Ãº¸µå¸¦ »ç¿ëÇÑ ¸¶ÀÌÅ©·Î¼ºñ½º ¸ð´ÏÅ͸µ
____Å×½ºÆ®¿ë ·ÎÄà ¸ÞÀÏ ¼¹ö ¼³Ä¡
____ºÎÇÏ Å×½ºÆ® ½ÇÇà
____Å°¾Ë¸® ³»Àå ´ë½Ãº¸µå »ç¿ë
____±âÁ¸ ±×¶óÆijª ´ë½Ãº¸µå °¡Á®¿À±â
____»ç¿ëÀÚ Á¤ÀÇ ±×¶óÆijª ´ë½Ãº¸µå °³¹ß
____±×¶óÆijª ´ë½Ãº¸µå ³»º¸³»±â ¹× °¡Á®¿À±â
__±×¶óÆijª °æ°í ¼³Á¤
____¸ÞÀÏ ±â¹Ý ¾Ë¸² ä³Î Á¤ÀÇ
____¼Å¶ ºê·¹ÀÌÄ¿¿¡ °æ°í ¼³Á¤
____¼Å¶ ºê·¹ÀÌÄ¿ °æ°í Å×½ºÆ®
__¿ä¾à
__Áú¹®
21Àå. ¸ÆOS¿ë ¼³Ä¡ Áöħ
__±â¼ú ¿ä±¸ »çÇ×
__µµ±¸ ¼³Ä¡
____Ȩºê·ç ¼³Ä¡
____Ȩºê·ç·Î µµ±¸ ¼³Ä¡
____Ȩºê·ç ¾øÀÌ µµ±¸ ¼³Ä¡
____¼³Ä¡ ÈÄ Á¶Ã³
____¼³Ä¡ È®ÀÎ
__¼Ò½º ÄÚµå ´Ù¿î·Îµå
____IDE »ç¿ë
____ÄÚµå ±¸Á¶
22Àå. À©µµ¿ì¿ë ¼³Ä¡ Áöħ
__±â¼ú ¿ä±¸ »çÇ×
__µµ±¸ ¼³Ä¡
____À©µµ¿ì¿ë µµ±¸ ¼³Ä¡
____WSL 2 ¸®´ª½º ¼¹ö¿¡ µµ±¸ ¼³Ä¡
__¼Ò½º ÄÚµå ´Ù¿î·Îµå
____ÄÚµå ±¸Á¶
23Àå. ÀÚ¹Ù ¸¶ÀÌÅ©·Î¼ºñ½ºÀÇ ³×ÀÌƼºê ÄÄÆÄÀÏ
__±â¼ú ¿ä±¸ »çÇ×
__ÀÚ¹Ù ¼Ò½º ÄÚµåÀÇ ³×ÀÌƼºê ÄÄÆÄÀÏÀÌ ÇÊ¿äÇÑ ÀÌÀ¯
__±×¶öVM ÇÁ·ÎÁ§Æ® ¼Ò°³
__½ºÇÁ¸µ ³×ÀÌƼºê ÇÁ·ÎÁ§Æ® ¼Ò°³
__¼Ò½º Äڵ带 ³×ÀÌƼºê À̹ÌÁö·Î ÄÄÆÄÀÏ
____¼Ò½º ÄÚµå º¯°æ
____ÃßÀû ¿¡ÀÌÀüÆ® ¼³Ä¡
____ÃßÀû ¿¡ÀÌÀüÆ® ½ÇÇà
____³×ÀÌƼºê À̹ÌÁö »ý¼º
__µµÄ¿ ÄÄÆ÷Áî·Î Å×½ºÆ®
__Äí¹ö³×Ƽ½º·Î Å×½ºÆ®
__¿ä¾à
__Áú¹®
ÀúÀÚ¼Ò°³
»ý³â¿ùÀÏ | - |
---|
ÇØ´çÀÛ°¡¿¡ ´ëÇÑ ¼Ò°³°¡ ¾ø½À´Ï´Ù.
ÁÖ°£·©Å·
´õº¸±â»óÇ°Á¤º¸Á¦°ø°í½Ã
À̺¥Æ® ±âȹÀü
ÀÌ »óÇ°ÀÇ ½Ã¸®Áî
(ÃÑ 7±Ç / ÇöÀ籸¸Å °¡´Éµµ¼ 0±Ç)
Àü°øµµ¼/´ëÇб³Àç ºÐ¾ß¿¡¼ ¸¹Àº ȸ¿øÀÌ ±¸¸ÅÇÑ Ã¥
ÆǸÅÀÚÁ¤º¸
»óÈ£ |
(ÁÖ)±³º¸¹®°í |
---|---|
´ëÇ¥ÀÚ¸í |
¾Èº´Çö |
»ç¾÷ÀÚµî·Ï¹øÈ£ |
102-81-11670 |
¿¬¶ôó |
1544-1900 |
ÀüÀÚ¿ìÆíÁÖ¼Ò |
callcenter@kyobobook.co.kr |
Åë½ÅÆǸž÷½Å°í¹øÈ£ |
01-0653 |
¿µ¾÷¼ÒÀçÁö |
¼¿ïƯº°½Ã Á¾·Î±¸ Á¾·Î 1(Á¾·Î1°¡,±³º¸ºôµù) |
±³È¯/ȯºÒ
¹ÝÇ°/±³È¯ ¹æ¹ý |
¡®¸¶ÀÌÆäÀÌÁö > Ãë¼Ò/¹ÝÇ°/±³È¯/ȯºÒ¡¯ ¿¡¼ ½Åû ¶Ç´Â 1:1 ¹®ÀÇ °Ô½ÃÆÇ ¹× °í°´¼¾ÅÍ(1577-2555)¿¡¼ ½Åû °¡´É |
---|---|
¹ÝÇ°/±³È¯°¡´É ±â°£ |
º¯½É ¹ÝÇ°ÀÇ °æ¿ì Ãâ°í¿Ï·á ÈÄ 6ÀÏ(¿µ¾÷ÀÏ ±âÁØ) À̳»±îÁö¸¸ °¡´É |
¹ÝÇ°/±³È¯ ºñ¿ë |
º¯½É ȤÀº ±¸¸ÅÂø¿À·Î ÀÎÇÑ ¹ÝÇ°/±³È¯Àº ¹Ý¼Û·á °í°´ ºÎ´ã |
¹ÝÇ°/±³È¯ ºÒ°¡ »çÀ¯ |
·¼ÒºñÀÚÀÇ Ã¥ÀÓ ÀÖ´Â »çÀ¯·Î »óÇ° µîÀÌ ¼Õ½Ç ¶Ç´Â ÈÑ¼ÕµÈ °æ¿ì ·¼ÒºñÀÚÀÇ »ç¿ë, Æ÷Àå °³ºÀ¿¡ ÀÇÇØ »óÇ° µîÀÇ °¡Ä¡°¡ ÇöÀúÈ÷ °¨¼ÒÇÑ °æ¿ì ·º¹Á¦°¡ °¡´ÉÇÑ »óÇ° µîÀÇ Æ÷ÀåÀ» ÈѼÕÇÑ °æ¿ì ·½Ã°£ÀÇ °æ°ú¿¡ ÀÇÇØ ÀçÆǸŰ¡ °ï¶õÇÑ Á¤µµ·Î °¡Ä¡°¡ ÇöÀúÈ÷ °¨¼ÒÇÑ °æ¿ì ·ÀüÀÚ»ó°Å·¡ µî¿¡¼ÀÇ ¼ÒºñÀÚº¸È£¿¡ °üÇÑ ¹ý·üÀÌ Á¤ÇÏ´Â ¼ÒºñÀÚ Ã»¾àöȸ Á¦ÇÑ ³»¿ë¿¡ ÇØ´çµÇ´Â °æ¿ì |
»óÇ° Ç°Àý |
°ø±Þ»ç(ÃâÆÇ»ç) Àç°í »çÁ¤¿¡ ÀÇÇØ Ç°Àý/Áö¿¬µÉ ¼ö ÀÖÀ½ |
¼ÒºñÀÚ ÇÇÇغ¸»ó |
·»óÇ°ÀÇ ºÒ·®¿¡ ÀÇÇÑ ±³È¯, A/S, ȯºÒ, Ç°Áúº¸Áõ ¹× ÇÇÇغ¸»ó µî¿¡ °üÇÑ »çÇ×Àº¼ÒºñÀÚºÐÀïÇØ°á ±âÁØ (°øÁ¤°Å·¡À§¿øȸ °í½Ã)¿¡ ÁØÇÏ¿© ó¸®µÊ ·´ë±Ý ȯºÒ ¹× ȯºÒÁö¿¬¿¡ µû¸¥ ¹è»ó±Ý Áö±Þ Á¶°Ç, ÀýÂ÷ µîÀº ÀüÀÚ»ó°Å·¡ µî¿¡¼ÀǼҺñÀÚ º¸È£¿¡ °üÇÑ ¹ý·ü¿¡ µû¶ó ó¸®ÇÔ |
¹è¼Û¾È³»
±³º¸¹®°í »óÇ°Àº Åùè·Î ¹è¼ÛµÇ¸ç, Ãâ°í¿Ï·á 1~2Àϳ» »óÇ°À» ¹Þ¾Æ º¸½Ç ¼ö ÀÖ½À´Ï´Ù.
Ãâ°í°¡´É ½Ã°£ÀÌ ¼·Î ´Ù¸¥ »óÇ°À» ÇÔ²² ÁÖ¹®ÇÒ °æ¿ì Ãâ°í°¡´É ½Ã°£ÀÌ °¡Àå ±ä »óÇ°À» ±âÁØÀ¸·Î ¹è¼ÛµË´Ï´Ù.
±ººÎ´ë, ±³µµ¼Ò µî ƯÁ¤±â°üÀº ¿ìü±¹ Åù踸 ¹è¼Û°¡´ÉÇÕ´Ï´Ù.
¹è¼Ûºñ´Â ¾÷ü ¹è¼Ûºñ Á¤Ã¥¿¡ µû¸¨´Ï´Ù.