{"id":7,"date":"2025-03-21T10:21:03","date_gmt":"2025-03-21T01:21:03","guid":{"rendered":"https:\/\/wordpress.koseongnam.com\/?p=7"},"modified":"2025-03-22T19:09:10","modified_gmt":"2025-03-22T10:09:10","slug":"%eb%b9%85%eb%8d%b0%ec%9d%b4%ed%84%b0-%ea%b8%b0%ec%88%a0-%ec%a2%85%ed%95%a9-%ed%95%99%ec%8a%b5","status":"publish","type":"post","link":"https:\/\/wordpress.koseongnam.com\/?p=7","title":{"rendered":"\ube45\ub370\uc774\ud130 \uae30\uc220 \uc885\ud569 \ud559\uc2b5"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\" id=\"1.-15%EC%8B%9C%EA%B0%84-%EC%BB%A4%EB%A6%AC%ED%81%98%EB%9F%BC-%EB%A1%9C%EB%93%9C%EB%A7%B5\">15\uc2dc\uac04 \ucee4\ub9ac\ud058\ub7fc \ub85c\ub4dc\ub9f5<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\uc2dc\uac04<\/th><th>\uc8fc\uc81c<\/th><th>\uc138\ubd80 \ud559\uc2b5 \ubaa9\ud45c<\/th><\/tr><\/thead><tbody><tr><td>1\uc2dc\uac04<\/td><td>GCP \ubc0f \ube45\ub370\uc774\ud130 \uac1c\uc694<\/td><td>GCP\uc758 \uae30\ubcf8 \uad6c\uc131 \uc694\uc18c\uc640 \ube45\ub370\uc774\ud130 \ucc98\ub9ac\uc758 \ud544\uc694\uc131 \uc774\ud574<\/td><\/tr><tr><td>4\uc2dc\uac04<\/td><td>GCP \uae30\ubc18 \ube45\ub370\uc774\ud130 \uc544\ud0a4\ud14d\ucc98<\/td><td>Cloud Storage, BigQuery, Dataflow \ub4f1\uc758 \uae30\ub2a5\uacfc \uc5ed\ud560 \uc774\ud574<\/td><\/tr><tr><td>3\uc2dc\uac04<\/td><td>GCP \ubd84\uc11d \uc54c\uace0\ub9ac\uc998<\/td><td>Vertex AI\uc640 AutoML Tables\uc744 \ud1b5\ud55c \uba38\uc2e0\ub7ec\ub2dd \ubaa8\ub378 \uac1c\ubc1c<\/td><\/tr><tr><td>3\uc2dc\uac04<\/td><td>GCP \uc2e4\uc2dc\uac04 \ucc98\ub9ac \uae30\uc220<\/td><td>Dataflow\uc640 \uc2a4\ud2b8\ub9ac\ubc0d \ud30c\uc774\ud504\ub77c\uc778 \uad6c\uc131 \ubc0f \uc624\ub958 \ucc98\ub9ac \uc774\ud574<\/td><\/tr><tr><td>2\uc2dc\uac04<\/td><td>\uc628\ub77c\uc778 \uc0cc\ub4dc\ubc15\uc2a4 \uae30\ubc18 Git \ud65c\uc6a9<\/td><td>Cloud Source Repositories, CI\/CD \ud30c\uc774\ud504\ub77c\uc778 \uad6c\uc131<\/td><\/tr><tr><td>2\uc2dc\uac04<\/td><td>\uc885\ud569 \uc2e4\uc2b5<\/td><td>\uc2e4\uc2b5 \ud504\ub85c\uc81d\ud2b8 \uc218\ud589 \ubc0f \uacb0\uacfc \ubc1c\ud45c<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"2.-gcp-%EA%B8%B0%EB%B0%98-%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98\">2. GCP \uae30\ubc18 \ube45\ub370\uc774\ud130 \uc544\ud0a4\ud14d\ucc98<\/h2>\n\n\n\n<p>GCP\ub294 \ub300\uaddc\ubaa8 \ub370\uc774\ud130 \ucc98\ub9ac\uc640 \ubd84\uc11d\uc744 \uc704\ud574 \ub2e4\uc591\ud55c \uad00\ub9ac\ud615 \uc11c\ube44\uc2a4\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4. GCP \uae30\ubc18 \ube45\ub370\uc774\ud130 \uc544\ud0a4\ud14d\ucc98\uc758 \uc8fc\uc694 \uad6c\uc131 \uc694\uc18c\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"2.1-%EC%A3%BC%EC%9A%94-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8\">2.1 \uc8fc\uc694 \ucef4\ud3ec\ub10c\ud2b8<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\uc11c\ube44\uc2a4<\/th><th>\uc124\uba85<\/th><\/tr><\/thead><tbody><tr><td><strong>Cloud Storage<\/strong><\/td><td>\ub370\uc774\ud130 \uc800\uc7a5\uc18c\ub85c\uc11c, \uc815\ud615\/\ube44\uc815\ud615 \ub370\uc774\ud130\ub97c \ub300\uc6a9\ub7c9\uc73c\ub85c \ubcf4\uad00\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/td><\/tr><tr><td><strong>BigQuery<\/strong><\/td><td>\uc11c\ubc84\ub9ac\uc2a4 \ub370\uc774\ud130 \uc6e8\uc5b4\ud558\uc6b0\uc2a4\ub85c,&nbsp;<strong>\ub300\uaddc\ubaa8 \ub370\uc774\ud130\uc14b<\/strong>\uc5d0 \ub300\ud574 \ube60\ub978 SQL \uae30\ubc18 \ucffc\ub9ac\uc640 \ubd84\uc11d\uc744 \uc218\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/td><\/tr><tr><td><strong>Dataflow<\/strong><\/td><td>Apache Beam\uc744 \uae30\ubc18\uc73c\ub85c \ud55c \ub370\uc774\ud130 \ucc98\ub9ac \ud30c\uc774\ud504\ub77c\uc778 \uc11c\ube44\uc2a4\ub85c,&nbsp;<strong>\uc2e4\uc2dc\uac04 \uc2a4\ud2b8\ub9ac\ubc0d<\/strong>\uacfc&nbsp;<strong>\ubc30\uce58 \ucc98\ub9ac<\/strong>&nbsp;\ubaa8\ub450\ub97c \uc9c0\uc6d0\ud569\ub2c8\ub2e4.<\/td><\/tr><tr><td><strong>Dataproc<\/strong><\/td><td>Hadoop\uacfc Spark \ud074\ub7ec\uc2a4\ud130\ub97c \uc2e0\uc18d\ud558\uac8c \uad6c\uc131\ud558\uc5ec \uc804\ud1b5\uc801\uc778 \ubc30\uce58 \ucc98\ub9ac \ubc0f ETL \uc791\uc5c5\uc744 \uc2e4\ud589\ud560 \uc218 \uc788\ub294 \uc11c\ube44\uc2a4\uc785\ub2c8\ub2e4.<\/td><\/tr><tr><td><strong>Pub\/Sub<\/strong><\/td><td>\ube44\ub3d9\uae30 \uba54\uc2dc\uc9d5 \uc11c\ube44\uc2a4\ub85c, \ub2e4\uc591\ud55c \ub370\uc774\ud130 \uc18c\uc2a4\ub85c\ubd80\ud130&nbsp;<strong>\uc2e4\uc2dc\uac04<\/strong>&nbsp;\ub370\uc774\ud130 \uc774\ubca4\ud2b8\ub97c \uc218\uc9d1 \ubc0f \uc804\ud30c\ud569\ub2c8\ub2e4.<\/td><\/tr><tr><td><strong>Cloud Functions<\/strong>&nbsp;\ubc0f&nbsp;<strong>Cloud Composer<\/strong><\/td><td>\ub370\uc774\ud130 \ucc98\ub9ac \ud30c\uc774\ud504\ub77c\uc778\uc758 \uc790\ub3d9\ud654 \ubc0f \uc624\ucf00\uc2a4\ud2b8\ub808\uc774\uc158(\uc608: DAG \ud328\ud134)\uc744 \uc9c0\uc6d0\ud558\uc5ec \ubcf5\uc7a1\ud55c \uc6cc\ud06c\ud50c\ub85c\ub97c \uad00\ub9ac\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"2.2-%EC%8B%A4%EC%8B%9C%EA%B0%84-%EC%8A%A4%ED%8A%B8%EB%A6%AC%EB%B0%8D-vs-%EB%B0%B0%EC%B9%98-%EC%B2%98%EB%A6%AC\">2.2 \uc2e4\uc2dc\uac04 \uc2a4\ud2b8\ub9ac\ubc0d vs \ubc30\uce58 \ucc98\ub9ac<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\uc2e4\uc2dc\uac04 \uc2a4\ud2b8\ub9ac\ubc0d \ucc98\ub9ac<\/strong><br>\u226b Pub\/Sub\uc640 Dataflow\ub97c \uc870\ud569\ud558\uc5ec, \ub370\uc774\ud130\ub97c\u00a0<strong>\uc2e4\uc2dc\uac04<\/strong>\uc73c\ub85c \uc218\uc9d1\ud558\uace0 Dataflow\uc5d0\uc11c \uc989\uac01\uc801\uc73c\ub85c \ucc98\ub9ac\ud558\uc5ec \ube60\ub978 \ubd84\uc11d\uacfc \uc2dc\uac01\ud654\ub97c \uc9c0\uc6d0\ud569\ub2c8\ub2e4.  <br>\ucd9c\ucc98: Pub\/Sub to BigQuery template(<a href=\"https:\/\/cloud.google.com\/dataflow\/docs\/guides\/templates\/provided\/pubsub-to-bigquery\">https:\/\/cloud.google.com\/dataflow\/docs\/guides\/templates\/provided\/pubsub-to-bigquery<\/a>)<\/li>\n\n\n\n<li><strong>\ubc30\uce58 \ucc98\ub9ac<\/strong><br>\u226b Dataproc\uacfc Dataflow\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc815\uae30\uc801\uc778 \uc2dc\uac04 \uac04\uaca9\uc73c\ub85c \ub300\ub7c9\uc758 \ub370\uc774\ud130\ub97c \ud55c\ubc88\uc5d0 \ucc98\ub9ac\ud568\uc73c\ub85c\uc368 ETL \uc791\uc5c5\uc774\ub098 \uc815\uae30 \ubcf4\uace0\uc11c\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4. <br>\ucd9c\ucc98: Google Cloud Blog(<a href=\"https:\/\/cloud.google.com\/dataproc\/docs\/concepts\/overview?hl=ko\">https:\/\/cloud.google.com\/dataproc\/docs\/concepts\/overview?hl=ko<\/a>)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"2.3-cloud-storage%2C-bigquery%2C-dataproc-%EA%B0%84-%EC%B0%A8%EC%9D%B4%EC%A0%90-%EB%B9%84%EA%B5%90%ED%91%9C\">2.3 Cloud Storage, BigQuery, Dataproc \uac04 \ucc28\uc774\uc810 \ube44\uad50\ud45c<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\uc11c\ube44\uc2a4<\/th><th>\uc720\ud615<\/th><th>\ucc98\ub9ac \ubc29\uc2dd<\/th><th>\uc0ac\uc6a9 \uc0ac\ub840<\/th><\/tr><\/thead><tbody><tr><td>Cloud Storage<\/td><td>Blob Storage<\/td><td>\ube44\uc815\ud615 \ub370\uc774\ud130 \uc800\uc7a5<\/td><td>\uc774\ubbf8\uc9c0, \ube44\ub514\uc624 \ud30c\uc77c \uc800\uc7a5<\/td><\/tr><tr><td>BigQuery<\/td><td>\uc11c\ubc84\ub9ac\uc2a4 \ub370\uc774\ud130 \uc6e8\uc5b4\ud558\uc6b0\uc2a4<\/td><td>SQL \ucffc\ub9ac \uae30\ubc18<\/td><td>\uc560\ub110\ub9ac\ud2f1\uc2a4, \ub370\uc774\ud130 \ubd84\uc11d<\/td><\/tr><tr><td>Dataproc<\/td><td>Hadoop\/Spark \ud074\ub7ec\uc2a4\ud130<\/td><td>\ud074\ub7ec\uc2a4\ud130 \uae30\ubc18 \ucc98\ub9ac<\/td><td>\ubc30\uce58 \ucc98\ub9ac, ETL \uc791\uc5c5<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"2.4-bigquery-%EC%84%A0%ED%83%9D-%EC%8B%9C%EB%82%98%EB%A6%AC%EC%98%A4\">2.4 BigQuery \uc120\ud0dd \uc2dc\ub098\ub9ac\uc624<\/h3>\n\n\n\n<p>\uc2e0\uaddc \uc2dc\uc2a4\ud15c \uc124\uacc4 \uc2dc&nbsp;<strong>BigQuery<\/strong>\ub97c \uc120\ud0dd\ud574\uc57c \ud558\ub294 \uc8fc\uc694 \uc2dc\ub098\ub9ac\uc624\ub294:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\ub300\uaddc\ubaa8 \ub370\uc774\ud130\uc14b<\/strong>\uc5d0 \ub300\ud55c \ubd84\uc11d \ubc0f \ubcf5\uc7a1\ud55c SQL \ucffc\ub9ac \uc2e4\ud589\uc774 \ud544\uc694\ud55c \uacbd\uc6b0<br>\ucd9c\ucc98: Google Cloud Architecture<a href=\"https:\/\/cloud.google.com\/architecture\/all-reference-architectures\" target=\"_blank\" rel=\"noreferrer noopener\">1<\/a><\/li>\n\n\n\n<li><strong>\uc2e4\uc2dc\uac04 \ub370\uc774\ud130 \uc2a4\ud2b8\ub9ac\ubc0d<\/strong>\uacfc \ub300\uc2dc\ubcf4\ub4dc \uc5c5\ub370\uc774\ud2b8\uac00 \ud544\uc694\ud55c \uacbd\uc6b0<br>\ucd9c\ucc98: Google Cloud Blog<a href=\"https:\/\/cloud.google.com\/blog\/products\/data-analytics\/how-to-efficiently-process-both-real-time-and-aggregate-data-with-dataflow\" target=\"_blank\" rel=\"noreferrer noopener\">4<\/a><\/li>\n\n\n\n<li>\uc11c\ubc84\ub9ac\uc2a4 \ud658\uacbd\uc5d0\uc11c&nbsp;<strong>\ube44\uc6a9 \ud6a8\uc728\uc801<\/strong>\uc774\uace0&nbsp;<strong>\uc790\ub3d9 \ud655\uc7a5<\/strong>\uc774 \ud544\uc694\ud55c \uacbd\uc6b0<br>\ucd9c\ucc98: BigQuery Docs<a href=\"https:\/\/cloud.google.com\/bigquery\/docs\/storage_overview\" target=\"_blank\" rel=\"noreferrer noopener\">5<\/a><\/li>\n<\/ol>\n\n\n\n<p>\ubc18\uba74,&nbsp;<strong>Cloud SQL<\/strong>\uc740 \uc804\ud1b5\uc801\uc778 \uad00\uacc4\ud615 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc640&nbsp;<strong>\ud2b8\ub79c\uc7ad\uc158<\/strong>&nbsp;\ucc98\ub9ac,&nbsp;<strong>ACID \uc900\uc218<\/strong>\uac00 \uc694\uad6c\ub418\ub294 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0 \uc801\ud569\ud569\ub2c8\ub2e4.<br>\ucd9c\ucc98: Hevo Data<a href=\"https:\/\/hevodata.com\/learn\/cloud-sql-vs-bigquery-2\/\" target=\"_blank\" rel=\"noreferrer noopener\">6<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"3.-gcp-%EB%B6%84%EC%84%9D-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%E2%80%93-vertex-ai%EC%99%80-automl-tables\">3. GCP \ubd84\uc11d \uc54c\uace0\ub9ac\uc998 \u2013 Vertex AI\uc640 AutoML Tables<\/h2>\n\n\n\n<p>GCP\uc758 Vertex AI\ub294 \uba38\uc2e0\ub7ec\ub2dd \ubaa8\ub378 \uac1c\ubc1c\uc744 \uc704\ud55c \ud1b5\ud569 \ud50c\ub7ab\ud3fc\uc73c\ub85c, \uae30\ubcf8 \uc81c\uacf5 \uc54c\uace0\ub9ac\uc998\uacfc AutoML \uae30\ub2a5\uc744 \ud1b5\ud574 \ub2e4\uc591\ud558\uace0 \ubcf5\uc7a1\ud55c \ubd84\uc11d \ubaa8\ub378\uc744 \uc27d\uac8c \uad6c\ucd95\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"3.1-vertex-ai-%EB%B9%8C%ED%8A%B8%EC%9D%B8-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98\">3.1 Vertex AI \ube4c\ud2b8\uc778 \uc54c\uace0\ub9ac\uc998<\/h3>\n\n\n\n<p>Vertex AI\ub294 \ub2e4\uc591\ud55c \ube4c\ud2b8\uc778 \uba38\uc2e0\ub7ec\ub2dd \uc54c\uace0\ub9ac\uc998\uc744 \uc9c0\uc6d0\ud558\uba70, \uac01\uac01\uc758 \uc54c\uace0\ub9ac\uc998\uc740 \ub2e4\uc74c\uacfc \uac19\uc740 \ubd84\uc57c\uc5d0 \ud65c\uc6a9\ub429\ub2c8\ub2e4:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\ubd84\ub958 \uc54c\uace0\ub9ac\uc998<\/strong>: \uc774\ubbf8\uc9c0 \ubc0f \ud14d\uc2a4\ud2b8 \ubd84\ub958, \uc2a4\ud338 \uac10\uc9c0 \ub4f1<br>\ucd9c\ucc98: [Google models<a href=\"https:\/\/cloud.google.com\/vertex-ai\/generative-ai\/docs\/learn\/models\" target=\"_blank\" rel=\"noreferrer noopener\">7<\/a><\/li>\n\n\n\n<li><strong>\ud68c\uadc0 \uc54c\uace0\ub9ac\uc998<\/strong>: \ud310\ub9e4, \uc218\uc694, \uac00\uaca9 \uc608\uce21 \ub4f1<br>\ucd9c\ucc98: [AutoML beginner&#8217;s guide<a href=\"https:\/\/cloud.google.com\/vertex-ai\/docs\/beginner\/beginners-guide\" target=\"_blank\" rel=\"noreferrer noopener\">3<\/a><\/li>\n\n\n\n<li><strong>\ud074\ub7ec\uc2a4\ud130\ub9c1 \uc54c\uace0\ub9ac\uc998<\/strong>: \uace0\uac1d \uc138\ubd84\ud654, \uc2dc\uc7a5 \ubd84\uc11d \ub4f1<br>\ucd9c\ucc98: [AutoML beginner&#8217;s guide<a href=\"https:\/\/cloud.google.com\/vertex-ai\/docs\/beginner\/beginners-guide\" target=\"_blank\" rel=\"noreferrer noopener\">3<\/a><\/li>\n\n\n\n<li><strong>\uc2dc\uacc4\uc5f4 \uc608\uce21<\/strong>: \uc218\uc694 \uc608\uce21, \ubbf8\ub798 \ud2b8\ub80c\ub4dc \uc608\uce21<br>\ucd9c\ucc98: [Forecasting with AutoML<a href=\"https:\/\/cloud.google.com\/vertex-ai\/docs\/tabular-data\/forecasting\/overview\" target=\"_blank\" rel=\"noreferrer noopener\">8<\/a><\/li>\n\n\n\n<li><strong>\ucd94\ucc9c \uc2dc\uc2a4\ud15c \uc54c\uace0\ub9ac\uc998<\/strong>: \ub9de\ucda4\ud615 \uc0ac\uc6a9\uc790 \ucd94\ucc9c<br>\ucd9c\ucc98: [How to build a next-level AI recommender system using Vertex AI<a href=\"https:\/\/www.devoteam.com\/expert-view\/how-to-build-a-next-level-ai-recommender-system-using-vertex-ai\/\" target=\"_blank\" rel=\"noreferrer noopener\">9<\/a><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"3.2-automl-tables%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%98%88%EC%B8%A1-%EB%B6%84%EC%84%9D-%EB%AA%A8%EB%8D%B8-%EA%B0%9C%EB%B0%9C-%EB%8B%A8%EA%B3%84\">3.2 AutoML Tables\ub97c \uc774\uc6a9\ud55c \uc608\uce21 \ubd84\uc11d \ubaa8\ub378 \uac1c\ubc1c \ub2e8\uacc4<\/h3>\n\n\n\n<p>AutoML Tables\ub97c \uc0ac\uc6a9\ud560 \ub54c\uc758 \uad6c\uccb4\uc801 \ub2e8\uacc4\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\ub370\uc774\ud130 \uc900\ube44<\/strong>\n<ul class=\"wp-block-list\">\n<li>\ub370\uc774\ud130\ub97c BigQuery \ub610\ub294 CSV \ud30c\uc77c \ub4f1\uc73c\ub85c \uc218\uc9d1\ud558\uace0 \uc804\ucc98\ub9ac<br>\ucd9c\ucc98: [AutoML beginner&#8217;s guide<a href=\"https:\/\/cloud.google.com\/vertex-ai\/docs\/beginner\/beginners-guide\" target=\"_blank\" rel=\"noreferrer noopener\">3<\/a><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\ub370\uc774\ud130\uc14b \uc0dd\uc131<\/strong>\n<ul class=\"wp-block-list\">\n<li>AutoML Tables\uc5d0 \ub370\uc774\ud130\ub97c \uc5c5\ub85c\ub4dc\ud558\uc5ec \ub370\uc774\ud130\uc14b \uc0dd\uc131<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\ubaa8\ub378 \ud559\uc2b5<\/strong>\n<ul class=\"wp-block-list\">\n<li>AutoML\uc774 \uc790\ub3d9\uc73c\ub85c \ucd5c\uc801\uc758 \ubaa8\ub378\uc744 \ud559\uc2b5\uc2dc\ud0b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\uc131\ub2a5 \ud3c9\uac00<\/strong>\n<ul class=\"wp-block-list\">\n<li>\ud14c\uc2a4\ud2b8 \ub370\uc774\ud130\ub97c \uc0ac\uc6a9\ud558\uc5ec \ubaa8\ub378\uc758 \uc131\ub2a5(\uc608: \uc815\ud655\ub3c4, RMSE \ub4f1)\uc744 \uac80\uc99d<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\ubaa8\ub378 \ubc30\ud3ec<\/strong>\n<ul class=\"wp-block-list\">\n<li>\ucd5c\uc885 \ubaa8\ub378\uc744 \ud504\ub85c\ub355\uc158 \ud658\uacbd\uc5d0 \ubc30\ud3ec\ud558\uc5ec \uc2e4\uc2dc\uac04 \uc608\uce21\uc5d0 \ud65c\uc6a9<br>\ucd9c\ucc98: [AutoML beginner&#8217;s guide<a href=\"https:\/\/cloud.google.com\/vertex-ai\/docs\/beginner\/beginners-guide\" target=\"_blank\" rel=\"noreferrer noopener\">3<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"3.3-apache-beam-ml-transform%EA%B3%BC%EC%9D%98-%ED%86%B5%ED%95%A9\">3.3 Apache Beam ML Transform\uacfc\uc758 \ud1b5\ud569<\/h3>\n\n\n\n<p>Vertex AI\uc640 Apache Beam ML Transform\uc758 \ud1b5\ud569\uc740 \ub2e4\uc74c\uacfc \uac19\uc774 \uc9c4\ud589\ub429\ub2c8\ub2e4:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\ub370\uc774\ud130 \ud30c\uc774\ud504\ub77c\uc778 \uad6c\uc131<\/strong>\n<ul class=\"wp-block-list\">\n<li>Apache Beam SDK\ub97c \ud1b5\ud574 \ub370\uc774\ud130 \ud30c\uc774\ud504\ub77c\uc778\uc744 \uad6c\uc131\ud569\ub2c8\ub2e4.<br>\ucd9c\ucc98: [Introduction to Vertex AI<a href=\"https:\/\/cloud.google.com\/vertex-ai\/docs\/start\/introduction-unified-platform\" target=\"_blank\" rel=\"noreferrer noopener\">10<\/a><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>ML Transform \uc801\uc6a9<\/strong>\n<ul class=\"wp-block-list\">\n<li>ML Transform API (\uc608: RunInference, TF Transform \ub4f1)\ub97c \ud638\ucd9c\ud558\uc5ec \ubaa8\ub378 \ub85c\ub4dc \ubc0f \ucd94\ub860 \uae30\ub2a5\uc744 \ud30c\uc774\ud504\ub77c\uc778\uc5d0 \uc0bd\uc785\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\ub370\uc774\ud130 \ucd9c\ub825<\/strong>\n<ul class=\"wp-block-list\">\n<li>\ubcc0\ud658\ub41c \ub370\uc774\ud130\ub97c PCollection\uc73c\ub85c \ucd9c\ub825\ud558\uc5ec \ud6c4\uc18d \ubaa8\ub378 \ud559\uc2b5\uc774\ub098 \ucd94\ub860\uc5d0 \ud65c\uc6a9\ud569\ub2c8\ub2e4.<br>\ucd9c\ucc98: [AutoML beginner&#8217;s guide<a href=\"https:\/\/cloud.google.com\/vertex-ai\/docs\/beginner\/beginners-guide\" target=\"_blank\" rel=\"noreferrer noopener\">3<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"4.-gcp-%EC%8B%A4%EC%8B%9C%EA%B0%84-%EC%B2%98%EB%A6%AC-%EA%B8%B0%EC%88%A0-%E2%80%93-dataflow%EC%99%80-%EC%8A%A4%ED%8A%B8%EB%A6%AC%EB%B0%8D-%ED%8C%8C%EC%9D%B4%ED%94%84%EB%9D%BC%EC%9D%B8\">4. GCP \uc2e4\uc2dc\uac04 \ucc98\ub9ac \uae30\uc220 \u2013 Dataflow\uc640 \uc2a4\ud2b8\ub9ac\ubc0d \ud30c\uc774\ud504\ub77c\uc778<\/h2>\n\n\n\n<p>Google Cloud Dataflow\ub294 \uc2e4\uc2dc\uac04 \ubc0f \ubc30\uce58 \ub370\uc774\ud130 \ucc98\ub9ac\ub97c \uc704\ud55c \uc644\uc804 \uad00\ub9ac\ud615 \uc11c\ube44\uc2a4\ub85c, Apache Beam\uc744 \uae30\ubc18\uc73c\ub85c \ub2e4\uc591\ud55c \uc2a4\ud2b8\ub9ac\ubc0d \ud30c\uc774\ud504\ub77c\uc778\uc744 \uc190\uc27d\uac8c \uad6c\ucd95\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"4.1-dataflow-%EC%8A%A4%ED%8A%B8%EB%A6%AC%EB%B0%8D-%EC%B2%98%EB%A6%AC-%ED%85%9C%ED%94%8C%EB%A6%BF-%EA%B0%9C%EC%9A%94\">4.1 Dataflow \uc2a4\ud2b8\ub9ac\ubc0d \ucc98\ub9ac \ud15c\ud50c\ub9bf \uac1c\uc694<\/h3>\n\n\n\n<p>Dataflow \uc2a4\ud2b8\ub9ac\ubc0d \ucc98\ub9ac \ud15c\ud50c\ub9bf\uc758 \uae30\ubcf8 \uad6c\uc131\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\uc785\ub825 \ub2e8\uacc4<\/strong>\n<ul class=\"wp-block-list\">\n<li>\uc608: Pub\/Sub\uc5d0\uc11c \uba54\uc2dc\uc9c0\ub97c \uc77d\uae30 (<code>beam.io.ReadFromPubSub(subscription='YOUR_SUBSCRIPTION')<\/code>).<br>\ucd9c\ucc98: [Quickstart: Create a Dataflow pipeline using Python<a href=\"https:\/\/cloud.google.com\/dataflow\/docs\/quickstarts\/create-pipeline-python\" target=\"_blank\" rel=\"noreferrer noopener\">11<\/a><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\ubcc0\ud658 \ub2e8\uacc4<\/strong>\n<ul class=\"wp-block-list\">\n<li>Map, ParDo, \ub610\ub294 GroupByKey \ub4f1\uc744 \uc0ac\uc6a9\ud558\uc5ec \ub370\uc774\ud130\ub97c \ubcc0\ud658 \ubc0f \uc804\ucc98\ub9ac<br>\ucd9c\ucc98: [Programming model for Apache Beam<a href=\"https:\/\/cloud.google.com\/dataflow\/docs\/concepts\/beam-programming-model\" target=\"_blank\" rel=\"noreferrer noopener\">12<\/a><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\uc708\ub3c4\uc6b0\ub9c1<\/strong>\n<ul class=\"wp-block-list\">\n<li><code>beam.WindowInto()<\/code>&nbsp;\ud568\uc218\ub97c \uc0ac\uc6a9\ud558\uc5ec \uace0\uc815(\uc608: FixedWindows) \ub610\ub294 \uc2ac\ub77c\uc774\ub529(SlidingWindows) \uc708\ub3c4\uc6b0\ub97c \uc124\uc815\ud574 \ub370\uc774\ud130\ub97c \uae30\uac04\ubcc4\ub85c \uadf8\ub8f9\ud654<br>[\ucd9c\ucc98: [\uacf5\uc2dd \uc608\uc81c \ucf54\ub4dc]](\uc608\uc81c \ucf54\ub4dc \ucc38\uace0)<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\ucd9c\ub825 \ub2e8\uacc4<\/strong>\n<ul class=\"wp-block-list\">\n<li>\ubcc0\ud658\ub41c \ub370\uc774\ud130\ub97c BigQuery, Cloud Storage \ub4f1\uc73c\ub85c \uae30\ub85d (\uc608:&nbsp;<code>beam.io.WriteToBigQuery()<\/code>)<br>\ucd9c\ucc98: [Stream from Pub\/Sub to BigQuery tutorial<a href=\"https:\/\/cloud.google.com\/dataflow\/docs\/tutorials\/dataflow-stream-to-bigquery\" target=\"_blank\" rel=\"noreferrer noopener\">13<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"4.2-pub%2Fsub-to-bigquery-%EC%8B%A4%EC%8B%9C%EA%B0%84-%EC%A0%81%EC%9E%AC-%ED%8C%8C%EC%9D%B4%ED%94%84%EB%9D%BC%EC%9D%B8-%EA%B5%AC%ED%98%84\">4.2 Pub\/Sub to BigQuery \uc2e4\uc2dc\uac04 \uc801\uc7ac \ud30c\uc774\ud504\ub77c\uc778 \uad6c\ud604<\/h3>\n\n\n\n<p>\uc2e4\uc2dc\uac04 \ub370\uc774\ud130 \uc801\uc7ac \ud30c\uc774\ud504\ub77c\uc778\uc740 \ub2e4\uc74c\uacfc \uac19\uc774 \uad6c\uc131\ub429\ub2c8\ub2e4:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Pub\/Sub \uc8fc\uc81c \ubc0f \uad6c\ub3c5 \uc0dd\uc131<\/strong>\n<ul class=\"wp-block-list\">\n<li>Pub\/Sub \uc8fc\uc81c\ub294 \ub370\uc774\ud130 \uc18c\uc2a4\ub85c\uc11c \uc2e4\uc2dc\uac04 \uba54\uc2dc\uc9c0\ub97c \uc218\uc9d1\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Dataflow \uc791\uc5c5 \uc0dd\uc131<\/strong>\n<ul class=\"wp-block-list\">\n<li>Dataflow \ucf58\uc194\uc5d0\uc11c \u2018Create Job from Template\u2019\uc744 \uc120\ud0dd\ud558\uc5ec \u201cPub\/Sub to BigQuery\u201d \ud15c\ud50c\ub9bf\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<br>!Step 1<a href=\"https:\/\/cloud.google.com\/dataflow\/docs\/guides\/templates\/images\/pubsub-to-bigquery-1.png\" target=\"_blank\" rel=\"noreferrer noopener\">14<\/a><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\ud544\uc218 \ud30c\ub77c\ubbf8\ud130 \uc785\ub825<\/strong>\n<ul class=\"wp-block-list\">\n<li>\ud504\ub85c\uc81d\ud2b8 ID, Pub\/Sub \uad6c\ub3c5, BigQuery \ud14c\uc774\ube14 \uc2a4\ud0a4\ub9c8 \ub4f1\uc744 \uc124\uc815\ud569\ub2c8\ub2e4.<br>!Step 2<a href=\"https:\/\/cloud.google.com\/dataflow\/docs\/guides\/templates\/images\/pubsub-to-bigquery-2.png\" target=\"_blank\" rel=\"noreferrer noopener\">15<\/a><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\uc791\uc5c5 \uc2e4\ud589 \ubc0f \ubaa8\ub2c8\ud130\ub9c1<\/strong>\n<ul class=\"wp-block-list\">\n<li>\ud30c\uc774\ud504\ub77c\uc778\uc774 \uba54\uc2dc\uc9c0\ub97c \uc77d\uc5b4 BigQuery\uc5d0 \uc801\uc7ac\ud558\ub294\uc9c0 Cloud Monitoring\uc744 \ud1b5\ud574 \ud655\uc778\ud569\ub2c8\ub2e4.<br>!Step 3<a href=\"https:\/\/cloud.google.com\/dataflow\/docs\/guides\/templates\/images\/pubsub-to-bigquery-3.png\" target=\"_blank\" rel=\"noreferrer noopener\">16<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"4.3-%EC%9C%88%EB%8F%84%EC%9A%B0%EB%A7%81-%EC%84%A4%EC%A0%95-%EB%B0%8F-%EC%A7%91%EA%B3%84-%EA%B8%B0%EB%B2%95\">4.3 \uc708\ub3c4\uc6b0\ub9c1 \uc124\uc815 \ubc0f \uc9d1\uacc4 \uae30\ubc95<\/h3>\n\n\n\n<p>\uc2e4\uc2dc\uac04 \uc9d1\uacc4\uc5d0\ub294 \uc708\ub3c4\uc6b0\ub9c1 \uae30\ubc95\uc774 \ud544\uc218\uc801\uc785\ub2c8\ub2e4:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\uace0\uc815 \uc708\ub3c4\uc6b0 (Fixed Windows)<\/strong><br>\uc608: 60\ucd08 \ub2e8\uc704\ub85c \ub370\uc774\ud130\ub97c \uadf8\ub8f9\ud654\ud558\uc5ec \uc9d1\uacc4<br><em>Python \uc608\uc81c<\/em>:<code>windowed_data = input_data | \"Window into Fixed Windows\" &gt;&gt; beam.WindowInto(beam.window.FixedWindows(60))<\/code><\/li>\n\n\n\n<li><strong>\uc2ac\ub77c\uc774\ub529 \uc708\ub3c4\uc6b0 (Sliding Windows)<\/strong><br>\uc608: 60\ucd08 \uc708\ub3c4\uc6b0\ub97c 30\ucd08 \uac04\uaca9\uc73c\ub85c \uacb9\uce58\uac8c \uad6c\uc131<br><em>Python \uc608\uc81c<\/em>:<code>windowed_data = input_data | \"Window into Sliding Windows\" &gt;&gt; beam.WindowInto(beam.window.SlidingWindows(60, 30))<\/code><\/li>\n\n\n\n<li><strong>\uc138\uc158 \uc708\ub3c4\uc6b0 (Session Windows)<\/strong><br>\uc0ac\uc6a9\uc790\uc758 \ud65c\ub3d9 \uac04\uaca9\uc5d0 \ub530\ub77c \ub3d9\uc801\uc73c\ub85c \uadf8\ub8f9\ud654\ub97c \uc218\ud589\ud569\ub2c8\ub2e4.<br>\ucd9c\ucc98: [Programming model for Apache Beam<a href=\"https:\/\/cloud.google.com\/dataflow\/docs\/concepts\/beam-programming-model\" target=\"_blank\" rel=\"noreferrer noopener\">12<\/a><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"4.4-%ED%83%80%EC%9E%84%EC%8A%A4%ED%83%AC%ED%94%84-%EC%B2%98%EB%A6%AC-%EB%B0%8F-%EC%A7%80%EC%97%B0-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%95%B8%EB%93%A4%EB%A7%81\">4.4 \ud0c0\uc784\uc2a4\ud0ec\ud504 \ucc98\ub9ac \ubc0f \uc9c0\uc5f0 \ub370\uc774\ud130 \ud578\ub4e4\ub9c1<\/h3>\n\n\n\n<p>\uc2e4\uc2dc\uac04 \uc2a4\ud2b8\ub9ac\ubc0d\uc5d0\uc11c\ub294 \uac01 \ub370\uc774\ud130\uc5d0 \uc774\ubca4\ud2b8 \ud0c0\uc784\uc2a4\ud0ec\ud504\ub97c \ud560\ub2f9\ud558\uace0, \ub2a6\uac8c \ub3c4\ucc29\ud55c \ub370\uc774\ud130\ub97c \ucc98\ub9ac\ud558\uae30 \uc704\ud55c \uc124\uc815\uc774 \ud544\uc694\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\ud0c0\uc784\uc2a4\ud0ec\ud504 \ud560\ub2f9<\/strong><br><code>beam.WithTimestamps()<\/code>\ub97c \uc0ac\uc6a9\ud558\uc5ec \uac01 \uc694\uc18c\uc5d0 \ud0c0\uc784\uc2a4\ud0ec\ud504\ub97c \ubd80\uc5ec\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>Allowed Lateness \uc124\uc815<\/strong><br>\uc708\ub3c4\uc6b0\ub9c1 \uc124\uc815 \uc2dc&nbsp;<code>allowed_lateness<\/code>&nbsp;\ud30c\ub77c\ubbf8\ud130\ub97c \uc0ac\uc6a9\ud558\uc5ec \ub370\uc774\ud130 \uc9c0\uc5f0\uc744 \ud5c8\uc6a9\ud569\ub2c8\ub2e4.<br><em>\uc608\uc81c<\/em>:<code>windowed_data = (input_data | \"Assign Timestamps\" &gt;&gt; beam.Map(lambda x: beam.window.TimestampedValue(x, x['event_time'])) | \"Window with Lateness\" &gt;&gt; beam.WindowInto(beam.window.FixedWindows(60), allowed_lateness=60)) <\/code>\ucd9c\ucc98: [Quickstart: Create a Dataflow pipeline using Python<a href=\"https:\/\/cloud.google.com\/dataflow\/docs\/quickstarts\/create-pipeline-python\" target=\"_blank\" rel=\"noreferrer noopener\">11<\/a><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"4.5-%EC%98%A4%EB%A5%98-%EC%B2%98%EB%A6%AC-%EB%B0%8F-%EC%9E%AC%EC%8B%9C%EB%8F%84-%EB%A9%94%EC%BB%A4%EB%8B%88%EC%A6%98\">4.5 \uc624\ub958 \ucc98\ub9ac \ubc0f \uc7ac\uc2dc\ub3c4 \uba54\ucee4\ub2c8\uc998<\/h3>\n\n\n\n<p>Dataflow \ud30c\uc774\ud504\ub77c\uc778\uc740 \ub0b4\uc7a5\ub41c \uc624\ub958 \ucc98\ub9ac \ubc0f \uc7ac\uc2dc\ub3c4 \uae30\ub2a5\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, \uc0ac\uc6a9\uc790 \uc815\uc758 DoFn \ub0b4\uc5d0\uc11c try-except \ube14\ub85d\uc73c\ub85c \uc608\uc678\ub97c \ucea1\ucc98\ud558\uace0, \uc2e4\ud328\ud55c \ub808\ucf54\ub4dc\ub97c \ub370\ub4dc\ub808\ud130 \ud050(side output)\ub85c \uc804\uc1a1\ud558\ub294 \ubc29\uc2dd\uc73c\ub85c \uad6c\ud604\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p><em>Python \uc608\uc81c<\/em>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class SafeProcess(beam.DoFn):\n    def process(self, element):\n         try:\n             # \uc8fc\uc694 \ucc98\ub9ac \ub85c\uc9c1\n             yield processed_element\n         except Exception as e:\n             import logging\n             logging.error(f\"Error processing element {element}: {e}\")\n             # \uc2e4\ud328\ud55c \uc694\uc18c\ub97c \ubcc4\ub3c4 \uc0ac\uc774\ub4dc \ucd9c\ub825\uc73c\ub85c \ubcf4\ub0c4\n             yield beam.pvalue.TaggedOutput('errors', element)\n<\/code><\/pre>\n\n\n\n<p>\ucd9c\ucc98: [Troubleshoot Dataflow errors<a href=\"https:\/\/cloud.google.com\/dataflow\/docs\/guides\/common-errors\" target=\"_blank\" rel=\"noreferrer noopener\">17<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"5.-%EC%98%A8%EB%9D%BC%EC%9D%B8-%EC%83%8C%EB%93%9C%EB%B0%95%EC%8A%A4-%EA%B8%B0%EB%B0%98-git-%ED%99%9C%EC%9A%A9-%EB%B0%8F-ci%2Fcd-%ED%8C%8C%EC%9D%B4%ED%94%84%EB%9D%BC%EC%9D%B8\">5. \uc628\ub77c\uc778 \uc0cc\ub4dc\ubc15\uc2a4 \uae30\ubc18 Git \ud65c\uc6a9 \ubc0f CI\/CD \ud30c\uc774\ud504\ub77c\uc778<\/h2>\n\n\n\n<p>GCP \ud658\uacbd\uc5d0\uc11c\ub294 \uc18c\uc2a4 \ucf54\ub4dc \uad00\ub9ac\uc640 CI\/CD \ud30c\uc774\ud504\ub77c\uc778 \uad6c\ucd95\uc744 \uc704\ud574 Cloud Source Repositories, GitHub, Cloud Build, \uadf8\ub9ac\uace0 Gerrit \ub4f1\uc758 \ub3c4\uad6c\ub97c \ud65c\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"5.1-cloud-source-repositories%EC%99%80-github-%EC%97%B0%EB%8F%99\">5.1 Cloud Source Repositories\uc640 GitHub \uc5f0\ub3d9<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\uc5f0\ub3d9 \ubc29\ubc95<\/strong><br>Cloud Source Repositories\ub294 Git \ubbf8\ub7ec\ub9c1 \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud558\uc5ec GitHub\uc640 \uc5f0\ub3d9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n<ol class=\"wp-block-list\">\n<li>GCP \ucf58\uc194\uc5d0\uc11c Cloud Source Repositories\ub97c \uc5fd\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\u2018\uc5f0\uacb0(Connect)\u2019 \uc635\uc158\uc744 \uc120\ud0dd\ud558\uc5ec GitHub \uacc4\uc815\uc744 \uc5f0\uacb0\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li>GitHub \ub9ac\ud3ec\uc9c0\ud1a0\ub9ac\ub97c \uc120\ud0dd \ud6c4 \uc790\ub3d9 \ubbf8\ub7ec\ub9c1\uc744 \ud65c\uc131\ud654\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uc774\ub54c, \uc11c\ube44\uc2a4 \uacc4\uc815\uc5d0&nbsp;<strong>cloudbuild.builds.create<\/strong>\uc640&nbsp;<strong>cloudbuild.builds.editor<\/strong>&nbsp;\uad8c\ud55c \ubd80\uc5ec<br>\ucd9c\ucc98: [Automating builds with Cloud Build<a href=\"https:\/\/cloud.google.com\/source-repositories\/docs\/integrating-with-cloud-build\" target=\"_blank\" rel=\"noreferrer noopener\">18<\/a><\/li>\n<\/ol>\n<\/li>\n\n\n\n<li><strong>Cloud Shell\uc5d0\uc11c Git \ucd08\uae30 \uc124\uc815 \uba85\ub839\uc5b4<\/strong><code>git config --global user.email \"your-email@example.com\" git config --global user.name \"Your Name\"<\/code><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"5.2-cloud-build-%ED%8A%B8%EB%A6%AC%EA%B1%B0%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-%EC%9E%90%EB%8F%99-%EB%B9%8C%EB%93%9C-%EC%84%A4%EC%A0%95\">5.2 Cloud Build \ud2b8\ub9ac\uac70\ub97c \ud65c\uc6a9\ud55c \uc790\ub3d9 \ube4c\ub4dc \uc124\uc815<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\uc124\uc815 \ubc29\ubc95<\/strong>\n<ol class=\"wp-block-list\">\n<li>GCP \ucf58\uc194\uc758 Cloud Build \uc139\uc158\uc73c\ub85c \uc774\ub3d9\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\u2018Create trigger\u2019 \ubc84\ud2bc\uc744 \ud074\ub9ad\ud558\uc5ec \uc0c8 \ud2b8\ub9ac\uac70\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\ub9ac\ud3ec\uc9c0\ud1a0\ub9ac, \uc774\ubca4\ud2b8 (push, tag \ub4f1) \ubc0f \ube4c\ub4dc \uad6c\uc131 \ud30c\uc77c(cloudbuild.yaml)\uc758 \uacbd\ub85c\ub97c \uc9c0\uc815\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uc800\uc7a5 \ud6c4, \ucf54\ub4dc \ubcc0\uacbd \uc2dc \uc790\ub3d9\uc73c\ub85c \ube4c\ub4dc\uac00 \uc2e4\ud589\ub429\ub2c8\ub2e4.<br>\ucd9c\ucc98: [Cloud Build repositories<a href=\"https:\/\/cloud.google.com\/build\/docs\/repositories\" target=\"_blank\" rel=\"noreferrer noopener\">19<\/a><\/li>\n<\/ol>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"5.3-%EC%BD%94%EB%93%9C-%EB%A6%AC%EB%B7%B0-%EB%B0%8F-gerrit-%EC%97%B0%EB%8F%99\">5.3 \ucf54\ub4dc \ub9ac\ubdf0 \ubc0f Gerrit \uc5f0\ub3d9<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\ud6a8\uacfc\uc801\uc778 \ucf54\ub4dc \ub9ac\ubdf0 \ud504\ub85c\uc138\uc2a4<\/strong><br>GCP \ud658\uacbd\uc5d0\uc11c \ucf54\ub4dc \ub9ac\ubdf0\ub97c \uc704\ud574 Gerrit\uacfc Cloud Source Repositories\ub97c \uc5f0\ub3d9\ud55c \uc911\uc559 \uc9d1\uc911\ud615 \ucf54\ub4dc \ub9ac\ubdf0 \uc2dc\uc2a4\ud15c\uc744 \uad6c\ucd95\ud569\ub2c8\ub2e4. \uc774 \ud504\ub85c\uc138\uc2a4\ub294 \uc790\ub3d9 \ube4c\ub4dc \ubc0f \ud14c\uc2a4\ud2b8 \uacb0\uacfc\uc640 \uc5f0\uacc4\ub418\uc5b4, \ub9ac\ubdf0\uc5b4\uac00 \ubcc0\uacbd \uc0ac\ud56d\uc744 \uc2e0\ub8b0\ud560 \uc218 \uc788\ub3c4\ub85d \uc9c0\uc6d0\ud569\ub2c8\ub2e4.<br>\ucd9c\ucc98: [The Standard of Code Review<a href=\"https:\/\/google.github.io\/eng-practices\/review\/reviewer\/standard.html\" target=\"_blank\" rel=\"noreferrer noopener\">20<\/a><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"5.4-jenkins%EC%99%80-gcp-%EC%97%B0%EB%8F%99-%EB%B0%8F-secret-manager-%ED%99%9C%EC%9A%A9\">5.4 Jenkins\uc640 GCP \uc5f0\ub3d9 \ubc0f Secret Manager \ud65c\uc6a9<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Jenkins\uc640 GCP \uc5f0\ub3d9<\/strong><br>Jenkins\ub97c GCP\uc640 \uc5f0\ub3d9\ud560 \ub54c, \ud544\uc694\ud55c \uc11c\ube44\uc2a4 \uacc4\uc815\uc5d0\ub294 Artifact Registry\ub098 Container Registry\uc758&nbsp;<strong>roles\/artifactregistry.writer<\/strong>&nbsp;\ubc0f&nbsp;<strong>roles\/container.admin<\/strong>\uc640 \uac19\uc740 \ud544\uc218 \uad8c\ud55c\uc774 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4.<br>\ucd9c\ucc98: [Integrating with Jenkins<a href=\"https:\/\/cloud.google.com\/artifact-registry\/docs\/configure-jenkins\" target=\"_blank\" rel=\"noreferrer noopener\">21<\/a><\/li>\n\n\n\n<li><strong>Secret Manager \uc0ac\uc6a9 \uc608\uc2dc<\/strong><br>Jenkinsfile \uad6c\uc131 \uc0d8\ud50c 1:<code>pipeline { agent any stages { stage('Build') { steps { script { def credentials = googleSecretManager.getSecret('my-secret') echo credentials } } } } } <\/code>Jenkinsfile \uad6c\uc131 \uc0d8\ud50c 2:<code>pipeline { agent any environment { MY_SECRET = googleSecretManager.getSecret('my-secret') } stages { stage('Deploy') { steps { sh 'deploy.sh' } } } }<\/code><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"6.-%EC%A2%85%ED%95%A9-%EC%A0%95%EB%A6%AC-%EB%B0%8F-%EA%B2%B0%EB%A1%A0\">6. \uc885\ud569 \uc815\ub9ac \ubc0f \uacb0\ub860<\/h2>\n\n\n\n<p>\uc774\ubc88 \uac15\uc758 \ub178\ud2b8\uc5d0\uc11c\ub294 GCP \uae30\ubc18 \ube45\ub370\uc774\ud130 \uc544\ud0a4\ud14d\ucc98\uc758 \uc8fc\uc694 \ucef4\ud3ec\ub10c\ud2b8(Cloud Storage, BigQuery, Dataflow, Dataproc, Pub\/Sub \ub4f1)\uc640 \uc774\ub4e4\uc758 \uc5ed\ud560 \ubc0f \ucc28\uc774\ub97c \uc0b4\ud3b4\ubcf4\uc558\uc2b5\ub2c8\ub2e4. \ub610\ud55c, Vertex AI \ubc0f AutoML \uae30\ub2a5\uc744 \ud65c\uc6a9\ud55c \ubd84\uc11d \uc54c\uace0\ub9ac\uc998 \uad6c\ucd95, Dataflow\ub97c \ud1b5\ud55c \uc2e4\uc2dc\uac04 \uc2a4\ud2b8\ub9ac\ubc0d \ud30c\uc774\ud504\ub77c\uc778 \uc124\uacc4 \ubc0f \uad6c\ud604, \uadf8\ub9ac\uace0 CI\/CD\uc640 Git\uc744 \ud65c\uc6a9\ud55c \uc18c\uc2a4 \ucf54\ub4dc \uad00\ub9ac \ubc0f \ucf54\ub4dc \ub9ac\ubdf0 \ud504\ub85c\uc138\uc2a4\uc5d0 \ub300\ud574\uc11c\ub3c4 \uc790\uc138\ud788 \ub17c\uc758\ud558\uc600\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"6.1-%EC%A3%BC%EC%9A%94-%EA%B2%B0%EB%A1%A0\">6.1 \uc8fc\uc694 \uacb0\ub860<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>GCP \ube45\ub370\uc774\ud130 \uc544\ud0a4\ud14d\ucc98<\/strong><br>\ud074\ub77c\uc6b0\ub4dc \ud658\uacbd\uc5d0\uc11c \ub300\uaddc\ubaa8 \ub370\uc774\ud130\ub97c \ud6a8\uacfc\uc801\uc73c\ub85c \uc800\uc7a5, \ucc98\ub9ac, \ubd84\uc11d\ud558\uae30 \uc704\ud574\uc11c\ub294 Cloud Storage, BigQuery, Dataflow, Dataproc, Pub\/Sub \ub4f1 \uac01 \uc11c\ube44\uc2a4\uc758 \uac15\uc810\uc744 \uc774\ud574\ud558\uace0 \uc801\uc808\ud788 \uc870\ud569\ud558\ub294 \uac83\uc774 \ud575\uc2ec\uc785\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>\ubd84\uc11d \uc54c\uace0\ub9ac\uc998\uacfc Vertex AI<\/strong><br>Vertex AI\ub294 \uba38\uc2e0\ub7ec\ub2dd \uc54c\uace0\ub9ac\uc998(\ubd84\ub958, \ud68c\uadc0, \ud074\ub7ec\uc2a4\ud130\ub9c1 \ub4f1)\uc744 \uc81c\uacf5\ud558\uba70, AutoML Tables\ub97c \ud1b5\ud574 \uc0ac\uc6a9\uc790 \uce5c\ud654\uc801\uc774\uace0 \uc790\ub3d9\ud654\ub41c \uc608\uce21 \ubd84\uc11d \ubaa8\ub378 \uad6c\ucd95\uc744 \uc9c0\uc6d0\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>\uc2e4\uc2dc\uac04 \ucc98\ub9ac\uc640 Dataflow<\/strong><br>Dataflow\ub97c \ud65c\uc6a9\ud55c \uc2a4\ud2b8\ub9ac\ubc0d \ud30c\uc774\ud504\ub77c\uc778\uc740 Pub\/Sub\uc640\uc758 \uc5f0\uacc4\ub97c \ud1b5\ud574 \uc2e4\uc2dc\uac04 \ub370\uc774\ud130 \ucc98\ub9ac\ub97c \uac00\ub2a5\ud558\uac8c \ud558\uba70, \uc708\ub3c4\uc6b0\ub9c1, \ud0c0\uc784\uc2a4\ud0ec\ud504 \uad00\ub9ac \ubc0f \uc624\ub958 \ucc98\ub9ac \ub4f1\uc758 \uae30\ub2a5\uc73c\ub85c \ub192\uc740 \uc2e0\ub8b0\uc131\uc744 \ubcf4\uc7a5\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>CI\/CD \ubc0f \ucf54\ub4dc \uad00\ub9ac<\/strong><br>Cloud Source Repositories, GitHub, Cloud Build, \uadf8\ub9ac\uace0 Gerrit\uacfc \uac19\uc740 \ub3c4\uad6c\uc758 \uc5f0\ub3d9\uc744 \ud1b5\ud574 \ucf54\ub4dc \ub9ac\ubdf0 \ubc0f \uc790\ub3d9 \ube4c\ub4dc\/\ubc30\ud3ec \ud30c\uc774\ud504\ub77c\uc778\uc744 \uad6c\ucd95\ud558\uba74, \uac1c\ubc1c\uacfc \uc6b4\uc601\uc758 \ud6a8\uc728\uc131\uc744 \ud06c\uac8c \ud5a5\uc0c1\uc2dc\ud0ac \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<p>\uc774 \uac15\uc758 \ub178\ud2b8\ub294 \uc2e0\uc785 \uac1c\ubc1c\uc790\ub4e4\uc774 GCP \uae30\ubc18 \ube45\ub370\uc774\ud130 \uc2dc\uc2a4\ud15c\uc744 \uc774\ud574\ud558\uace0, \uc2e4\uc2b5 \ud658\uacbd\uc5d0\uc11c \uc9c1\uc811 \uc2e4\uc2dc\uac04 \ub370\uc774\ud130 \ud30c\uc774\ud504\ub77c\uc778\uacfc \ubd84\uc11d \ubaa8\ub378\uc744 \uad6c\ucd95\ud558\ub294 \ub370 \ud544\uc694\ud55c \uae30\uc220\uc801 \uc9c0\uc2dd\uacfc \uc0ac\ub840\ub97c \uc81c\uacf5\ud558\ub294 \uac83\uc744 \ubaa9\ud45c\ub85c \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uac01 \uc139\uc158\uc5d0\uc11c \uc81c\uacf5\ub41c \uc608\uc81c \ucf54\ub4dc\uc640 \uc124\uc815 \ubc29\ubc95, \uadf8\ub9ac\uace0 \ucc38\uace0 URL\ub4e4\uc740 \uc2ec\ub3c4 \uae4a\uc740 \ud559\uc2b5 \uc790\ub8cc\ub85c \ud65c\uc6a9\ub418\uba70, \uc774\ub97c \ud1a0\ub300\ub85c GCP\uc758 \ub2e4\uc591\ud55c \uc11c\ube44\uc2a4\ub97c \uc2e4\uc81c \ud504\ub85c\uc81d\ud2b8\uc5d0 \uc801\uc6a9\ud560 \uc218 \uc788\uc744 \uac83\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"7.-%ED%95%99%EC%8A%B5-%EA%B2%B0%EA%B3%BC-%EA%B2%80%EC%A6%9D\">7. \ud559\uc2b5 \uacb0\uacfc \uac80\uc99d<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"7.1-%EC%A3%BC%EC%9A%94-%EA%B0%9C%EB%85%90-%ED%80%B4%EC%A6%88\">7.1 \uc8fc\uc694 \uac1c\ub150 \ud034\uc988<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>GCP\uc758 \uc8fc\uc694 \ube45\ub370\uc774\ud130 \ucef4\ud3ec\ub10c\ud2b8\uc5d0 \ub300\ud574 \uc124\uba85\ud558\uc2dc\uc624.<\/li>\n\n\n\n<li>Vertex AI\uc640 AutoML Tables\uc758 \uae30\ub2a5\uc740 \ubb34\uc5c7\uc778\uac00?<\/li>\n\n\n\n<li>Dataflow\uc758 \uc2e4\uc2dc\uac04 \ucc98\ub9ac \uae30\ub2a5\uc740 \uc5b4\ub5bb\uac8c \uad6c\ud604\ub418\ub294\uac00?<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"7.2-%EC%8B%A4%EC%8A%B5-%EA%B2%B0%EA%B3%BC%EB%AC%BC-%EC%A0%9C%EC%B6%9C-%EC%9A%94%EA%B5%AC%EC%82%AC%ED%95%AD\">7.2 \uc2e4\uc2b5 \uacb0\uacfc\ubb3c \uc81c\ucd9c \uc694\uad6c\uc0ac\ud56d<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uc2e4\uc2dc\uac04 \ub370\uc774\ud130 \ud30c\uc774\ud504\ub77c\uc778\uc744 \uc124\uacc4\ud558\uace0 \uad6c\ud604\ud55c \uacb0\uacfc\ubb3c \uc81c\ucd9c<\/li>\n\n\n\n<li>\uac01 \ub2e8\uacc4\uc5d0\uc11c \ubc1c\uc0dd\ud55c \uc624\ub958 \ubc0f \ud574\uacb0 \ubc29\uc548 \uae30\ub85d<\/li>\n\n\n\n<li>\ucd5c\uc885 \ubc1c\ud45c \uc790\ub8cc\uc5d0 \ud504\ub85c\uc81d\ud2b8 \uac1c\uc694 \ubc0f \uc9c4\ud589 \uacfc\uc815 \ud3ec\ud568<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"%EC%B0%B8%EA%B3%A0-%EC%9E%90%EB%A3%8C\">\ucc38\uace0 \uc790\ub8cc<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Google Cloud Architecture | Google Cloud<a href=\"https:\/\/cloud.google.com\/architecture\/all-reference-architectures\" target=\"_blank\" rel=\"noreferrer noopener\">1<\/a><\/li>\n\n\n\n<li>Quickstart: Create a Dataflow pipeline using Python<a href=\"https:\/\/cloud.google.com\/dataflow\/docs\/quickstarts\/create-pipeline-python\" target=\"_blank\" rel=\"noreferrer noopener\">11<\/a><\/li>\n\n\n\n<li>Pub\/Sub to BigQuery template | Google Cloud Dataflow<a href=\"https:\/\/cloud.google.com\/dataflow\/docs\/guides\/templates\/provided\/pubsub-to-bigquery\" target=\"_blank\" rel=\"noreferrer noopener\">2<\/a><\/li>\n\n\n\n<li>AutoML beginner&#8217;s guide | Vertex AI<a href=\"https:\/\/cloud.google.com\/vertex-ai\/docs\/beginner\/beginners-guide\" target=\"_blank\" rel=\"noreferrer noopener\">3<\/a><\/li>\n\n\n\n<li>Programming model for Apache Beam<a href=\"https:\/\/cloud.google.com\/dataflow\/docs\/concepts\/beam-programming-model\" target=\"_blank\" rel=\"noreferrer noopener\">12<\/a><\/li>\n\n\n\n<li>GitHub &#8211; DataflowSDK-examples<a href=\"https:\/\/github.com\/GoogleCloudPlatform\/DataflowSDK-examples\" target=\"_blank\" rel=\"noreferrer noopener\">22<\/a><\/li>\n\n\n\n<li>Troubleshoot Dataflow errors | Google Cloud Dataflow<a href=\"https:\/\/cloud.google.com\/dataflow\/docs\/guides\/common-errors\" target=\"_blank\" rel=\"noreferrer noopener\">17<\/a><\/li>\n\n\n\n<li>Automating builds with Cloud Build<a href=\"https:\/\/cloud.google.com\/source-repositories\/docs\/integrating-with-cloud-build\" target=\"_blank\" rel=\"noreferrer noopener\">18<\/a><\/li>\n\n\n\n<li>The Standard of Code Review | Google Eng Practices<a href=\"https:\/\/google.github.io\/eng-practices\/review\/reviewer\/standard.html\" target=\"_blank\" rel=\"noreferrer noopener\">20<\/a><\/li>\n\n\n\n<li>Integrating with Jenkins | Artifact Registry<a href=\"https:\/\/cloud.google.com\/artifact-registry\/docs\/configure-jenkins\" target=\"_blank\" rel=\"noreferrer noopener\">21<\/a><\/li>\n<\/ul>\n\n\n\n<p>\uc774 \ub178\ud2b8\ub97c \ubc14\ud0d5\uc73c\ub85c \uc2e4\uc81c \uc2e4\uc2b5 \ud658\uacbd\uc5d0\uc11c \ub2e4\uc591\ud55c GCP \uc11c\ube44\uc2a4\ub97c \uc9c1\uc811 \uc0ac\uc6a9\ud574\ubcf4\uace0, \uac01 \uae30\uc220\uc758 \uc6d0\ub9ac\ub97c \uccb4\ud5d8\ud574\ubcf4\uc2dc\uae38 \ubc14\ub78d\ub2c8\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"%ED%95%B5%EC%8B%AC-%EC%9A%94%EC%A0%90\">\ud575\uc2ec \uc694\uc810<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>15\uc2dc\uac04 \ucee4\ub9ac\ud058\ub7fc<\/strong>\uc740 GCP \ubc0f \ube45\ub370\uc774\ud130 \uac1c\uc694(1\uc2dc\uac04), \ube45\ub370\uc774\ud130 \uc544\ud0a4\ud14d\ucc98(4\uc2dc\uac04), \ubd84\uc11d \uc54c\uace0\ub9ac\uc998(3\uc2dc\uac04), \uc2e4\uc2dc\uac04 \ucc98\ub9ac \uae30\uc220(3\uc2dc\uac04), \uc628\ub77c\uc778 \uc0cc\ub4dc\ubc15\uc2a4 \uae30\ubc18 Git \ud65c\uc6a9(2\uc2dc\uac04), \uc885\ud569 \uc2e4\uc2b5(2\uc2dc\uac04)\uc73c\ub85c \uad6c\uc131\ub429\ub2c8\ub2e4.<\/li>\n\n\n\n<li>GCP \uae30\ubc18 \ube45\ub370\uc774\ud130 \uc544\ud0a4\ud14d\ucc98\ub294&nbsp;<strong>Cloud Storage<\/strong>,&nbsp;<strong>BigQuery<\/strong>,&nbsp;<strong>Dataflow<\/strong>,&nbsp;<strong>Dataproc<\/strong>,&nbsp;<strong>Pub\/Sub<\/strong>&nbsp;\ub4f1\uc744 \ud65c\uc6a9\ud558\uc5ec \ub300\uaddc\ubaa8 \ub370\uc774\ud130\ub97c \ud6a8\uacfc\uc801\uc73c\ub85c \uc800\uc7a5, \ucc98\ub9ac, \ubd84\uc11d\ud560 \uc218 \uc788\ub3c4\ub85d \uc124\uacc4\ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/li>\n\n\n\n<li>GCP \ubd84\uc11d \uc54c\uace0\ub9ac\uc998\uc5d0\uc11c\ub294&nbsp;<strong>Vertex AI\uc640 AutoML Tables<\/strong>\ub97c \ud1b5\ud574 \ubd84\ub958, \ud68c\uadc0, \ud074\ub7ec\uc2a4\ud130\ub9c1, \uc2dc\uacc4\uc5f4 \uc608\uce21 \ubc0f \ucd94\ucc9c \uc2dc\uc2a4\ud15c \uc54c\uace0\ub9ac\uc998\uc744 \uac1c\ubc1c\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uc2e4\uc2dc\uac04 \ucc98\ub9ac \uae30\uc220\uc740&nbsp;<strong>Dataflow<\/strong>\ub97c \uc0ac\uc6a9\ud574 Pub\/Sub\uc640 \uc5f0\uacc4\ud55c \uc2a4\ud2b8\ub9ac\ubc0d \ud30c\uc774\ud504\ub77c\uc778\uc744 \uad6c\uc131\ud558\uba70, \uc708\ub3c4\uc6b0\ub9c1, \ud0c0\uc784\uc2a4\ud0ec\ud504 \uad00\ub9ac, \uc624\ub958 \ucc98\ub9ac \ubc0f \uc7ac\uc2dc\ub3c4 \uba54\ucee4\ub2c8\uc998\uc744 \ud3ec\ud568\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uc628\ub77c\uc778 \uc0cc\ub4dc\ubc15\uc2a4 \uae30\ubc18 Git \ud65c\uc6a9\uc744 \uc704\ud574&nbsp;<strong>Cloud Source Repositories<\/strong>,&nbsp;<strong>GitHub<\/strong>,&nbsp;<strong>Cloud Build<\/strong>, \uadf8\ub9ac\uace0&nbsp;<strong>Gerrit<\/strong>&nbsp;\ub4f1\uc744 \uc5f0\ub3d9\ud558\uc5ec CI\/CD \ud30c\uc774\ud504\ub77c\uc778 \ubc0f \ucf54\ub4dc \ub9ac\ubdf0 \ud504\ub85c\uc138\uc2a4\ub97c \uad6c\ucd95\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>15\uc2dc\uac04 \ucee4\ub9ac\ud058\ub7fc \ub85c\ub4dc\ub9f5 \uc2dc\uac04 \uc8fc\uc81c \uc138\ubd80 \ud559\uc2b5 \ubaa9\ud45c 1\uc2dc\uac04 GCP \ubc0f \ube45\ub370\uc774\ud130 \uac1c\uc694 GCP\uc758 \uae30\ubcf8 \uad6c\uc131 \uc694\uc18c\uc640 \ube45\ub370\uc774\ud130 \ucc98\ub9ac\uc758 \ud544\uc694\uc131 \uc774\ud574 4\uc2dc\uac04 GCP \uae30\ubc18 \ube45\ub370\uc774\ud130 \uc544\ud0a4\ud14d\ucc98 Cloud Storage, BigQuery, Dataflow \ub4f1\uc758 \uae30\ub2a5\uacfc \uc5ed\ud560 \uc774\ud574 3\uc2dc\uac04 GCP \ubd84\uc11d \uc54c\uace0\ub9ac\uc998 Vertex AI\uc640 AutoML Tables\uc744 \ud1b5\ud55c \uba38\uc2e0\ub7ec\ub2dd \ubaa8\ub378 \uac1c\ubc1c 3\uc2dc\uac04 GCP \uc2e4\uc2dc\uac04 \ucc98\ub9ac \uae30\uc220 Dataflow\uc640 \uc2a4\ud2b8\ub9ac\ubc0d \ud30c\uc774\ud504\ub77c\uc778 \uad6c\uc131 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-7","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.koseongnam.com\/index.php?rest_route=\/wp\/v2\/posts\/7","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.koseongnam.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.koseongnam.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.koseongnam.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.koseongnam.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=7"}],"version-history":[{"count":3,"href":"https:\/\/wordpress.koseongnam.com\/index.php?rest_route=\/wp\/v2\/posts\/7\/revisions"}],"predecessor-version":[{"id":35,"href":"https:\/\/wordpress.koseongnam.com\/index.php?rest_route=\/wp\/v2\/posts\/7\/revisions\/35"}],"wp:attachment":[{"href":"https:\/\/wordpress.koseongnam.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.koseongnam.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=7"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.koseongnam.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=7"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}