{"id":37653,"date":"2020-07-16T05:58:30","date_gmt":"2020-07-15T20:58:30","guid":{"rendered":"https:\/\/jirak.net\/wp\/aws-%ed%81%b4%eb%9d%bc%ec%9d%b4%eb%93%9c-%eb%84%a4%ec%9d%b4%ed%8b%b0%eb%b8%8c-%ea%b8%b0%eb%b0%98-twelve-factor-%ec%95%b1-%ea%b0%9c%eb%b0%9c-%eb%b0%a9%eb%b2%95\/"},"modified":"2020-07-16T06:34:11","modified_gmt":"2020-07-15T21:34:11","slug":"aws-%ed%81%b4%eb%9d%bc%ec%9d%b4%eb%93%9c-%eb%84%a4%ec%9d%b4%ed%8b%b0%eb%b8%8c-%ea%b8%b0%eb%b0%98-twelve-factor-%ec%95%b1-%ea%b0%9c%eb%b0%9c-%eb%b0%a9%eb%b2%95","status":"publish","type":"post","link":"https:\/\/jirak.net\/wp\/aws-%ed%81%b4%eb%9d%bc%ec%9d%b4%eb%93%9c-%eb%84%a4%ec%9d%b4%ed%8b%b0%eb%b8%8c-%ea%b8%b0%eb%b0%98-twelve-factor-%ec%95%b1-%ea%b0%9c%eb%b0%9c-%eb%b0%a9%eb%b2%95\/","title":{"rendered":"AWS \ud074\ub77c\uc774\ub4dc \ub124\uc774\ud2f0\ube0c \uae30\ubc18 Twelve Factor \uc571 \uac1c\ubc1c \ubc29\ubc95"},"content":{"rendered":"<p>AWS \ud074\ub77c\uc774\ub4dc \ub124\uc774\ud2f0\ube0c \uae30\ubc18 Twelve Factor \uc571 \uac1c\ubc1c \ubc29\ubc95<\/p>\n<p>2012\ub144 Heroku\uc5d0\uc11c \uc77c\ud558\ub358 \uac1c\ubc1c\uc790\ub4e4\uc740 \ud074\ub77c\uc6b0\ub4dc \uc2dc\ub300\uc5d0 \uc801\ud569\ud55c \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uac1c\ubc1c\uacfc \ubc30\ud3ec \ubc29\ubc95\uc5d0 \ub9de\ub294 <a href=\"https:\/\/12factor.net\/ko\/\">12\uac00\uc9c0 \uc6d0\uce59(Twelve Factor)<\/a>\uc744 \uac1c\ub150\ud654 \ud588\uc2b5\ub2c8\ub2e4.&nbsp; \uc774\uc640 \ube44\uc2b7\ud55c \uc6d0\uce59 \uc911 \ub354 \ub098\uc740 \ucf54\ub4dc\ub97c \uc704\ud55c <a href=\"https:\/\/www.joelonsoftware.com\/2000\/08\/09\/the-joel-test-12-steps-to-better-code\/\">12\uac00\uc9c0 Joel Test<\/a>\ub77c\ub294 \uac83\ub3c4 \uc720\uba85\ud558\uc8e0.<\/p>\n<p>Joel Test\uac00 \ucf54\ub4dc\uc640 \uac1c\ubc1c\uc5d0 \ub300\ud55c \uac83\uc774\ub77c\uba74 Twelve-Factor App \uc6d0\uce59\uc758 \uc8fc\uc694 \uac1c\ubc1c \ub3d9\uae30\ub294 \uc544\ub798\uc640 \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<ul>\n<li>\uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uc124\uc815 \uc790\ub3d9\ud654\ub97c \uc704\ud55c <strong>\uc808\ucc28(declarative)<\/strong>\ub97c \uccb4\uacc4\ud654 \ud558\uc5ec \uc2e0\uaddc \uac1c\ubc1c\uc790\uc758 \ud559\uc2b5 \ube44\uc6a9 \uc808\uac10<\/li>\n<li>\uc6b4\uc601 \uccb4\uc81c\uc5d0 \ub530\ub77c <strong>\ub2e4\ub978 \ubd80\ubd84\uc744 \uc815\uc758\ud558\uace0,<\/strong> \ubc30\ud3ec \ubc0f \uc2e4\ud589 \ud658\uacbd \uc0ac\uc774\uc758 <strong>\uc774\uc2dd\uc131 \uadf9\ub300\ud654<\/strong><\/li>\n<li><strong>\ud074\ub77c\uc6b0\ub4dc \ud50c\ub7ab\ud3fc<\/strong> <strong>\ubc30\ud3ec\uc5d0<\/strong> \uc801\ud569\ud558\uba70, \uc11c\ubc84\uc640 \ubc30\ud3ec \uc2dc\uc2a4\ud15c \uad00\ub9ac \ucd5c\uc18c\ud654<\/li>\n<li>\uac1c\ubc1c \ud658\uacbd\uacfc \uc6b4\uc601 \ud658\uacbd\uc758 <strong>\ucc28\uc774\ub97c \ucd5c\uc18c\ud654<\/strong>\ud558\uace0 \ubbfc\ucca9\uc131\uc744 \uc704\ud55c <strong>\uc9c0\uc18d\uc801\uc778 \ubc30\ud3ec<\/strong> \uc9c0\ud5a5<\/li>\n<li>\uac1c\ubc1c \ub3c4\uad6c, \uc544\ud0a4\ud14d\ucc98, \uac1c\ubc1c \ubc29\uc2dd \ubcc0\ud654 \uc5c6\uc774<strong>\uc11c\ube44\uc2a4 \ud655\uc7a5(scale up\/out)<\/strong> \uac00\ub2a5<\/li>\n<\/ul>\n<p>\uc774\ub7ec\ud55c 12\uac00\uc9c0 \uc6d0\uce59(Twelve Factor)\uc744 \uae30\ubc18\uc73c\ub85c, AWS \ud074\ub77c\uc6b0\ub4dc \uae30\ubc18\uc73c\ub85c \uac1c\ubcc4 \uc11c\ube44\uc2a4\ub97c \uc811\ubaa9\ud558\ub294 \uc194\ub8e8\uc158\uc774 \uc5c6\uc744\uae4c \uace0\ubbfc\ud588\uc2b5\ub2c8\ub2e4. \uc544\ub798 \uc601\uc0c1\uc740 \ucd5c\uadfc \ud074\ub77c\uc6b0\ub4dc \uae30\uc220 \ub3d9\ud5a5\uacfc \uc0c8\ub86d\uac8c \uace0\ub824\ud560 \ud56d\ubaa9\uc744 \ud3ec\ud568\ud558\uc5ec \uc804\uccb4\ub97c \uad00\ud1b5\ud558\ub294 \uc571 \ud604\ub300\ud654\ub97c \uc704\ud55c \ud328\ud134\ub3c4 \ud568\uaed8 \uc18c\uac1c\ud569\ub2c8\ub2e4.<\/p>\n<\/p>\n<p><strong>1. \ucf54\ub4dc\ubca0\uc774\uc2a4<\/strong> \u2013 \ubc84\uc804 \uad00\ub9ac\ub418\ub294 \ud558\ub098\uc758 \ucf54\ub4dc\ubca0\uc774\uc2a4<\/p>\n<p>\ubc84\uc804 \ucf58\ud2b8\ub864\uc744 \ud1b5\ud574 \ucf54\ub4dc\ubca0\uc774\uc2a4\uc640 \uc571 \uc0ac\uc774\uc5d0\ub294 \ud56d\uc0c1 1\ub3001 \uad00\uacc4\uac00 \uc131\ub9bd\uc2dc\ud0a4\ub294 \uac83\uc774 \uc911\uc694\ud569\ub2c8\ub2e4. <a href=\"https:\/\/aws.amazon.com\/ko\/codecommit\/\">AWS CodeCommit<\/a>\uc740 \uc644\uc804 \uad00\ub9ac\ud615 Git \uc11c\ube44\uc2a4\ub85c\uc11c AWS \ub0b4 \uc571 \uc800\uc7a5\uc18c\ub85c\uc11c \uc720\uc6a9\ud569\ub2c8\ub2e4.<\/p>\n<p><strong>2. \uc758\uc874\uc131 \uba85\uc2dc <\/strong>\u2013 \ubcc4\ub3c4\ub85c \uc120\uc5b8\ub418\uace0 \ubd84\ub9ac\ub41c \uc758\uc874\uc131 \uae30\ubc18<\/p>\n<p>\ud2b9\uc815 \ud328\ud0a4\uc9c0\uac00 \uc554\ubb35\uc801\uc73c\ub85c \uc874\uc7ac\ud558\ub294 \uac83\uc5d0 \uc758\uc874\ud558\uc9c0 \uc54a\uc73c\uba70, \uae30\ubcf8\uc801\uc73c\ub85c, Node, Python, Ruby \uc5b8\uc5b4 \ubd80\ud130, Docker \ud30c\uc77c \ub4f1 \uba85\uc2dc\uc801 \uc120\uc5b8\uc5d0 \uc758\ud574 \uc758\uc874\uc131\uc744 \uc815\uc758\ud558\uace0 \uc774\ub97c \uac1c\ubc1c \ubc0f \uc11c\ube44\uc2a4 \ud658\uacbd\uc5d0\uc11c \uc0ac\uc6a9\ud574\uc57c \ud569\ub2c8\ub2e4. \uc11c\ubc84\ub9ac\uc2a4(Serverless) \ud658\uacbd\uc5d0\uc11c\ub294 <a href=\"https:\/\/aws.amazon.com\/ko\/serverless\/sam\/\">AWS Serverless Model(SAM)<\/a>\uc774 \ub300\ud45c\uc801\uc785\ub2c8\ub2e4.<\/p>\n<p><strong>3. \uc124\uc815 \ubd84\ub9ac<\/strong> \u2013 \ud658\uacbd \ubcc0\uc218 \ubc0f \ud30c\ub77c\ubbf8\ud130 \ubcc4\ub3c4 \uc800\uc7a5<\/p>\n<p>\uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ub0b4 \uc124\uc815 \uac12\uc744 \ud558\ub4dc-\ucf54\ub4dc\uc5d0 \uc800\uc7a5\ud574\uc11c\ub294 \uc548\ub418\uba70, \ucf54\ub4dc\uc5d0\uc11c \uc5c4\uaca9\ud558\uac8c \ubd84\ub9ac \ud574\uc11c \ub3c5\ub9bd\uc801\uc73c\ub85c \uad00\ub9ac\ud569\ub2c8\ub2e4. <a href=\"https:\/\/docs.aws.amazon.com\/ko_kr\/systems-manager\/latest\/userguide\/systems-manager-parameter-store.html\">AWS System Manager: Parameter Store<\/a>\ub97c \ud1b5\ud574 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ubc0f \uc2dc\uc2a4\ud15c \uad6c\uc131 \ub370\uc774\ud130 \uad00\ub9ac\uac00 \uac00\ub2a5\ud558\uba70, <a href=\"https:\/\/docs.aws.amazon.com\/ko_kr\/lambda\/latest\/dg\/configuration-envvars.html\">AWS Lambda Variables<\/a>\uc744 \uc0ac\uc6a9\ud558\uba74 \uc11c\ubc84\ub9ac\uc2a4 \ud568\uc218 \ub0b4 \ud658\uacbd \ubcc0\uc218\ub4e4\ub3c4 \uad6c\uc131 \uac00\ub2a5\ud569\ub2c8\ub2e4.<\/p>\n<p><strong>4. \ubc31\uc5d4\ub4dc \uc11c\ube44\uc2a4 <\/strong>\u2013 \uac01\uc885 \ubc31\uc5d4\ub4dc\ub97c \uc11c\ube44\uc2a4 \uc790\uc6d0\uc73c\ub85c \uad6c\uc131<\/p>\n<p>\uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc740 \ub85c\uceec \uc11c\ube44\uc2a4\uc640 \uc11c\ub4dc\ud30c\ud2f0 \uc11c\ube44\uc2a4\ub97c \uad6c\ubcc4\ud558\uc9c0 \uc54a\uace0 \uc591 \ucabd \ubaa8\ub450 \uc5f0\uacb0\ub41c \ub9ac\uc18c\uc2a4\ub85c\uc11c, API \ud639\uc740 \ub2e4\ub978 \ub85c\ucf00\uc774\ud130\uc640 \uc778\uc99d \uc815\ubcf4\ub97c \uc0ac\uc6a9\ud574 \uc811\uadfc\ud569\ub2c8\ub2e4. \uc2a4\ud1a0\ub9ac\uc9c0, DB, \uce90\uc2dc, \ud050 \ub4f1 \ub2e4\uc591\ud55c \uc790\uc6d0\uc744 \uc11c\ube44\uc2a4\ub85c\uc11c \ud65c\uc6a9\ud558\uae30 \uc704\ud574, AWS\uc5d0\uc11c\ub294 <a href=\"https:\/\/aws.amazon.com\/ko\/s3\">Amazon S3<\/a>, <a href=\"https:\/\/aws.amazon.com\/ko\/rds\">RDS<\/a>, <a href=\"https:\/\/aws.amazon.com\/ko\/elasticache\">ElastiCache<\/a>, <a href=\"https:\/\/aws.amazon.com\/ko\/sqs\">SQS<\/a> \ub4f1 \ub2e4\uc591\ud55c \uc644\uc804 \uad00\ub9ac\ud615 \uc11c\ube44\uc2a4\ub97c \uc774\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4<\/p>\n<p><strong>5. \ube4c\ub4dc, \ucd9c\uc2dc \ubc0f \ubc30\ud3ec<\/strong> \u2013&nbsp; \ucca0\uc800\ud558\uac8c \ubd84\ub9ac\ub41c \uac01 \uac1c\ubc1c \ub2e8\uacc4<\/p>\n<p>\ucf54\ub4dc, \uc758\uc874\uc131, \ubc14\uc774\ub108\ub9ac\ub97c \ubb36\uc5b4 \ud14c\uc2a4\ud2b8, \uc2a4\ud14c\uc774\uc9c0, \uc2e4\uc11c\ube44\uc2a4\uc5d0 \ubc30\ud3ec\ud560\ub54c, \ubc30\ud3ec \ud30c\uc77c(Artifact), \ubc30\ud3ec \uc124\uc815\uc744 \ud1b5\ud574 \ub3c5\ub9bd\uc801\uc73c\ub85c \uc8fc\uae30\uc801 \ubc30\ud3ec\uac00 \uac00\ub2a5\ud558\ub3c4\ub85d \ud574\uc57c \ud569\ub2c8\ub2e4. \ud754\ud788, \uc774\ub97c <a href=\"https:\/\/aws.amazon.com\/devops\/continuous-integration\/\">\uc9c0\uc18d\uc801 \ud1b5\ud569(CI)<\/a> \ubc0f <a href=\"https:\/\/aws.amazon.com\/ko\/devops\/continuous-delivery\/\">\ubc30\ud3ec (CD)<\/a>\ub77c\uace0 \ud558\uba70, \uc911\uc694\ud55c <a href=\"https:\/\/aws.amazon.com\/ko\/devops\/\">\ub370\ube0c\uc635\uc2a4(DevOps)<\/a> \uc6d0\uce59\uc785\ub2c8\ub2e4. AWS\uc5d0\uc11c CI\/CD \ud30c\uc774\ud504\ub77c\uc778 \uc124\uc815\uc744 \uc704\ud574\uc11c\ub294 <a href=\"https:\/\/aws.amazon.com\/ko\/getting-started\/projects\/set-up-ci-cd-pipeline\/\">AWS CodePipeline\uc744 \ube44\ub86f \ub2e4\uc591\ud55c \uc644\uc804 \uad00\ub9ac \uc11c\ube44\uc2a4<\/a>\ub97c \uc774\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p><strong>6. \ud504\ub85c\uc138\uc2a4<\/strong> \u2013 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ubb34\uc0c1\ud0dc(stateless) \ud504\ub85c\uc138\uc2a4\ub85c \uc2e4\ud589<\/p>\n<p>6\ubc88\uc9f8 \uc6d0\uce59\ubd80\ud130\ub294 \ub192\uc740 \ud655\uc7a5\uc131\uc744 \uac00\uc9c4 \uc571\uc744 \uac1c\ubc1c\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud55c \uac00\uc774\ub4dc\uc785\ub2c8\ub2e4. \uc571 \ub0b4\ubd80\uc5d0\uc11c \ub514\uc2a4\ud06c\ub098 \uba54\ubaa8\ub9ac\uc5d0 \uc800\uc7a5\ud558\ub294 \ucfe0\ud0a4\ub098 \uc138\uc158 \ub4f1\uc744 \uac00\uc838 \uac00\uc9c0 \uc54a\ub294 \ubb34\uc0c1\ud0dc(stateless)\ub85c \ub9cc\ub4e4\uac83\uc744 \uad8c\uace0 \ud569\ub2c8\ub2e4. \ub9cc\uc57d \uc720\uc9c0\ub420 \ud544\uc694\uac00 \uc788\ub294 \ub370\uc774\ud130\ub294 \ub370\uc774\ud130\ubca0\uc774\uc2a4 (\ud639\uc740 \uce90\uc2dc) \uac19\uc740 \uc548\uc815\ub41c \ubc31\uc5d4\ub4dc \uc11c\ube44\uc2a4\uc5d0 \uc800\uc7a5\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4. \uae30\ubcf8\uc801\uc73c\ub85c <a href=\"https:\/\/aws.amazon.com\/ko\/lambda\">AWS Lambda<\/a> \uae30\ubc18 \uc11c\ubc84\ub9ac\uc2a4 \uc571\uc744 \uac1c\ubc1c\ud55c\ub2e4\uba74, \ubb34\uc0c1\ud0dc \uc571\uc744 \uc27d\uac8c \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p><strong>7. \ud3ec\ud2b8 \ubc14\uc778\ub529<\/strong> \u2013 \ud3ec\ud2b8 \ubc14\uc778\ub529\uc744 \ud1b5\ud55c \uc11c\ube44\uc2a4 \uc81c\uacf5<\/p>\n<p>\ucd5c\uadfc\uc5d0\ub294 \ucee8\ud14c\uc774\ub108\ub97c \uae30\ubc18\uc73c\ub85c \ud55c \uc11c\ubc84 \ub0b4\uc5d0\uc11c \ub2e4\uc591\ud55c \uc11c\ube44\uc2a4\uac00 \ub3c5\ub9bd\uc801\uc73c\ub85c \uc218\ud589\ub420 \uc218 \uc788\uae30 \ub54c\ubb38\uc5d0 \ub3c5\ub9bd \ud3ec\ud2b8\ub97c \ubc14\uc778\ub529\ud558\uc5ec \uc11c\ube44\uc2a4\ub85c \uc81c\uacf5\ud558\uace0, \uac1c\ubcc4 \ud3ec\ud2b8\ub85c \ub4e4\uc5b4\uc624\ub294 \uc694\uccad\uc744 \ucc98\ub9ac\ud558\ub294 \uac83\uc774 \uc77c\ubc18\uc801\uc785\ub2c8\ub2e4. AWS\uc5d0\uc11c\ub294 <a href=\"https:\/\/aws.amazon.com\/ko\/blogs\/korea\/new-advanced-request-routing-for-aws-application-load-balancers\/\">Application Load Balancing<\/a>\uc744 \ud1b5\ud55c URL\ubcc4 \uace0\uae09 \ub77c\uc6b0\ud305\uc744 \ud560 \uc218 \uc788\uace0, <a href=\"https:\/\/aws.amazon.com\/ko\/premiumsupport\/knowledge-center\/dynamic-port-mapping-ecs\/\">Amazon ECS\uc5d0 \ub3d9\uc801 \ud3ec\ud2b8 \ub9f5\ud551<\/a>\uc744 \ud1b5\ud574 \uac1c\ubcc4 \ucee8\ud14c\uc774\ub108 \uc11c\ube44\uc2a4 \uc81c\uacf5\uc774 \uac00\ub2a5\ud569\ub2c8\ub2e4.&nbsp; \uc11c\ubc84\ub9ac\uc2a4\uc571\uc758 \uacbd\uc6b0, \ud3ec\ud2b8 \ubc14\uc778\ub529 \ub300\uc2e0 \ud0c0 API\ub098 AWS&nbsp; \uc11c\ube44\uc2a4\uc5d0\uc11c \ubc1c\uc0dd\ud558\ub294 \uc774\ubca4\ud2b8 \uae30\ubc18\uc73c\ub85c \ub3d9\uae30 (push), \ube44\ub3d9\uae30(event), Poll-based \ubc29\uc2dd\uc73c\ub85c \ub3d9\uc791\ud558\uac8c \ub429\ub2c8\ub2e4.<\/p>\n<p><strong>8. \ub3d9\uc2dc\uc131(Concurrency)<\/strong> \u2013 \ud504\ub85c\uc138\uc2a4 \ubaa8\ub378\uc744 \uc0ac\uc6a9\ud55c \ud655\uc7a5<\/p>\n<p>\uac01 \uc571\uc744 \ud504\ub85c\uc138\uc2a4 \ubaa8\ub378\uc744 \uae30\ubc18\uc73c\ub85c \uc218\uc9c1\uc801(Scale-up) \ubc0f \uc218\ud3c9\uc801(Scale-out) \ud655\uc7a5\uc744 \uc81c\uacf5\ud560 \uc218 \uc788\ub3c4\ub85d \ud558\ub77c\ub294 \uc6d0\uce59\uc785\ub2c8\ub2e4. AWS \uc11c\ube44\uc2a4\ub4e4\uc740 \uaddc\ubaa8\uc5d0 \ub530\ub978 \ud655\uc7a5\uc131\uc774 \uae30\ubcf8\uc801\uc73c\ub85c \uc81c\uacf5 \ub418\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uac00\uc7a5 \ub300\ud45c\uc801\uc778 <a href=\"https:\/\/docs.aws.amazon.com\/ko_kr\/autoscaling\/ec2\/userguide\/what-is-amazon-ec2-auto-scaling.html\">Amazn EC2 Auto Scaling<\/a> \ubfd0\ub9cc \uc544\ub2c8\ub77c, <a href=\"https:\/\/aws.amazon.com\/ko\/autoscaling\/\">AWS Auto Scaling<\/a> (ECS, EMR, SageMaker \ub4f1)\uc5d0\uc11c \uc790\ub3d9 \ud655\uc7a5 \uae30\ub2a5\uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4. \ud2b9\ud788, \uc11c\ubc84\ub9ac\uc2a4 \uae30\ubc18\uc758 <a href=\"https:\/\/aws.amazon.com\/ko\/lambda\">AWS Lambda<\/a> (\ucef4\ud4e8\ud305), <a href=\"https:\/\/docs.aws.amazon.com\/ko_kr\/AmazonECS\/latest\/developerguide\/getting-started-fargate.html\">AWS Fargate<\/a> (\ucee8\ud14c\uc774\ub108), <a href=\"https:\/\/aws.amazon.com\/ko\/blogs\/korea\/aurora-serverless-in-seoul-region\/\">Aurora Serverless <\/a>(RDB), <a href=\"https:\/\/aws.amazon.com\/ko\/blogs\/korea\/amazon-dynamodb-on-demand-no-capacity-planning-and-pay-per-request-pricing\/\">DynamoDB On-demand<\/a> (NoSQL) \ub4f1 \ub2e4\uc591\ud55c \uc790\ub3d9 \ud655\uc7a5 \uae30\ub2a5\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/p>\n<p><strong>9. \ud3d0\uae30 \uac00\ub2a5(Disposability)<\/strong> \u2013 \ube60\ub978 \uc2dc\uc791\uacfc \uadf8\ub808\uc774\uc2a4\ud480 \uc167\ub2e4\uc6b4(graceful shutdown)\uc744 \ud1b5\ud55c \uc548\uc815\uc131 \uadf9\ub300\ud654<\/p>\n<p>\uac01 \ud504\ub85c\uc138\uc2a4\ub294 \uac04\ub2e8\ud558\uac8c \ubc14\ub85c \uc2dc\uc791\ud558\uac70\ub098 \uc885\ub8cc\ub420 \uc218 \uc788\ub3c4\ub85d \ud574\uc11c \ud0c4\ub825\uc131\uc788\ub294 \ud655\uc7a5\uacfc \ucf54\ub4dc \ubc0f \uc124\uc815\uc758 \ubcc0\ud654\ub97c \ube60\ub974\uac8c \ubc30\ud3ec\ud560 \uc218 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4. \ud074\ub77c\uc6b0\ub4dc \uae30\ubc18\uc5d0\uc11c \uc11c\ube44\uc2a4\uc758 \ubcc0\ud654\ub97c \ube60\ub974\uac8c \ubaa8\ub2c8\ud130\ub9c1 \ud558\ub294 \ub3c4\uad6c\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4. AWS\uc5d0\uc11c\ub294 \ub2e4\uc591\ud55c AWS \ubaa8\ub2c8\ud130\ub9c1 \ub3c4\uad6c\ub97c \ud1b5\ud55c \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uc694\uccad\/\uc751\ub2f5 \ud504\ub85c\ud30c\uc77c\uc774 \uac00\ub2a5\ud558\uba70, \ub300\ud45c\uc801\uc73c\ub85c <a href=\"https:\/\/aws.amazon.com\/ko\/cloudwatch\">Amazon CloudWatch<\/a>\uc640 <a href=\"https:\/\/aws.amazon.com\/ko\/xray\">AWS X-Ray<\/a>\uac00 \uc788\uc2b5\ub2c8\ub2e4. \uadf8 \uc678\uc5d0 \ub2e4\uc591\ud55c \uc624\ud508 \uc18c\uc2a4 \uae30\ubc18 \ubaa8\ub2c8\ud130\ub9c1 \ub3c4\uad6c\ub97c \uc0ac\uc6a9\ud560 \uc218 \ub3c4 \uc788\uaca0\uc8e0.<\/p>\n<p><strong>10. \uac1c\ubc1c\/\ud504\ub85c\ub355\uc158 \ud658\uacbd \uc77c\uce58<\/strong> \u2013 \uac1c\ubc1c, \uc2a4\ud14c\uc774\uc9d5, \ud504\ub85c\ub355\uc158 \ud658\uacbd\uc744 \uac19\ub3c4\ub85d \uc720\uc9c0<\/p>\n<p>\u201c\uac1c\ubc1c, \ud14c\uc2a4\ud2b8 \ubc0f \uc815\uc2dd \uc11c\ube44\uc2a4 \ud658\uacbd\uc744 \ucd5c\ub300\ud55c \ub3d9\uc77c\ud558\uac8c \uc720\uc9c0\ud558\ub77c\u201d\ub294 \ubaa8\ubc94 \uc0ac\ub840\ub97c \uc704\ud574 \ub370\ube0c\uc635\uc2a4 \ud658\uacbd\uc758 \ucf54\ub4dc \uae30\ubc18 \uc790\ub3d9\ud654\uc640 \uc9c0\uc18d\uc801 \ud1b5\ud569 \ubc0f \ubc30\ud3ec (CI\/CD)\ub294 \ud544\uc218\uc801\uc785\ub2c8\ub2e4. \u20185\ubc88 \ube4c\ub4dc, \ucd9c\uc2dc \ubc0f \ubc30\ud3ec\u2019\uc5d0 \ud65c\uc6a9\ub418\ub294 AWS \uae30\ubc18 \ucf54\ub4dc \uc2dc\ub9ac\uc988\ub97c \ud1b5\ud569\uc801\uc73c\ub85c \ud65c\uc6a9\ud560 \uc218 \uc788\ub294 \ud504\ub85c\uc81d\ud2b8 \uad00\ub9ac \ub3c4\uad6c\ubfd0\ub9cc \uc544\ub2c8\ub77c,&nbsp;&nbsp; \uc18c\uaddc\ubaa8 \ud300\uc744 \uc704\ud55c \ub370\ube0c\uc635\uc2a4 \uc6b4\uc601 \ub3c4\uad6c\uc778 <a href=\"https:\/\/aws.amazon.com\/ko\/codestar\">AWS CodeStar<\/a>\uc640 \ud074\ub77c\uc6b0\ub4dc \uae30\ubc18 IDE \ubc0f \ub514\ubc84\uae45, \uc190\uc26c\uc6b4 \uac1c\ubc1c \ud611\uc5c5\uc744 \uc81c\uacf5\ud558\ub294 <a href=\"https:\/\/aws.amazon.com\/ko\/cloud9\">AWS Cloud9<\/a> \uc5ed\uc2dc \uac1c\ubc1c \ubc0f \uc2e4\uc11c\ube44\uc2a4 \ud658\uacbd\uc744 \ud1b5\ud569\ud558\ub294\ub370 \uc720\ub9ac\ud55c \uc11c\ube44\uc2a4\uc785\ub2c8\ub2e4.<\/p>\n<p><strong>11. \ub85c\uadf8 <\/strong>\u2013 \ub85c\uadf8\ub97c \uc774\ubca4\ud2b8 \uc2a4\ud2b8\ub9bc\uc73c\ub85c \ucde8\uae09<\/p>\n<p>\ub85c\uadf8 \ud30c\uc77c\uc744 \uc791\uc131\ud558\uac70\ub098, \uad00\ub9ac\ud558\uae30 \ubcf4\ub2e4 \uc774\ubca4\ud2b8 \uc2a4\ud2b8\ub9bc\uc744 \uad00\ub9ac\ud558\ub294 \uac83\uc774 \uc911\uc694\ud569\ub2c8\ub2e4. \uadf8\ub798\uc57c\ub9cc \uc7a5\uae30\uac04\uc5d0 \uac78\uccd0 \uc571\uc758 \ub3d9\uc791\uc744 \uc870\uc0ac\ud560 \uc218 \uc788\ub294 \uac15\ub825\ud568\uacfc \uc720\uc5f0\uc131\uc744 \uac00\uc9c0\uac8c \ub429\ub2c8\ub2e4. \ub300\uac1c Logplex, Fluentd \uac19\uc740 \uc624\ud508 \uc18c\uc2a4 \ub85c\uadf8 \ub77c\uc6b0\ud130\ub97c \uc0ac\uc6a9\ud558\uc5ec, Hadoop\/Hive \ud639\uc740 Splunk\uac19\uc740 \ubc94\uc6a9 \ub370\uc774\ud130 \ubd84\uc11d \uc2dc\uc2a4\ud15c\uc744 \ud65c\uc6a9\ud569\ub2c8\ub2e4. AWS\uc5d0\uc11c\ub294 \ub2e4\uc591\ud55c \ub85c\uadf8\ub97c \uc2a4\ud2b8\ub9bc\uc73c\ub85c \ucc98\ub9ac\ud558\ub294 \ub2e4\uc591\ud55c \uc11c\ube44\uc2a4\uac00 \uc81c\uacf5 \uc911\uc785\ub2c8\ub2e4. \ub300\ud45c\uc801\uc73c\ub85c <a href=\"https:\/\/aws.amazon.com\/ko\/kinesis\">Amazon Kinesis Data Streams<\/a>, <a href=\"https:\/\/aws.amazon.com\/ko\/msk\">Amazon Managed Streaming for Kafka<\/a>, <a href=\"https:\/\/aws.amazon.com\/ko\/elasticsearch-service\/\">Amazon Elasticsearch Service<\/a> \ub4f1\uc774 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p><strong>12. Admin \ud504\ub85c\uc138\uc2a4<\/strong> \u2013 \uad00\ub9ac \uc791\uc5c5\uc744 \uc2e4\uc11c\ube44\uc2a4\uc640 \ud568\uaed8 \uad6c\ud604 \ubc0f \ubc30\ud3ec<\/p>\n<p>\uad00\ub9ac \uc791\uc5c5\uacfc \ubc31 \uc624\ud53c\uc2a4 \uc5c5\ubb34\ub294 \uae30\uc874 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uac19\uc740 \ud658\uacbd\uc5d0\uc11c \ub3d9\uc77c \ud615\ud0dc\ub85c \ucde8\uae09\ud558\ub3c4\ub85d \ud558\ub294 \uac83\uc740 \ub9e4\uc6b0 \uc911\uc694\ud569\ub2c8\ub2e4. \ud074\ub77c\uc6b0\ub4dc \ub124\uc774\ud2f0\ube0c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \uad00\ub9ac \uc791\uc5c5\uc744 \uc704\ud574 \ub2e4\uc591\ud55c \uc6cc\ud06c \ud50c\ub85c\ub97c \uad6c\uc131\ud558\ub3c4\ub85d \uc9c0\uc6d0\ud574 \uc8fc\ub294 \uc11c\ube44\uc2a4\ub4e4\uc774 \uc788\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/aws.amazon.com\/ko\/sqs\">Amazon Simple Queue Service<\/a>\ub97c \ud050(Queue) \uae30\ubc18 \uc791\uc5c5\uc744 \uad6c\uc131\ud558\uac70\ub098, <a href=\"https:\/\/aws.amazon.com\/ko\/step-functions\">AWS Step Functions<\/a>\uc740 \ub2e4\uc591\ud55c \uad00\ub9ac \uc791\uc5c5\uc744 \ub9cc\ub4e4 \uc218 \uc788\uace0, <a href=\"https:\/\/aws.amazon.com\/ko\/eventbridge\">Amazon EventBridge<\/a>\ub97c \ud1b5\ud574 \uc774\ubca4\ud2b8\ub85c \ub4e4\uc5b4\uc624\ub294 \uc791\uc5c5\uc744 SaaS\ub85c \uc5f0\ub3d9 \uac00\ub2a5\ud569\ub2c8\ub2e4.<\/p>\n<p>\uc9c0\uae08\uae4c\uc9c0 \ud074\ub77c\uc6b0\ub4dc \uae30\ubc18 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uc704\ud55c 12\uac00\uc9c0 \uc6d0\uce59\uacfc \uc218\ud589\ud558\uae30 \uc704\ud574 \ud65c\uc6a9 \uac00\ub2a5\ud55c AWS \uc11c\ube44\uc2a4\ub97c \ub300\ub7b5\uc801\uc73c\ub85c \uc54c\uc544\ubcf4\uc558\uc2b5\ub2c8\ub2e4. \uc880 \ub354 \uc790\uc138\ud55c \uc0ac\ud56d\uc740 \uac01 \uc81c\ud488 \ud648\ud398\uc774\uc9c0\uc640 \uc2dc\uc791\ud558\uae30(Getting Started) \ubc0f \uc2e4\uc2b5 \uc790\ub8cc\ub97c \ucc38\uace0\ud558\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4.<\/p>\n<p>\ub9c8\uc9c0\ub9c9\uc73c\ub85c <a href=\"https:\/\/www.youtube.com\/watch?v=jufe_sHejXc\">5 Years of 12 Factor Apps<\/a> \uc601\uc0c1\uc744 \ubcf4\uba74,&nbsp; 12\uac00\uc9c0 \uc6d0\uce59\uc774 \ub098\uc628 \ud6c4 \uc2dc\ub300\uc801 \ubcc0\ud654\uc5d0 \ub530\ub77c \ucd94\uac00\uc801\uc73c\ub85c \uace0\ub824\ud560 \uc0ac\ud56d\uc73c\ub85c \uc571 \ubaa8\ub2c8\ud130\ub9c1(\uad00\uc81c), \uc790\ub3d9\ud654, \ubcf4\uc548 \uac15\ud654\ub97c \ub4e4\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub294 \ud074\ub77c\uc6b0\ub4dc\uc5d0\uc11c \uac00\uc7a5 \uc6b0\uc120 \uc21c\uc704\ub85c \ub450\ub294 \uac83\ub4e4 \uc911\uc5d0 \ud558\ub098\ub85c\uc11c \uac01 \ubd84\uc57c\ubcc4\ub85c \ub2e4\uc591\ud55c AWS \uc11c\ube44\uc2a4\uac00 \uc81c\uacf5\ub418\uace0 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<\/p>\n<p>AWS\uc5d0\uc11c\ub294 \uc774\ub7ec\ud55c 12\uac00\uc9c0 \uc571 \uac1c\ubc1c \uc6d0\uce59\uc744 \ud074\ub77c\uc6b0\ub4dc \ub124\uc774\ud2f0\ube0c \uae30\ubc18\uc758 \uc571 \ud604\ub300\ud654\ub77c\uace0 \uba85\uba85\ud558\uace0, \ub9c8\uc774\ud06c\ub85c\uc11c\ube44\uc2a4 \uc544\ud0a4\ud14d\ucc98, \uc11c\ubc84\ub9ac\uc2a4\uc640 \ub370\ube0c\uc635\uc2a4\ub77c\ub294 \ud328\ud134\uc744 \uae30\ubc18\uc73c\ub85c \uc124\uba85\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \ubcf4\ub2e4 \uc790\uc138\ud55c \uac83\uc740 <a href=\"https:\/\/aws.amazon.com\/ko\/events\/application\/overview\/\">\uc571 \uac1c\ubc1c \ud604\ub300\ud654 \uae30\uc220 \ubc31\uc11c<\/a>\ub97c \ucc38\uace0\ud558\uc2e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\u2013 <a href=\"https:\/\/twitter.com\/channyun\">Channy(\uc724\uc11d\ucc2c)<\/a>;<\/p>\n<p>Source: <a href=\"https:\/\/aws.amazon.com\/ko\/blogs\/korea\/twelve-factor-app-on-cloud-native\/\" target=\"_blank\" rel=\"noopener noreferrer\">AWS \ud074\ub77c\uc774\ub4dc \ub124\uc774\ud2f0\ube0c \uae30\ubc18 Twelve Factor \uc571 \uac1c\ubc1c \ubc29\ubc95<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\"><p>AWS \ud074\ub77c\uc774\ub4dc \ub124\uc774\ud2f0\ube0c \uae30\ubc18 Twelve Factor \uc571 \uac1c\ubc1c \ubc29\ubc95 2012\ub144 Heroku\uc5d0\uc11c \uc77c\ud558\ub358 \uac1c\ubc1c\uc790\ub4e4\uc740 \ud074\ub77c\uc6b0\ub4dc \uc2dc\ub300\uc5d0 \uc801\ud569\ud55c \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uac1c\ubc1c\uacfc \ubc30\ud3ec \ubc29\ubc95\uc5d0 \ub9de\ub294 12\uac00\uc9c0 \uc6d0\uce59(Twelve Factor)\uc744 \uac1c\ub150\ud654 \ud588\uc2b5\ub2c8\ub2e4.&nbsp; \uc774\uc640 \ube44\uc2b7\ud55c \uc6d0\uce59 \uc911 \ub354 \ub098\uc740 \ucf54\ub4dc\ub97c \uc704\ud55c 12\uac00\uc9c0 Joel Test\ub77c\ub294 \uac83\ub3c4 \uc720\uba85\ud558\uc8e0. Joel Test\uac00 \ucf54\ub4dc\uc640 \uac1c\ubc1c\uc5d0 \ub300\ud55c \uac83\uc774\ub77c\uba74 Twelve-Factor App \uc6d0\uce59\uc758 \uc8fc\uc694 \uac1c\ubc1c \ub3d9\uae30\ub294 \uc544\ub798\uc640 \uac19\uc2b5\ub2c8\ub2e4. \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uc124\uc815 \uc790\ub3d9\ud654\ub97c \uc704\ud55c \uc808\ucc28(declarative)\ub97c \uccb4\uacc4\ud654 \ud558\uc5ec \uc2e0\uaddc \uac1c\ubc1c\uc790\uc758 \ud559\uc2b5 \ube44\uc6a9 \uc808\uac10 \uc6b4\uc601 \uccb4\uc81c\uc5d0 \ub530\ub77c \ub2e4\ub978 \ubd80\ubd84\uc744 \uc815\uc758\ud558\uace0, \ubc30\ud3ec \ubc0f \uc2e4\ud589 \ud658\uacbd \uc0ac\uc774\uc758 \uc774\uc2dd\uc131 \uadf9\ub300\ud654 \ud074\ub77c\uc6b0\ub4dc \ud50c\ub7ab\ud3fc \ubc30\ud3ec\uc5d0 \uc801\ud569\ud558\uba70, \uc11c\ubc84\uc640 \ubc30\ud3ec \uc2dc\uc2a4\ud15c \uad00\ub9ac \ucd5c\uc18c\ud654 \uac1c\ubc1c \ud658\uacbd\uacfc \uc6b4\uc601 \ud658\uacbd\uc758 \ucc28\uc774\ub97c \ucd5c\uc18c\ud654\ud558\uace0 \ubbfc\ucca9\uc131\uc744 \uc704\ud55c \uc9c0\uc18d\uc801\uc778 \ubc30\ud3ec \uc9c0\ud5a5 \uac1c\ubc1c \ub3c4\uad6c, \uc544\ud0a4\ud14d\ucc98, \uac1c\ubc1c \ubc29\uc2dd \ubcc0\ud654 \uc5c6\uc774\uc11c\ube44\uc2a4 \ud655\uc7a5(scale up\/out) \uac00\ub2a5 \uc774\ub7ec\ud55c 12\uac00\uc9c0 \uc6d0\uce59(Twelve Factor)\uc744 \uae30\ubc18\uc73c\ub85c, AWS \ud074\ub77c\uc6b0\ub4dc \uae30\ubc18\uc73c\ub85c \uac1c\ubcc4 \uc11c\ube44\uc2a4\ub97c \uc811\ubaa9\ud558\ub294 \uc194\ub8e8\uc158\uc774 \uc5c6\uc744\uae4c \uace0\ubbfc\ud588\uc2b5\ub2c8\ub2e4. \uc544\ub798 \uc601\uc0c1\uc740 \ucd5c\uadfc \ud074\ub77c\uc6b0\ub4dc \uae30\uc220 \ub3d9\ud5a5\uacfc \uc0c8\ub86d\uac8c \uace0\ub824\ud560 \ud56d\ubaa9\uc744 \ud3ec\ud568\ud558\uc5ec \uc804\uccb4\ub97c \uad00\ud1b5\ud558\ub294 \uc571 \ud604\ub300\ud654\ub97c \uc704\ud55c \ud328\ud134\ub3c4 \ud568\uaed8 \uc18c\uac1c\ud569\ub2c8\ub2e4. <a class=\"mh-excerpt-more\" href=\"https:\/\/jirak.net\/wp\/aws-%ed%81%b4%eb%9d%bc%ec%9d%b4%eb%93%9c-%eb%84%a4%ec%9d%b4%ed%8b%b0%eb%b8%8c-%ea%b8%b0%eb%b0%98-twelve-factor-%ec%95%b1-%ea%b0%9c%eb%b0%9c-%eb%b0%a9%eb%b2%95\/\" title=\"AWS \ud074\ub77c\uc774\ub4dc \ub124\uc774\ud2f0\ube0c \uae30\ubc18 Twelve Factor \uc571 \uac1c\ubc1c \ubc29\ubc95\">[ more&#8230; ]<\/a><\/p>\n<\/div>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[169],"tags":[656],"class_list":["post-37653","post","type-post","status-publish","format-standard","hentry","category-news","tag-aws"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/posts\/37653","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/comments?post=37653"}],"version-history":[{"count":1,"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/posts\/37653\/revisions"}],"predecessor-version":[{"id":37654,"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/posts\/37653\/revisions\/37654"}],"wp:attachment":[{"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/media?parent=37653"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/categories?post=37653"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/tags?post=37653"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}