<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Hibuz]]></title><description><![CDATA[Thoughts, stories and ideas.]]></description><link>https://hibuz.com/</link><image><url>https://hibuz.com/favicon.png</url><title>Hibuz</title><link>https://hibuz.com/</link></image><generator>Ghost 5.2</generator><lastBuildDate>Mon, 03 Jun 2024 04:12:42 GMT</lastBuildDate><atom:link href="https://hibuz.com/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[1분만에 Hadoop 개발환경 만들기]]></title><description><![CDATA[윈도우나 맥에서 도커만 설치되어 있다면 쉽고 빠르게 docker compose 로 하둡 개발 환경을 로컬에 구성하고 VSCode를 사용해 개발 및 실행이 가능합니다.]]></description><link>https://hibuz.com/hadoop-dev-win-mac/</link><guid isPermaLink="false">613f22c9263bd20001df6ed9</guid><category><![CDATA[hadoop]]></category><category><![CDATA[dev]]></category><category><![CDATA[docker-compose]]></category><category><![CDATA[wordcount]]></category><dc:creator><![CDATA[Hibuz]]></dc:creator><pubDate>Mon, 13 Sep 2021 12:53:43 GMT</pubDate><media:content url="https://hibuz.com/content/images/2021/09/image--11-.jpg" medium="image"/><content:encoded><![CDATA[<h2 id="%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-%EC%A0%84%EC%97%90">&#xC2DC;&#xC791;&#xD558;&#xAE30; &#xC804;&#xC5D0;</h2><img src="https://hibuz.com/content/images/2021/09/image--11-.jpg" alt="1&#xBD84;&#xB9CC;&#xC5D0; Hadoop &#xAC1C;&#xBC1C;&#xD658;&#xACBD; &#xB9CC;&#xB4E4;&#xAE30;"><p>&#xD074;&#xB77C;&#xC6B0;&#xB4DC;&#xC5D0;&#xC11C; &#xC8FC;&#xB85C; &#xC0AC;&#xC6A9;&#xD558;&#xB294; ubuntu &#xC720;&#xC800; VM&#xACFC; &#xC720;&#xC0AC;&#xD558;&#xAC8C; &#xB3C4;&#xCEE4;&#xB85C; base &#xC774;&#xBBF8;&#xC9C0;&#xB97C; &#xC81C;&#xC791;&#xD558;&#xACE0; &#xAC01;&#xAC01; &#xAC1C;&#xBC1C; &#xC6A9;&#xB3C4;&#xBCC4;&#xB85C; &#xD655;&#xC7A5;&#xC2DC;&#xD0A4;&#xAE30; &#xC704;&#xD574; &#xD544;&#xC694;&#xD55C; &#xB3C4;&#xCEE4; &#xC774;&#xBBF8;&#xC9C0;&#xC640; compose &#xD30C;&#xC77C;&#xC744; <a href="https://github.com/hibuz/ubuntu-docker">&#xC791;&#xC131;&#xD558;&#xACE0; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</a> &#xA0;&#xBE45;&#xB370;&#xC774;&#xD130; &#xBD84;&#xC57C;&#xC758; &#xD558;&#xB461; &#xC5D0;&#xCF54; &#xC2DC;&#xC2A4;&#xD15C;&#xC740; &#xB2E4;&#xC591;&#xD55C; &#xC624;&#xD508;&#xC18C;&#xC2A4;&#xC640; &#xD568;&#xAED8; &#xD655;&#xC7A5;&#xB418;&#xC5B4; &#xC654;&#xAE30; &#xB54C;&#xBB38;&#xC5D0; &#xC774;&#xB7EC;&#xD55C; &#xC6A9;&#xB3C4;&#xB85C; &#xD65C;&#xC6A9;&#xB420; &#xC218; &#xC788;&#xB294; &#xC88B;&#xC740; &#xC608;&#xC2DC;&#xC785;&#xB2C8;&#xB2E4;. &#xC708;&#xB3C4;&#xC6B0;&#xB098; &#xB9E5;&#xC73C;&#xB85C; &#xB85C;&#xCEEC; &#xAC1C;&#xBC1C;&#xD658;&#xACBD;&#xC5D0;&#xC11C; &#xB9F5;&#xB9AC;&#xB4C0;&#xC2A4; &#xAC1C;&#xBC1C;&#xC774;&#xB098; &#xBE4C;&#xB4DC;&#xB294; &#xAC00;&#xB2A5;&#xD558;&#xC9C0;&#xB9CC;, &#xA0;&#xC774;&#xD6C4; &#xC2E4;&#xD589;&#xC740; &#xBCF5;&#xC7A1;&#xD55C; &#xC124;&#xCE58; &#xACFC;&#xC815;&#xC774;&#xB098; HDFS &#xBD84;&#xC0B0; &#xC2DC;&#xC2A4;&#xD15C;&#xC744; &#xC774;&#xC6A9;&#xD560; &#xC218; &#xC788;&#xB294; &#xC11C;&#xBC84;&#xAC00; &#xD544;&#xC694;&#xD569;&#xB2C8;&#xB2E4;. &#xC608;&#xC81C; &#xD504;&#xB85C;&#xC81D;&#xB97C; &#xBC1B;&#xC544;&#xC11C; &#xC774;&#xB97C; &#xD3B8;&#xD558;&#xAC8C; &#xAD6C;&#xC131;&#xD560; &#xC218; &#xC788;&#xB294; &#xBC29;&#xBC95;&#xC744; &#xC18C;&#xAC1C;&#xD569;&#xB2C8;&#xB2E4;.</p><p>&#xC608;&#xC81C; : <a href="https://github.com/hibuz/hadoop-example">https://github.com/hibuz/hadoop-example</a></p><h2 id="%ED%95%98%EB%91%A1-%EC%98%88%EC%A0%9C-%EC%8B%A4%ED%96%89">&#xD558;&#xB461; &#xC608;&#xC81C; &#xC2E4;&#xD589;</h2><h3 id="%EC%9C%88%EB%8F%84%EC%9A%B0-git-bash-%EC%82%AC%EC%9A%A9">&#xC708;&#xB3C4;&#xC6B0; Git Bash &#xC0AC;&#xC6A9;</h3><p>(CMD &#xCC3D;&#xC5D0;&#xC11C; Shell&#xD30C;&#xC77C;&#xC744; &#xC2E4;&#xD589;&#xD558;&#xB354;&#xB77C;&#xB3C4; Git Bash &#xCC3D;&#xC774; &#xB5A0;&#xC11C; &#xB3D9;&#xC791; &#xAC00;&#xB2A5;&#xD568;)</p><ol><li>&#xC608;&#xC81C; &#xC18C;&#xC2A4;&#xCF54;&#xB4DC; &#xB2E4;&#xC6B4;&#xB85C;&#xB4DC; &#xBC0F; &#xBE4C;&#xB4DC; &#xD6C4; &#xC2E4;&#xD589;</li></ol><pre><code class="language-bash">git clone https://github.com/hibuz/hadoop-example.git

cd hadoop-example

# docker compose &#xC2E4;&#xD589; &#xBC0F; Docker Bash &#xC2E4;&#xD589;
./docker_up.sh</code></pre><figure class="kg-card kg-image-card"><img src="https://hibuz.com/content/images/2021/09/image--5-.png" class="kg-image" alt="1&#xBD84;&#xB9CC;&#xC5D0; Hadoop &#xAC1C;&#xBC1C;&#xD658;&#xACBD; &#xB9CC;&#xB4E4;&#xAE30;" loading="lazy" width="1075" height="541" srcset="https://hibuz.com/content/images/size/w600/2021/09/image--5-.png 600w, https://hibuz.com/content/images/size/w1000/2021/09/image--5-.png 1000w, https://hibuz.com/content/images/2021/09/image--5-.png 1075w" sizes="(min-width: 720px) 720px"></figure><p>2. &#xC608;&#xC81C; &#xBE4C;&#xB4DC; &#xBC0F; &#xC2E4;&#xD589;</p><pre><code class="language-bash">$ ./mvnw package

# &#xB2E8;&#xC5B4; &#xC0D8;&#xD50C;&#xC744; hdfs&#xC5D0; &#xD30C;&#xC77C;&#xB85C; &#xC800;&#xC7A5;
$ ./wordcount_input.sh

# hadoop mapreduce &#xC2E4;&#xD589;
$ ./run_example.sh</code></pre><figure class="kg-card kg-image-card"><img src="https://hibuz.com/content/images/2021/09/image--6-.png" class="kg-image" alt="1&#xBD84;&#xB9CC;&#xC5D0; Hadoop &#xAC1C;&#xBC1C;&#xD658;&#xACBD; &#xB9CC;&#xB4E4;&#xAE30;" loading="lazy" width="1186" height="391" srcset="https://hibuz.com/content/images/size/w600/2021/09/image--6-.png 600w, https://hibuz.com/content/images/size/w1000/2021/09/image--6-.png 1000w, https://hibuz.com/content/images/2021/09/image--6-.png 1186w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://hibuz.com/content/images/2021/09/image--7-.png" class="kg-image" alt="1&#xBD84;&#xB9CC;&#xC5D0; Hadoop &#xAC1C;&#xBC1C;&#xD658;&#xACBD; &#xB9CC;&#xB4E4;&#xAE30;" loading="lazy" width="1215" height="391" srcset="https://hibuz.com/content/images/size/w600/2021/09/image--7-.png 600w, https://hibuz.com/content/images/size/w1000/2021/09/image--7-.png 1000w, https://hibuz.com/content/images/2021/09/image--7-.png 1215w" sizes="(min-width: 720px) 720px"></figure><p>3. &#xB3C4;&#xCEE4; &#xB370;&#xC2A4;&#xD06C;&#xD0D1;&#xC5D0;&#xC11C; VSCode &#xC2E4;&#xD589; &#xD6C4; &#xAC1C;&#xBC1C; &#xBC0F; &#xC2E4;&#xD589;</p><figure class="kg-card kg-image-card"><img src="https://hibuz.com/content/images/2021/09/image--1-.jpg" class="kg-image" alt="1&#xBD84;&#xB9CC;&#xC5D0; Hadoop &#xAC1C;&#xBC1C;&#xD658;&#xACBD; &#xB9CC;&#xB4E4;&#xAE30;" loading="lazy" width="1584" height="298" srcset="https://hibuz.com/content/images/size/w600/2021/09/image--1-.jpg 600w, https://hibuz.com/content/images/size/w1000/2021/09/image--1-.jpg 1000w, https://hibuz.com/content/images/2021/09/image--1-.jpg 1584w" sizes="(min-width: 720px) 720px"></figure><pre><code class="language-bash"># VSCode &#xC5D0;&#xC11C; Git Bash &#xD130;&#xBBF8;&#xB110; &#xC2E4;&#xD589; &#xD6C4; Docker Bash &#xC2E4;&#xD589;
./docker_up.sh

# &#xC18C;&#xC2A4; &#xC218;&#xC815; &#xD6C4; &#xC708;&#xB3C4;&#xC6B0;&#xC5D0;&#xC11C; mvnw &#xBE4C;&#xB4DC; &#xB610;&#xB294; &#xCEE8;&#xD14C;&#xC774;&#xB108;&#xC5D0;&#xC11C; &#xC258;&#xC5D0;&#xC11C; &#xBE4C;&#xB4DC;
$ ./mvnw package

# hadoop mapreduce &#xC2E4;&#xD589;
$ ./run_example.sh</code></pre><figure class="kg-card kg-image-card"><img src="https://hibuz.com/content/images/2021/09/image--2-.jpg" class="kg-image" alt="1&#xBD84;&#xB9CC;&#xC5D0; Hadoop &#xAC1C;&#xBC1C;&#xD658;&#xACBD; &#xB9CC;&#xB4E4;&#xAE30;" loading="lazy" width="1545" height="1022" srcset="https://hibuz.com/content/images/size/w600/2021/09/image--2-.jpg 600w, https://hibuz.com/content/images/size/w1000/2021/09/image--2-.jpg 1000w, https://hibuz.com/content/images/2021/09/image--2-.jpg 1545w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://hibuz.com/content/images/2021/09/image--3-.jpg" class="kg-image" alt="1&#xBD84;&#xB9CC;&#xC5D0; Hadoop &#xAC1C;&#xBC1C;&#xD658;&#xACBD; &#xB9CC;&#xB4E4;&#xAE30;" loading="lazy" width="1446" height="423" srcset="https://hibuz.com/content/images/size/w600/2021/09/image--3-.jpg 600w, https://hibuz.com/content/images/size/w1000/2021/09/image--3-.jpg 1000w, https://hibuz.com/content/images/2021/09/image--3-.jpg 1446w" sizes="(min-width: 720px) 720px"></figure><p>4. &#xCEE8;&#xD14C;&#xC774;&#xB108; &#xC815;&#xB9AC;</p><pre><code class="language-bash"># Docker &#xCEE8;&#xD14C;&#xC774;&#xB108; Bash &#xC5D0;&#xC11C; &#xBE60;&#xC838; &#xB098;&#xC624;&#xAE30;
$ exit

# Git bash&#xC5D0;&#xC11C; &#xBCFC;&#xB968;&#xC740; &#xC0AD;&#xC81C;&#xD558;&#xC9C0; &#xC54A;&#xC744; &#xACBD;&#xC6B0; -v &#xC81C;&#xC678;&#xD558;&#xACE0; &#xC2E4;&#xD589;
$ ./docker_down.sh -v</code></pre><figure class="kg-card kg-image-card"><img src="https://hibuz.com/content/images/2021/09/image--8-.png" class="kg-image" alt="1&#xBD84;&#xB9CC;&#xC5D0; Hadoop &#xAC1C;&#xBC1C;&#xD658;&#xACBD; &#xB9CC;&#xB4E4;&#xAE30;" loading="lazy" width="1215" height="366" srcset="https://hibuz.com/content/images/size/w600/2021/09/image--8-.png 600w, https://hibuz.com/content/images/size/w1000/2021/09/image--8-.png 1000w, https://hibuz.com/content/images/2021/09/image--8-.png 1215w" sizes="(min-width: 720px) 720px"></figure><h3 id="%EB%A7%A5%EC%97%90%EC%84%9C-docker-desktop-%EC%82%AC%EC%9A%A9">&#xB9E5;&#xC5D0;&#xC11C; Docker Desktop &#xC0AC;&#xC6A9;</h3><p>(Dev Environments&#xAC00; &#xC708;&#xB3C4;&#xC6B0;&#xC5D0;&#xC11C;&#xB294; &#xB3D9;&#xC791;&#xD558;&#xC9C0; &#xC54A;&#xC544; &#xB9E5;&#xC5D0;&#xC11C;&#xB9CC; &#xC124;&#xBA85;&#xD569;&#xB2C8;&#xB2E4;. &#xC708;&#xB3C4;&#xC6B0;&#xCC98;&#xB7FC; docker_up.sh &#xC0AC;&#xC6A9;&#xB3C4; &#xAC00;&#xB2A5;&#xD568;)</p><ol><li>&#xC608;&#xC81C; &#xC18C;&#xC2A4;&#xCF54;&#xB4DC; &#xB2E4;&#xC6B4;&#xB85C;&#xB4DC; &#xBC0F; VSCode&#xC5D0;&#xC11C; &#xCF54;&#xB4DC; &#xC218;&#xC815;</li></ol><pre><code class="language-bash">$ git clone https://github.com/hibuz/hadoop-example.git

$ cd hadoop-example

$ code .</code></pre><figure class="kg-card kg-image-card"><img src="https://hibuz.com/content/images/2021/09/image--4-.jpg" class="kg-image" alt="1&#xBD84;&#xB9CC;&#xC5D0; Hadoop &#xAC1C;&#xBC1C;&#xD658;&#xACBD; &#xB9CC;&#xB4E4;&#xAE30;" loading="lazy" width="1900" height="872" srcset="https://hibuz.com/content/images/size/w600/2021/09/image--4-.jpg 600w, https://hibuz.com/content/images/size/w1000/2021/09/image--4-.jpg 1000w, https://hibuz.com/content/images/size/w1600/2021/09/image--4-.jpg 1600w, https://hibuz.com/content/images/2021/09/image--4-.jpg 1900w" sizes="(min-width: 720px) 720px"></figure><p>2. VSCode &#xC5D0;&#xC11C; WordCount.java &#xD30C;&#xC77C;&#xC758; Reduce &#xAC12;&#xC5D0; * 2 &#xB97C; &#xD574;&#xC11C; &#xBE4C;&#xB4DC;&#xD569;&#xB2C8;&#xB2E4;.</p><figure class="kg-card kg-image-card"><img src="https://hibuz.com/content/images/2021/09/Image-2021-09-13-20-58-57.jpg" class="kg-image" alt="1&#xBD84;&#xB9CC;&#xC5D0; Hadoop &#xAC1C;&#xBC1C;&#xD658;&#xACBD; &#xB9CC;&#xB4E4;&#xAE30;" loading="lazy" width="2000" height="1245" srcset="https://hibuz.com/content/images/size/w600/2021/09/Image-2021-09-13-20-58-57.jpg 600w, https://hibuz.com/content/images/size/w1000/2021/09/Image-2021-09-13-20-58-57.jpg 1000w, https://hibuz.com/content/images/size/w1600/2021/09/Image-2021-09-13-20-58-57.jpg 1600w, https://hibuz.com/content/images/size/w2400/2021/09/Image-2021-09-13-20-58-57.jpg 2400w" sizes="(min-width: 720px) 720px"></figure><p>3. &#xBE4C;&#xB4DC;&#xB41C; &#xD30C;&#xC77C;&#xC744; &#xC2E4;&#xD589;&#xD560; &#xCEE8;&#xD14C;&#xC774;&#xB108; &#xC0DD;&#xC131;&#xC744; &#xC704;&#xD574; Dev Environments&#xC5D0;&#xC11C; &#xD504;&#xB85C;&#xC81D;&#xD2B8; &#xC704;&#xCE58;&#xB97C; &#xC9C0;&#xC815;&#xD569;&#xB2C8;&#xB2E4;.</p><figure class="kg-card kg-image-card"><img src="https://hibuz.com/content/images/2021/09/image--2--1.jpg" class="kg-image" alt="1&#xBD84;&#xB9CC;&#xC5D0; Hadoop &#xAC1C;&#xBC1C;&#xD658;&#xACBD; &#xB9CC;&#xB4E4;&#xAE30;" loading="lazy" width="2000" height="1204" srcset="https://hibuz.com/content/images/size/w600/2021/09/image--2--1.jpg 600w, https://hibuz.com/content/images/size/w1000/2021/09/image--2--1.jpg 1000w, https://hibuz.com/content/images/size/w1600/2021/09/image--2--1.jpg 1600w, https://hibuz.com/content/images/size/w2400/2021/09/image--2--1.jpg 2400w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://hibuz.com/content/images/2021/09/Image-2021-09-13-20-33-03.jpg" class="kg-image" alt="1&#xBD84;&#xB9CC;&#xC5D0; Hadoop &#xAC1C;&#xBC1C;&#xD658;&#xACBD; &#xB9CC;&#xB4E4;&#xAE30;" loading="lazy" width="2000" height="1352" srcset="https://hibuz.com/content/images/size/w600/2021/09/Image-2021-09-13-20-33-03.jpg 600w, https://hibuz.com/content/images/size/w1000/2021/09/Image-2021-09-13-20-33-03.jpg 1000w, https://hibuz.com/content/images/size/w1600/2021/09/Image-2021-09-13-20-33-03.jpg 1600w, https://hibuz.com/content/images/size/w2400/2021/09/Image-2021-09-13-20-33-03.jpg 2400w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://hibuz.com/content/images/2021/09/image--9-.jpg" class="kg-image" alt="1&#xBD84;&#xB9CC;&#xC5D0; Hadoop &#xAC1C;&#xBC1C;&#xD658;&#xACBD; &#xB9CC;&#xB4E4;&#xAE30;" loading="lazy" width="2000" height="498" srcset="https://hibuz.com/content/images/size/w600/2021/09/image--9-.jpg 600w, https://hibuz.com/content/images/size/w1000/2021/09/image--9-.jpg 1000w, https://hibuz.com/content/images/size/w1600/2021/09/image--9-.jpg 1600w, https://hibuz.com/content/images/size/w2400/2021/09/image--9-.jpg 2400w" sizes="(min-width: 720px) 720px"></figure><p>2. &#xCEE8;&#xD14C;&#xC774;&#xB108;&#xAC00; &#xC2E4;&#xD589;&#xB418;&#xBA74; Docker Bash&#xC5D0;&#xC11C; &#xB3D9;&#xC791;&#xC2DC;&#xCF1C; &#xBD05;&#xB2C8;&#xB2E4;.</p><pre><code class="language-bash"># &#xD130;&#xBBF8;&#xB110;&#xC5D0;&#xC11C; Docker bash &#xC2E4;&#xD589;
./docker_up.sh

# &#xCEE8;&#xD14C;&#xC774;&#xB108; &#xC258;&#xC5D0;&#xC11C; &#xB2E8;&#xC5B4; &#xC0D8;&#xD50C;&#xC744; hdfs&#xC5D0; &#xD30C;&#xC77C;&#xB85C; &#xC800;&#xC7A5;
$ ./wordcount_input.sh

# hadoop mapreduce &#xC2E4;&#xD589;
$ ./run_example.sh</code></pre><figure class="kg-card kg-image-card"><img src="https://hibuz.com/content/images/2021/09/image--6-.jpg" class="kg-image" alt="1&#xBD84;&#xB9CC;&#xC5D0; Hadoop &#xAC1C;&#xBC1C;&#xD658;&#xACBD; &#xB9CC;&#xB4E4;&#xAE30;" loading="lazy" width="1900" height="872" srcset="https://hibuz.com/content/images/size/w600/2021/09/image--6-.jpg 600w, https://hibuz.com/content/images/size/w1000/2021/09/image--6-.jpg 1000w, https://hibuz.com/content/images/size/w1600/2021/09/image--6-.jpg 1600w, https://hibuz.com/content/images/2021/09/image--6-.jpg 1900w" sizes="(min-width: 720px) 720px"></figure><p>&#xB2E8;&#xC5B4; &#xAC2F;&#xC218; * 2&#xAC00; &#xB41C; &#xACB0;&#xACFC;&#xB97C; &#xD655;&#xC778;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</p><figure class="kg-card kg-image-card"><img src="https://hibuz.com/content/images/2021/09/image--7-.jpg" class="kg-image" alt="1&#xBD84;&#xB9CC;&#xC5D0; Hadoop &#xAC1C;&#xBC1C;&#xD658;&#xACBD; &#xB9CC;&#xB4E4;&#xAE30;" loading="lazy" width="1900" height="872" srcset="https://hibuz.com/content/images/size/w600/2021/09/image--7-.jpg 600w, https://hibuz.com/content/images/size/w1000/2021/09/image--7-.jpg 1000w, https://hibuz.com/content/images/size/w1600/2021/09/image--7-.jpg 1600w, https://hibuz.com/content/images/2021/09/image--7-.jpg 1900w" sizes="(min-width: 720px) 720px"></figure><p>3. Docker Dashbord&#xC758; &#xA0;Containers / Apps &#xBA54;&#xB274;&#xC5D0;&#xC11C; &#xBE0C;&#xB77C;&#xC6B0;&#xC838;&#xB97C; &#xC5F4;&#xC5B4;&#xC11C; &#xC2E4;&#xD589;&#xB41C; &#xACB0;&#xACFC;&#xB97C; &#xC870;&#xD68C;&#xD569;&#xB2C8;&#xB2E4;.</p><figure class="kg-card kg-image-card"><img src="https://hibuz.com/content/images/2021/09/Image-2021-09-13-20-40-19--1-.jpg" class="kg-image" alt="1&#xBD84;&#xB9CC;&#xC5D0; Hadoop &#xAC1C;&#xBC1C;&#xD658;&#xACBD; &#xB9CC;&#xB4E4;&#xAE30;" loading="lazy" width="2000" height="498" srcset="https://hibuz.com/content/images/size/w600/2021/09/Image-2021-09-13-20-40-19--1-.jpg 600w, https://hibuz.com/content/images/size/w1000/2021/09/Image-2021-09-13-20-40-19--1-.jpg 1000w, https://hibuz.com/content/images/size/w1600/2021/09/Image-2021-09-13-20-40-19--1-.jpg 1600w, https://hibuz.com/content/images/size/w2400/2021/09/Image-2021-09-13-20-40-19--1-.jpg 2400w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://hibuz.com/content/images/2021/09/Image-2021-09-13-21-20-12.jpg" class="kg-image" alt="1&#xBD84;&#xB9CC;&#xC5D0; Hadoop &#xAC1C;&#xBC1C;&#xD658;&#xACBD; &#xB9CC;&#xB4E4;&#xAE30;" loading="lazy" width="2000" height="979" srcset="https://hibuz.com/content/images/size/w600/2021/09/Image-2021-09-13-21-20-12.jpg 600w, https://hibuz.com/content/images/size/w1000/2021/09/Image-2021-09-13-21-20-12.jpg 1000w, https://hibuz.com/content/images/size/w1600/2021/09/Image-2021-09-13-21-20-12.jpg 1600w, https://hibuz.com/content/images/2021/09/Image-2021-09-13-21-20-12.jpg 2316w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://hibuz.com/content/images/2021/09/Image-2021-09-13-21-21-50.jpg" class="kg-image" alt="1&#xBD84;&#xB9CC;&#xC5D0; Hadoop &#xAC1C;&#xBC1C;&#xD658;&#xACBD; &#xB9CC;&#xB4E4;&#xAE30;" loading="lazy" width="2000" height="979" srcset="https://hibuz.com/content/images/size/w600/2021/09/Image-2021-09-13-21-21-50.jpg 600w, https://hibuz.com/content/images/size/w1000/2021/09/Image-2021-09-13-21-21-50.jpg 1000w, https://hibuz.com/content/images/size/w1600/2021/09/Image-2021-09-13-21-21-50.jpg 1600w, https://hibuz.com/content/images/2021/09/Image-2021-09-13-21-21-50.jpg 2316w" sizes="(min-width: 720px) 720px"></figure><p>4. Docker Dashbord&#xC5D0;&#xC11C; &#xC0AD;&#xC81C;&#xD558;&#xAC70;&#xB098; &#xD130;&#xBBF8;&#xB110;&#xC5D0;&#xC11C; docker_down.sh &#xB85C; &#xC0AD;&#xC81C;&#xD569;&#xB2C8;&#xB2E4;.</p><figure class="kg-card kg-image-card"><img src="https://hibuz.com/content/images/2021/09/Image-2021-09-13-21-27-42.jpg" class="kg-image" alt="1&#xBD84;&#xB9CC;&#xC5D0; Hadoop &#xAC1C;&#xBC1C;&#xD658;&#xACBD; &#xB9CC;&#xB4E4;&#xAE30;" loading="lazy" width="2000" height="498" srcset="https://hibuz.com/content/images/size/w600/2021/09/Image-2021-09-13-21-27-42.jpg 600w, https://hibuz.com/content/images/size/w1000/2021/09/Image-2021-09-13-21-27-42.jpg 1000w, https://hibuz.com/content/images/size/w1600/2021/09/Image-2021-09-13-21-27-42.jpg 1600w, https://hibuz.com/content/images/size/w2400/2021/09/Image-2021-09-13-21-27-42.jpg 2400w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://hibuz.com/content/images/2021/09/image--8-.jpg" class="kg-image" alt="1&#xBD84;&#xB9CC;&#xC5D0; Hadoop &#xAC1C;&#xBC1C;&#xD658;&#xACBD; &#xB9CC;&#xB4E4;&#xAE30;" loading="lazy" width="1900" height="872" srcset="https://hibuz.com/content/images/size/w600/2021/09/image--8-.jpg 600w, https://hibuz.com/content/images/size/w1000/2021/09/image--8-.jpg 1000w, https://hibuz.com/content/images/size/w1600/2021/09/image--8-.jpg 1600w, https://hibuz.com/content/images/2021/09/image--8-.jpg 1900w" sizes="(min-width: 720px) 720px"></figure><h2 id="development-environment-%EC%82%AC%EC%9A%A9-%ED%9B%84%EA%B8%B0">Development Environment &#xC0AC;&#xC6A9; &#xD6C4;&#xAE30;</h2><p>&#xB3C4;&#xCEE4; &#xB370;&#xC2A4;&#xD06C;&#xD0D1;&#xC5D0; Development Environment &#xAE30;&#xB2A5;&#xC774; &#xC0DD;&#xACA8;&#xC11C; Git Remote &#xC8FC;&#xC18C;&#xB9CC; &#xB123;&#xC73C;&#xBA74; &#xC544;&#xC8FC; &#xBE60;&#xB974;&#xAC8C; &#xAC1C;&#xBC1C;&#xC774; &#xAC00;&#xB2A5;&#xD560; &#xAC83;&#xC73C;&#xB85C; &#xAE30;&#xB300;&#xD558;&#xC600;&#xC2B5;&#xB2C8;&#xB2E4;. &#xD558;&#xC9C0;&#xB9CC; &#xCEE8;&#xD14C;&#xC774;&#xB108;&#xAC00; Dev &#xBAA8;&#xB4DC;&#xB85C; &#xC804;&#xD658;&#xB418;&#xBA74;&#xC11C; &#xC0C8;&#xB85C;&#xC6B4; &#xCEE8;&#xD14C;&#xC774;&#xB108;&#xB85C; &#xB3D9;&#xC791;&#xD574;&#xC11C; &#xD558;&#xB461;&#xAD00;&#xB828; &#xC791;&#xC5C5;&#xC774; &#xB418;&#xC9C0; &#xC54A;&#xC558;&#xC2B5;&#xB2C8;&#xB2E4;. &#xC804;&#xD658;&#xD558;&#xC9C0; &#xC54A;&#xACE0; &#xCEE8;&#xD14C;&#xC774;&#xB108;&#xC5D0; &#xB4E4;&#xC5B4;&#xAC00;&#xBA74; &#xC0AC;&#xC6A9;&#xC740; &#xAC00;&#xB2A5;&#xD558;&#xB098; &#xC0C8;&#xB85C;&#xC6B4; &#xCF54;&#xB4DC;&#xB97C; &#xB123;&#xC5B4; &#xC791;&#xC5C5;&#xD558;&#xAE30; &#xBD88;&#xD3B8;&#xD574;&#xC11C; &#xACB0;&#xAD6D; &#xB85C;&#xCEEC; &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xB97C; &#xB9C8;&#xC6B4;&#xD2B8; &#xD558;&#xB294; &#xBC29;&#xC2DD;&#xC73C;&#xB85C; &#xC9C4;&#xD589;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;. &#xD300; &#xD50C;&#xB79C;&#xC73C;&#xB85C; &#xC804;&#xD658;&#xD574;&#xC11C; &#xC791;&#xC5C5;&#xC911;&#xC778; &#xCEE8;&#xD14C;&#xC774;&#xB108;&#xB97C; &#xACF5;&#xC720;&#xD558;&#xB294; &#xBC29;&#xC2DD;&#xC73C;&#xB85C; &#xC774;&#xBBF8;&#xC9C0;&#xB97C; &#xB9CC;&#xB4E4;&#xBA74; &#xB420;&#xAE4C;&#xB3C4; &#xC2F6;&#xC9C0;&#xB9CC; &#xADF8;&#xB807;&#xAC8C; &#xAE4C;&#xC9C0;&#xB294;.. &#xA0;&#xC774;&#xC0C1; &#xD558;&#xB461; &#xAC1C;&#xBC1C; &#xD658;&#xACBD; &#xAD6C;&#xCD95;&#xAE30; &#xC785;&#xB2C8;&#xB2E4;.</p>]]></content:encoded></item><item><title><![CDATA[Istio 트래픽 관리]]></title><description><![CDATA[Istio는 circuit breakers, timeouts, retries와 같은 서비스 레벨 속성들을 쉽게 구성하여 서비스 간의 트래픽 흐름 제어가 용이하고 종속된 서비스나 네트워크의 장애에 대해 애플리케이션을 더욱 강력하게 합니다. 또한 퍼센트 기반 트래픽 분할을 통해 A/B 테스트, 까나리 배포 및 단계적 롤아웃과 같은 중요한 작업도 쉽게 설정할 수 있습니다.]]></description><link>https://hibuz.com/istio-traffic-management-overview/</link><guid isPermaLink="false">60b17e49263bd20001df6e5b</guid><category><![CDATA[istio]]></category><category><![CDATA[traffic]]></category><category><![CDATA[kiali]]></category><category><![CDATA[bookinfo]]></category><category><![CDATA[ingress]]></category><category><![CDATA[gateway]]></category><category><![CDATA[k8s]]></category><dc:creator><![CDATA[Hibuz]]></dc:creator><pubDate>Sun, 30 May 2021 01:26:10 GMT</pubDate><media:content url="https://hibuz.com/content/images/2021/05/Untitled.png" medium="image"/><content:encoded><![CDATA[<img src="https://hibuz.com/content/images/2021/05/Untitled.png" alt="Istio &#xD2B8;&#xB798;&#xD53D; &#xAD00;&#xB9AC;"><p>&#xC774;&#xC804;&#xAE00;: Istio &#xC900;&#xBE44;&#xD558;&#xAE30; - &#xA0;<a href="https://hibuz.com/istio-getting-started/">https://hibuz.com/istio-getting-started/</a></p><p>Istio&#xC758; &#xD2B8;&#xB798;&#xD53D; &#xAD00;&#xB9AC;&#xB294; &#xC560;&#xD50C;&#xB9AC;&#xCF00;&#xC774;&#xC158;&#xC758; &#xC0AC;&#xC774;&#xB4DC;&#xCE74;&#xB85C; &#xBC30;&#xD3EC;&#xB418;&#xB294; Envoy &#xD504;&#xB85D;&#xC2DC;&#xC5D0; &#xC758;&#xC874;&#xD569;&#xB2C8;&#xB2E4;. &#xBA54;&#xC2DC; &#xC11C;&#xBE44;&#xC2A4;&#xAC00; &#xC8FC;&#xACE0; &#xBC1B;&#xB294; &#xBAA8;&#xB4E0; &#xD2B8;&#xB798;&#xD53D; (data plane traffic)&#xC740; Envoy&#xB97C; &#xD1B5;&#xD574; &#xD504;&#xB85D;&#xC2DC; &#xB418;&#xBBC0;&#xB85C; &#xC560;&#xD50C;&#xB9AC;&#xCF00;&#xC774;&#xC158; &#xBCC0;&#xACBD;&#xD558;&#xC9C0; &#xC54A;&#xACE0;&#xB3C4; &#xBA54;&#xC2DC; &#xC8FC;&#xBCC0;&#xC758; &#xD2B8;&#xB798;&#xD53D;&#xC744; &#xC27D;&#xAC8C; &#xC804;&#xB2EC;&#xD558;&#xACE0; &#xC81C;&#xC5B4; &#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</p><h1 id="%EA%B0%9C%EC%9A%94">&#xAC1C;&#xC694;</h1><p>Kubernetes &#xC5D0;&#xC11C; &#xD2B8;&#xB798;&#xD53D; &#xAD00;&#xB9AC;&#xB294; Ingress &#x2192; Service &#x2192; Pod &#xB85C; &#xB2E8;&#xC21C;&#xD55C; &#xBC18;&#xBA74; Istio&#xC5D0;&#xC11C;&#xB294; <code>Gateway</code>, <code>VirtualService</code>, <code>DestinationRule</code> &#xC744; &#xC0AC;&#xC6A9;&#xD574;&#xC11C; &#xC815;&#xAD50;&#xD558;&#xAC8C; &#xD2B8;&#xB798;&#xD53D; &#xC81C;&#xC5B4;&#xAC00; &#xAC00;&#xB2A5;&#xD569;&#xB2C8;&#xB2E4;.</p><h2 id="gateway">Gateway</h2><p>&#xD074;&#xB7EC;&#xC2A4;&#xD130; &#xC678;&#xBD80;&#xB85C; &#xBD80;&#xD130; &#xC5B4;&#xB5A4; &#xD2B8;&#xB798;&#xD53D;&#xC744; &#xBC1B;&#xC744;&#xC9C0;&#xC5D0; &#xB300;&#xD55C; &#xC11C;&#xBE44;&#xC2A4;&#xBA54;&#xC2DC; &#xC5E3;&#xC9C0;&#xB97C; &#xAD6C;&#xC131;&#xD569;&#xB2C8;&#xB2E4;.</p><pre><code class="language-yaml">apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: bookinfo-gateway
spec:
  selector:
    istio: ingressgateway # &#xAE30;&#xBCF8; IngressGateway&#xC5D0; &#xC124;&#xC815;
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - &quot;*&quot;
</code></pre><h2 id="virtualservice">VirtualService</h2><p>&#xB4E4;&#xC5B4;&#xC628; &#xD2B8;&#xB798;&#xD53D;&#xC744; &#xC5B4;&#xB5BB;&#xAC8C; &#xB77C;&#xC6B0;&#xD305; &#xD560;&#xC9C0; &#xADDC;&#xCE59;&#xB4E4;&#xC744; &#xC815;&#xC758;&#xD558;&#xBA70; DestinationRule&#xACFC; &#xD568;&#xAED8; Istio&#xC758; &#xD575;&#xC2EC;&#xC694;&#xC18C;&#xC785;&#xB2C8;&#xB2E4;.</p><pre><code class="language-yaml">apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: bookinfo
spec:
  hosts:
  - &quot;*&quot;
  gateways:
  - bookinfo-gateway # &#xC120;&#xD0DD;&#xD55C; gateway&#xB85C; &#xBD80;&#xD130; &#xD2B8;&#xB798;&#xD53D;&#xC744; &#xBC1B;&#xB3C4;&#xB85D; &#xC124;&#xC815;
  http:
  - match:
    - uri:
        exact: /productpage
    - uri:
        prefix: /static
    - uri:
        exact: /login
    - uri:
        exact: /logout
    - uri:
        prefix: /api/v1/products
    route:
    - destination:
        host: productpage # &#xB77C;&#xC6B0;&#xD305; &#xB300;&#xC0C1;
        port:
          number: 9080
</code></pre><h2 id="destinationrule">DestinationRule</h2><p>&#xC6CC;&#xD06C;&#xB85C;&#xB4DC;&#xB97C; &#xBC84;&#xC804;&#xBCC4;&#xB85C; &#xADF8;&#xB8F9;&#xD654;&#xB41C; &#xC11C;&#xBE44;&#xC2A4;&#xC758; &#xC11C;&#xBE0C;&#xC14B;&#xC73C;&#xB85C; &#xAD00;&#xB9AC;&#xD558;&#xACE0;, &#xC120;&#xD638;&#xD558;&#xB294; &#xB85C;&#xB4DC;&#xBC38;&#xB7F0;&#xC2F1; &#xBAA8;&#xB378;, &#xBCF4;&#xC548;, &#xD68C;&#xB85C;&#xCC28;&#xB2E8;&#xAE30; &#xC124;&#xC815; &#xAC19;&#xC740; &#xD2B8;&#xB798;&#xD53D; &#xC815;&#xCC45;&#xACFC; &#xAD00;&#xB828;&#xB41C; &#xADDC;&#xCE59;&#xC744; &#xC815;&#xC758;&#xD569;&#xB2C8;&#xB2E4;.</p><pre><code class="language-yaml">apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: reviews
spec:
  host: reviews
  subsets:
  - name: v1
    labels:
      version: v1
  - name: v2
    labels:
      version: v2
  - name: v3
    labels:
      version: v3
</code></pre><h1 id="%EC%82%AC%EC%A0%84%EC%A4%80%EB%B9%84">&#xC0AC;&#xC804;&#xC900;&#xBE44;</h1><p>Bookinfo &#xC560;&#xD50C;&#xB9AC;&#xCF00;&#xC774;&#xC158;&#xC5D0;&#xC11C; &#xC0AC;&#xC6A9;&#xD560; VirtualService&#xC640; DestinationRule&#xC744; &#xC804;&#xCCB4; &#xC11C;&#xBE44;&#xC2A4;&#xC5D0; &#xC801;&#xC6A9;&#xD569;&#xB2C8;&#xB2E4;.</p><ol><li>&#xAE30;&#xBCF8; destination rules &#xC804;&#xCCB4; &#xC801;&#xC6A9;</li></ol><pre><code class="language-bash">$ kubectl apply -f samples/bookinfo/networking/destination-rule-all.yaml

destinationrule.networking.istio.io/productpage created
destinationrule.networking.istio.io/reviews created
destinationrule.networking.istio.io/ratings created
destinationrule.networking.istio.io/details created

# &#xC801;&#xC6A9; &#xD655;&#xC778;
$ kubectl get destinationrule
NAME          HOST          AGE
details       details       18s
productpage   productpage   18s
ratings       ratings       18s
reviews       reviews       18s
</code></pre><p>	&#xCC38;&#xACE0;: DestinationRule &#xC124;&#xC815; &#xC624;&#xB958; &#xD655;&#xC778;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://hibuz.com/content/images/2021/05/image-13.png" class="kg-image" alt="Istio &#xD2B8;&#xB798;&#xD53D; &#xAD00;&#xB9AC;" loading="lazy" width="412" height="240"><figcaption>Kiali &#xB300;&#xC2DC;&#xBCF4;&#xB4DC;</figcaption></figure><figure class="kg-card kg-image-card"><img src="https://hibuz.com/content/images/2021/05/image-14.png" class="kg-image" alt="Istio &#xD2B8;&#xB798;&#xD53D; &#xAD00;&#xB9AC;" loading="lazy" width="600" height="250" srcset="https://hibuz.com/content/images/2021/05/image-14.png 600w"></figure><figure class="kg-card kg-image-card"><img src="https://hibuz.com/content/images/2021/05/image-15.png" class="kg-image" alt="Istio &#xD2B8;&#xB798;&#xD53D; &#xAD00;&#xB9AC;" loading="lazy" width="930" height="444" srcset="https://hibuz.com/content/images/size/w600/2021/05/image-15.png 600w, https://hibuz.com/content/images/2021/05/image-15.png 930w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-code-card"><pre><code class="language-bash"># Details Deployment &#xC0DD;&#xC131;(version: v2)
$ kubectl apply -f samples/bookinfo/platform/kube/bookinfo-details-v2.yaml

# v2&#xB85C; &#xB77C;&#xC6B0;&#xD305; &#xC801;&#xC6A9;&#xD558;&#xBA74; detail&#xC5D0;&#xC11C; service registry&#xC5D0; &#xC5C6;&#xB294; &#xC11C;&#xBE44;&#xC2A4; &#xD638;&#xCD9C; &#xC2E4;&#xD328;
$ kubectl apply -f samples/bookinfo/networking/virtual-service-details-v2.yaml</code></pre><figcaption>details DestinationRule&#xC5D0;&#xC11C; v2 subset &#xC0AD;&#xC81C; or details v2 &#xBC30;&#xD3EC;</figcaption></figure><figure class="kg-card kg-code-card"><pre><code class="language-bash"># ratings v2&#xC6A9; mongodb &#xC0DD;&#xC131;
$ kubectl apply -f samples/bookinfo/platform/kube/bookinfo-db

# raging v2(ratings-db) deployment &#xC0DD;&#xC131;
$ kubectl apply -f samples/bookinfo/platform/kube/bookinfo-ratings-v2


# &#xB77C;&#xC6B0;&#xD305;&#xC744; review:v3 -&gt; rating:v2(mongodb)&#xB85C; &#xBCC0;&#xACBD;
$ kubectl apply -f samples/bookinfo/networking/virtual-service-ratings-db.yaml
</code></pre><figcaption>ratings DestinationRule&#xC5D0;&#xC11C; v2, v2-mysql, v2-mysql-vm subset &#xC0AD;&#xC81C; or v2(mongodb) &#xBC30;&#xD3EC;</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://hibuz.com/content/images/2021/05/image-16.png" class="kg-image" alt="Istio &#xD2B8;&#xB798;&#xD53D; &#xAD00;&#xB9AC;" loading="lazy" width="448" height="240"><figcaption>&#xC870;&#xCE58; &#xACB0;&#xACFC;</figcaption></figure><p>2. &#xAE30;&#xBCF8; virtual services &#xC804;&#xCCB4; &#xC801;&#xC6A9;</p><pre><code class="language-bash"># &#xC801;&#xC6A9; &#xC804;
$ kubectl get virtualservice
NAME       GATEWAYS               HOSTS   AGE
bookinfo   [&quot;bookinfo-gateway&quot;]   [&quot;*&quot;]   57m

$ kubectl apply -f samples/bookinfo/networking/virtual-service-all-v1.yaml

virtualservice.networking.istio.io/productpage created
virtualservice.networking.istio.io/reviews created
virtualservice.networking.istio.io/ratings created
virtualservice.networking.istio.io/details created

# &#xC801;&#xC6A9; &#xD6C4;
$ kubectl get virtualservice
NAME          GATEWAYS               HOSTS             AGE
bookinfo      [&quot;bookinfo-gateway&quot;]   [&quot;*&quot;]             64m
details                              [&quot;details&quot;]       14s
productpage                          [&quot;productpage&quot;]   14s
ratings                              [&quot;ratings&quot;]       14s
reviews                              [&quot;reviews&quot;]       14s
</code></pre><p>3. &#xC801;&#xC6A9; &#xC0C1;&#xD0DC; &#xD655;&#xC778;</p><figure class="kg-card kg-image-card"><img src="https://hibuz.com/content/images/2021/05/image-12.png" class="kg-image" alt="Istio &#xD2B8;&#xB798;&#xD53D; &#xAD00;&#xB9AC;" loading="lazy" width="844" height="439" srcset="https://hibuz.com/content/images/size/w600/2021/05/image-12.png 600w, https://hibuz.com/content/images/2021/05/image-12.png 844w" sizes="(min-width: 720px) 720px"></figure><h2 id="%EC%B0%B8%EA%B3%A0">&#xCC38;&#xACE0;</h2><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://istio.io/latest/docs/concepts/traffic-management/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Traffic Management</div><div class="kg-bookmark-description">Describes the various Istio features focused on traffic routing and control.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://istio.io/latest/favicons/android-192x192.png" alt="Istio &#xD2B8;&#xB798;&#xD53D; &#xAD00;&#xB9AC;"><span class="kg-bookmark-author">Istio</span><span class="kg-bookmark-publisher">22 minute read page test</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://raw.githubusercontent.com/istio/istio.io/master/static/img/istio-whitelogo-bluebackground-framed.svg" alt="Istio &#xD2B8;&#xB798;&#xD53D; &#xAD00;&#xB9AC;"></div></a></figure>]]></content:encoded></item><item><title><![CDATA[Istio 준비하기]]></title><description><![CDATA[이 가이드는 빠르게 Istio를 설치하고 샘플 애플리케이션과 Kiali 대시보드도 함께 설치해 이후 실습을 준비합니다.]]></description><link>https://hibuz.com/istio-getting-started/</link><guid isPermaLink="false">60b16eb5263bd20001df6de9</guid><category><![CDATA[istio]]></category><category><![CDATA[bookinfo]]></category><category><![CDATA[install]]></category><category><![CDATA[k8s]]></category><category><![CDATA[msa]]></category><dc:creator><![CDATA[Hibuz]]></dc:creator><pubDate>Fri, 28 May 2021 22:57:37 GMT</pubDate><media:content url="https://hibuz.com/content/images/2021/09/istio_getting_started--1-.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://hibuz.com/content/images/2021/09/istio_getting_started--1-.jpg" alt="Istio &#xC900;&#xBE44;&#xD558;&#xAE30;"><p>&#xC774;&#xC804;&#xAE00;: Minikube &#xD074;&#xB7EC;&#xC2A4;&#xD130;&#xC640; &#xB3C4;&#xAD6C;&#xC900;&#xBE44; - <a href="https://hibuz.com/minikube-install/" rel="noopener noreferrer">https://hibuz.com/minikube-install/</a></p><h1 id="istio-%EB%8B%A4%EC%9A%B4%EB%A1%9C%EB%93%9C">Istio &#xB2E4;&#xC6B4;&#xB85C;&#xB4DC;</h1><ol><li>&#xCD5C;&#xC2E0; &#xB9B4;&#xB9AC;&#xC988; &#xB2E4;&#xC6B4;&#xB85C;&#xB4DC;</li></ol><pre><code class="language-bash">$ curl -L &lt;https://istio.io/downloadIstio&gt; | sh -

# &#xD2B9;&#xC815;&#xBC84;&#xC804; &#xB610;&#xB294; &#xD504;&#xB85C;&#xC138;&#xC11C; &#xC544;&#xD0A4;&#xD14D;&#xCC98; &#xC120;&#xD0DD; &#xB2E4;&#xC6B4;&#xB85C;&#xB4DC;
# curl -L &lt;https://istio.io/downloadIstio&gt; | ISTIO_VERSION=1.6.8 TARGET_ARCH=x86_64 sh -</code></pre><p>2. istioctl &#xD074;&#xB77C;&#xC774;&#xC5B8;&#xD2B8; PATH &#xC5D0; &#xCD94;&#xAC00;</p><pre><code class="language-bash">cd istio-1.10.0

# &#xB9E4;&#xBC88; PATH&#xB97C; &#xC124;&#xC815;&#xD558;&#xC9C0; &#xC54A;&#xACE0; &#xC258;&#xC774; &#xC2DC;&#xC791;&#xB420; &#xB54C;&#xB9C8;&#xB2E4; &#xC2E4;&#xD589;&#xB418;&#xB294; ~/.zshrc &#xB610;&#xB294; ~/.bashrc &#xC5D0; &#xCD94;&#xAC00;&#xD558;&#xBA74; &#xD3B8;&#xD568;
$ export PATH=$PWD/bin:$PATH

# Istio &#xBC84;&#xC804; &#xD655;&#xC778;
$ istioctl version
no running Istio pods in &quot;istio-system&quot;
1.9.5
</code></pre><p>&#xCC38;&#xACE0;: &#xBC84;&#xC804; &#xC870;&#xD68C;&#xC2DC; unable to retrieve Pods &#xAC00; &#xBC1C;&#xC0DD;&#xD558;&#xBA74; minikube start&#xB85C; k8s &#xD074;&#xB7EC;&#xC2A4;&#xD130; &#xC2E4;&#xD589;</p><h1 id="istio-operator%EB%A1%9C-%EC%84%A4%EC%B9%98">Istio Operator&#xB85C; &#xC124;&#xCE58;</h1><p>&#xACF5;&#xC2DD;&#xBB38;&#xC11C;&#xC640; &#xB2E4;&#xB974;&#xAC8C; &#xC0C8;&#xB85C;&#xC6B4; &#xBC84;&#xC804;&#xC758; &#xC124;&#xCE58; &#xC5C5;&#xADF8;&#xB808;&#xC774;&#xB4DC; &#xBC0F; &#xC81C;&#xAC70;&#xB97C; &#xC704;&#xD574; Operator CR&#xB9CC; &#xAC04;&#xB2E8;&#xD788; &#xC5C5;&#xB370;&#xC774;&#xD2B8;&#xD558;&#xB294; &#xBC29;&#xC2DD;&#xC73C;&#xB85C; Operator &#xAC00; &#xC124;&#xCE58;&#xB97C; &#xAD00;&#xB9AC;&#xD560; &#xC218; &#xC788;&#xB294; &#xBC29;&#xC2DD;&#xC744; &#xC0AC;&#xC6A9;&#xD569;&#xB2C8;&#xB2E4;.</p><figure class="kg-card kg-image-card"><img src="https://hibuz.com/content/images/2021/05/image-6.png" class="kg-image" alt="Istio &#xC900;&#xBE44;&#xD558;&#xAE30;" loading="lazy" width="724" height="532" srcset="https://hibuz.com/content/images/size/w600/2021/05/image-6.png 600w, https://hibuz.com/content/images/2021/05/image-6.png 724w" sizes="(min-width: 720px) 720px"></figure><ol><li>Operator &#xCD08;&#xAE30;&#xD654;</li></ol><pre><code class="language-bash"># &#xC0AD;&#xC81C;&#xC2DC; revision&#xC73C;&#xB85C; &#xC0AD;&#xC81C; &#xAC00;&#xB2A5;&#xD558;&#xB3C4;&#xB85D; &#xAF2D; &#xAE30;&#xC785;
$ istioctl operator init --revision 1-10-0

Installing operator controller in namespace: istio-operator using image: docker.io/istio/operator:1.10.0
Operator controller will watch namespaces: istio-system
2021-05-27T21:39:09.061803Z	info	proto: tag has too few fields: &quot;-&quot;
&#x2714; Istio operator installed
&#x2714; Installation complete

# operator controller pod &#xC870;&#xD68C;
$ kubectl get pods --namespace istio-operator \\
  -o=jsonpath=&apos;{range .items[*]}{.metadata.name}{&quot;:\\t&quot;}{range .spec.containers[*]}{.image}{&quot;, &quot;}{end}{&quot;\\n&quot;}{end}&apos;

istio-operator-1-10-0-74994f6764-m9jwk:	docker.io/istio/operator:1.10.0,
</code></pre><p>2. IstioOperator &#xC124;&#xCE58;</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://hibuz.com/content/images/2021/05/image-7.png" class="kg-image" alt="Istio &#xC900;&#xBE44;&#xD558;&#xAE30;" loading="lazy" width="670" height="233" srcset="https://hibuz.com/content/images/size/w600/2021/05/image-7.png 600w, https://hibuz.com/content/images/2021/05/image-7.png 670w"><figcaption>profile &#xBE44;&#xAD50;</figcaption></figure><pre><code class="language-bash"># demo profile&#xB85C; &#xC124;&#xCE58;&#xD558;&#xAC70;&#xB098; default profile&#xC5D0; egressgateway &#xD65C;&#xC131;&#xD654; &#xD574;&#xC11C; &#xCEE4;&#xC2A4;&#xD140;&#xB3C4; &#xAC00;&#xB2A5;
$ kubectl apply -f - &lt;&lt;EOF
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
metadata:
  namespace: istio-system
  name: istio-controlplane-1-10-0
spec:
  revision: 1-10-0 # &#xC0C8;&#xBC84;&#xC804; &#xC5C5;&#xADF8;&#xB808;&#xC774;&#xB4DC;&#xB97C; &#xC704;&#xD55C; &#xBA85;&#xC2DC;&#xC801; revision &#xC124;&#xC815;
  profile: default
  components:
    pilot:
      k8s:
        resources:
          requests:
            memory: 3072Mi  # &#xBA54;&#xBAA8;&#xB9AC; &#xCDA9;&#xBD84;&#xD788;
    egressGateways:
    - name: istio-egressgateway # default profile&#xC5D0; &#xBE60;&#xC838;&#xC788;&#xB294; egress &#xB3C4; &#xCD94;&#xAC00;
      enabled: true
EOF

istiooperator.install.istio.io/istio-controlplane-1-10-0 created
</code></pre><p>3. &#xC124;&#xCE58; &#xC0C1;&#xD0DC; &#xC870;&#xD68C;</p><pre><code class="language-bash"># &#xC124;&#xCE58; &#xC870;&#xD68C; HEALTHY &#xAC00; &#xB420; &#xB54C;&#xAE4C;&#xC9C0; &#xAE30;&#xB2E4;&#xB9AC;&#xAE30; (&#xC885;&#xB8CC;: Ctrl + C)
$ kubectl get iop -A -w
NAMESPACE      NAME                        REVISION   STATUS    AGE
istio-system   istio-controlplane-1-10-0   1-10-0     HEALTHY   75s

$ kubectl get po -A | grep istio
NAMESPACE              NAME                                     READY   STATUS    RESTARTS   AGE
istio-operator         istio-operator-1-10-0-74994f6764-m9jwk   1/1     Running   0          16m
istio-system           istio-egressgateway-584b9dcbcb-rszp9     1/1     Running   0          6m19s
istio-system           istio-ingressgateway-d87f8fd97-njbjl     1/1     Running   0          6m19s
istio-system           istiod-1-10-0-799d598ffb-p7gm8           1/1     Running   0          6m29s

$ kubectl get svc -A | grep istio
NAMESPACE              NAME                        TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)                                      AGE
istio-operator         istio-operator-1-10-0       ClusterIP      10.103.174.0     &lt;none&gt;        8383/TCP                                     15m
istio-system           istio-egressgateway         ClusterIP      10.97.0.9        &lt;none&gt;        80/TCP,443/TCP                               5m37s
istio-system           istio-ingressgateway        LoadBalancer   10.98.70.51      &lt;pending&gt;     15021:32358/TCP,80:31663/TCP,443:30257/TCP   5m37s
istio-system           istiod-1-10-0               ClusterIP      10.98.75.23      &lt;none&gt;        15010/TCP,15012/TCP,443/TCP,15014/TCP        5m47s
</code></pre><p>4. Envoy &#xC0AC;&#xC774;&#xB4DC;&#xCE74; &#xD504;&#xB85D;&#xC2DC; &#xC790;&#xB3D9; &#xC8FC;&#xC785; &#xC124;&#xC815;</p><pre><code class="language-bash"># rev &#xBBF8; &#xC0AC;&#xC6A9;&#xC2DC;: kubectl label ns default istio-injection=enabled
$ kubectl label ns default istio.io/rev=1-10-0
namespace/default labeled

# &#xC801;&#xC6A9; &#xD655;&#xC778;
# rev &#xBBF8; &#xC0AC;&#xC6A9;&#xC2DC;: kubectl get ns -L istio-injection)
$ kubectl get ns default --show-labels
NAME      STATUS   AGE   LABELS
default   Active   11d   istio.io/rev=1-10-0,kubernetes.io/metadata.name=default
</code></pre><h1 id="%EC%83%98%ED%94%8C-%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98-%EB%B0%B0%ED%8F%AC">&#xC0D8;&#xD50C; &#xC560;&#xD50C;&#xB9AC;&#xCF00;&#xC774;&#xC158; &#xBC30;&#xD3EC;</h1><figure class="kg-card kg-image-card"><img src="https://hibuz.com/content/images/2021/05/image-8.png" class="kg-image" alt="Istio &#xC900;&#xBE44;&#xD558;&#xAE30;" loading="lazy" width="824" height="571" srcset="https://hibuz.com/content/images/size/w600/2021/05/image-8.png 600w, https://hibuz.com/content/images/2021/05/image-8.png 824w" sizes="(min-width: 720px) 720px"></figure><ol><li>Bookinfo &#xBC30;&#xD3EC;</li></ol><pre><code class="language-bash">$ kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml

service/details created
serviceaccount/bookinfo-details created
deployment.apps/details-v1 created
service/ratings created
serviceaccount/bookinfo-ratings created
deployment.apps/ratings-v1 created
service/reviews created
serviceaccount/bookinfo-reviews created
deployment.apps/reviews-v1 created
deployment.apps/reviews-v2 created
deployment.apps/reviews-v3 created
service/productpage created
serviceaccount/bookinfo-productpage created
deployment.apps/productpage-v1 created
</code></pre><p>2. Pod &#xC774; &#xC900;&#xBE44;&#xB418;&#xBA74; Istio &#xC0AC;&#xC774;&#xB4DC;&#xCE74;&#xC640; &#xD568;&#xAED8; &#xBC30;&#xD3EC; &#xB428;</p><pre><code class="language-bash">$ kubectl get services
NAME          TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
details       ClusterIP   10.107.138.111   &lt;none&gt;        9080/TCP   4m36s
kubernetes    ClusterIP   10.96.0.1        &lt;none&gt;        443/TCP    11d
productpage   ClusterIP   10.97.40.144     &lt;none&gt;        9080/TCP   4m36s
ratings       ClusterIP   10.101.43.221    &lt;none&gt;        9080/TCP   4m36s
reviews       ClusterIP   10.109.78.110    &lt;none&gt;        9080/TCP   4m36s
</code></pre><p>and</p><pre><code class="language-bash">$ kubectl get pods
NAME                              READY   STATUS    RESTARTS   AGE
details-v1-79f774bdb9-97jws       2/2     Running   0          5m24s
productpage-v1-6b746f74dc-b9glg   2/2     Running   0          5m23s
ratings-v1-b6994bb9-vgt5n         2/2     Running   0          5m24s
reviews-v1-545db77b95-w5zz9       2/2     Running   0          5m24s
reviews-v2-7bf8c9648f-q9tzc       2/2     Running   0          5m24s
reviews-v3-84779c7bbc-5q6nz       2/2     Running   0          5m23s
</code></pre><p>and</p><pre><code class="language-bash">$ istioctl version
client version: 1.10.0
control plane version: 1.10.0
data plane version: 1.10.0 (8 proxies)

$ istioctl ps
NAME                                                  CDS        LDS        EDS        RDS          ISTIOD                             VERSION
details-v1-79f774bdb9-97jws.default                   SYNCED     SYNCED     SYNCED     SYNCED       istiod-1-10-0-799d598ffb-p7gm8     1.10.0
istio-egressgateway-584b9dcbcb-rszp9.istio-system     SYNCED     SYNCED     SYNCED     NOT SENT     istiod-1-10-0-799d598ffb-p7gm8     1.10.0
istio-ingressgateway-d87f8fd97-njbjl.istio-system     SYNCED     SYNCED     SYNCED     NOT SENT     istiod-1-10-0-799d598ffb-p7gm8     1.10.0
productpage-v1-6b746f74dc-b9glg.default               SYNCED     SYNCED     SYNCED     SYNCED       istiod-1-10-0-799d598ffb-p7gm8     1.10.0
ratings-v1-b6994bb9-vgt5n.default                     SYNCED     SYNCED     SYNCED     SYNCED       istiod-1-10-0-799d598ffb-p7gm8     1.10.0
reviews-v1-545db77b95-w5zz9.default                   SYNCED     SYNCED     SYNCED     SYNCED       istiod-1-10-0-799d598ffb-p7gm8     1.10.0
reviews-v2-7bf8c9648f-q9tzc.default                   SYNCED     SYNCED     SYNCED     SYNCED       istiod-1-10-0-799d598ffb-p7gm8     1.10.0
reviews-v3-84779c7bbc-5q6nz.default                   SYNCED     SYNCED     SYNCED     SYNCED       istiod-1-10-0-799d598ffb-p7gm8     1.10.0
</code></pre><p>3. &#xC5EC;&#xAE30;&#xAE4C;&#xC9C0; &#xB3D9;&#xC791;&#xC5EC;&#xBD80; &#xD655;&#xC778;: &#xA0;&#xB0B4;&#xBD80;&#xC5D0;&#xC11C; curl &#xC694;&#xCCAD; &#xD6C4; &#xC751;&#xB2F5; HTML &#xD398;&#xC774;&#xC9C0;&#xC758; &lt;title&gt; &#xD0DC;&#xADF8;&#xB85C; &#xD655;&#xC778;</p><pre><code class="language-bash">$ kubectl exec &quot;$(kubectl get pod -l app=ratings -o jsonpath=&apos;{.items[0].metadata.name}&apos;)&quot; -c ratings -- curl -sS productpage:9080/productpage | grep -o &quot;&lt;title&gt;.*&lt;/title&gt;&quot;

&lt;title&gt;Simple Bookstore App&lt;/title&gt;
</code></pre><h1 id="%EC%99%B8%EB%B6%80%EC%97%90%EC%84%9C-%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98-%EC%A0%91%EC%86%8D">&#xC678;&#xBD80;&#xC5D0;&#xC11C; &#xC560;&#xD50C;&#xB9AC;&#xCF00;&#xC774;&#xC158; &#xC811;&#xC18D;</h1><p>Istio Ingress Gateway&#xB97C; &#xC0DD;&#xC131;&#xD558;&#xBA74; &#xBA54;&#xC2DC; edge&#xC758; &#xB77C;&#xC6B0;&#xD305; path&#xB97C; &#xD1B5;&#xD574; Bookinfo &#xC560;&#xD50C;&#xB9AC;&#xCF00;&#xC774;&#xC158;&#xC5D0; &#xC811;&#xADFC; &#xAC00;&#xB2A5;</p><ol><li>Istio gateway&#xC640; &#xC560;&#xD50C;&#xB9AC;&#xCF00;&#xC774;&#xC158; &#xC5F0;&#xACB0;</li></ol><pre><code class="language-bash">$ kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml

gateway.networking.istio.io/bookinfo-gateway created
virtualservice.networking.istio.io/bookinfo created
</code></pre><p>2. Configuration&#xC5D0; &#xBB38;&#xC81C;&#xAC00; &#xC5C6;&#xB294;&#xC9C0; &#xD655;&#xC778;</p><pre><code class="language-bash">$ istioctl analyze

&#x2714; No validation issues found when analyzing namespace: default.
</code></pre><p>3. &#xC0C8;&#xB85C;&#xC6B4; &#xD130;&#xBBF8;&#xB110;&#xC744; &#xC5F4;&#xC5B4; &#xB85C;&#xB4DC;&#xBCA8;&#xB7F0;&#xC11C; IP &#xD560;&#xB2F9;&#xC744; &#xC704;&#xD55C; Minikube &#xD130;&#xB110;&#xB9C1; &#xC2E4;&#xD589;</p><pre><code class="language-bash">$ minikube tunnel
Status:
	machine: minikube
	pid: 29430
	route: 10.96.0.0/12 -&gt; 192.168.66.4
	minikube: Running
	services: [istio-ingressgateway]
</code></pre><p>4. &#xB85C;&#xB4DC;&#xBC38;&#xB7F0;&#xC11C; IP &#xB97C; &#xD655;&#xC778;&#xD558;&#xACE0; &#xC774;&#xB97C; GATEWAY_IP &#xD658;&#xACBD;&#xBCC0;&#xC218;&#xB85C; &#xC124;&#xC815; &#xBC0F; curl &#xD14C;&#xC2A4;&#xD2B8;</p><pre><code class="language-bash">$ kubectl get svc istio-ingressgateway -n istio-system
NAME                   TYPE           CLUSTER-IP    EXTERNAL-IP   PORT(S)                                      AGE
istio-ingressgateway   LoadBalancer   10.98.70.51   10.98.70.51   15021:32358/TCP,80:31663/TCP,443:30257/TCP   15h

$ export GATEWAY_IP=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath=&apos;{.status.loadBalancer.ingress[0].ip}&apos;)

$ curl -I &quot;http://$GATEWAY_IP/productpage&quot;
HTTP/1.1 200 OK
</code></pre><p>5. &#xC0D8;&#xD50C; &#xC560;&#xD50C;&#xB9AC;&#xCF00;&#xC774;&#xC158; &#xD14C;&#xC2A4;&#xD2B8;&#xC6A9; &#xD06C;&#xB86C; &#xD655;&#xC7A5; &#xC124;&#xCE58;(Auto Refresh Plus)</p><figure class="kg-card kg-image-card"><img src="https://hibuz.com/content/images/2021/05/image-9.png" class="kg-image" alt="Istio &#xC900;&#xBE44;&#xD558;&#xAE30;" loading="lazy" width="1011" height="600" srcset="https://hibuz.com/content/images/size/w600/2021/05/image-9.png 600w, https://hibuz.com/content/images/size/w1000/2021/05/image-9.png 1000w, https://hibuz.com/content/images/2021/05/image-9.png 1011w" sizes="(min-width: 720px) 720px"></figure><p>6. Ingress gateway &#xB85C;&#xB4DC;&#xBC38;&#xB7F0;&#xC11C; IP&#xB85C; &#xC811;&#xC18D; &#xBC0F; &#xC77C;&#xC815;(5&#xCD08;) &#xC8FC;&#xAE30;&#xB85C; &#xC790;&#xB3D9; refresh</p><figure class="kg-card kg-image-card"><img src="https://hibuz.com/content/images/2021/05/image-10.png" class="kg-image" alt="Istio &#xC900;&#xBE44;&#xD558;&#xAE30;" loading="lazy" width="1611" height="838" srcset="https://hibuz.com/content/images/size/w600/2021/05/image-10.png 600w, https://hibuz.com/content/images/size/w1000/2021/05/image-10.png 1000w, https://hibuz.com/content/images/size/w1600/2021/05/image-10.png 1600w, https://hibuz.com/content/images/2021/05/image-10.png 1611w" sizes="(min-width: 720px) 720px"></figure><h1 id="%EB%8C%80%EC%8B%9C%EB%B3%B4%EB%93%9C-%ED%99%95%EC%9D%B8">&#xB300;&#xC2DC;&#xBCF4;&#xB4DC; &#xD655;&#xC778;</h1><p>Istio&#xB294; &#xC5EC;&#xB7EC; telemetry &#xC560;&#xD50C;&#xB9AC;&#xCF00;&#xC774;&#xC158;&#xACFC; &#xD1B5;&#xD569;&#xB418;&#xACE0; &#xC774;&#xB97C; &#xD1B5;&#xD574; &#xC11C;&#xBE44;&#xC2A4; &#xBA54;&#xC2DC; &#xAD6C;&#xC870;&#xB97C; &#xC774;&#xD574;&#xD558;&#xACE0; &#xD1A0;&#xD3F4;&#xB85C;&#xC9C0;&#xB97C; &#xD45C;&#xC2DC;&#xD558;&#xC5EC; &#xC0C1;&#xD0DC;&#xB97C; &#xBD84;&#xC11D;&#xAC00;&#xB2A5;</p><ol><li>Kiali &#xB300;&#xC2DC;&#xBCF4;&#xB4DC;&#xC640; &#xD544;&#xC694;&#xD55C; Addon &#xC124;&#xCE58;</li></ol><pre><code class="language-bash"># unable to recognize &quot;samples/addons/kiali.yaml&quot; &#xBC1C;&#xC0DD;&#xD558;&#xACE0; &#xD55C;&#xBC88; &#xB354; &#xC2E4;&#xD589;
$ kubectl apply -f samples/addons

serviceaccount/grafana created
configmap/grafana created
service/grafana created
deployment.apps/grafana created
configmap/istio-grafana-dashboards created
configmap/istio-services-grafana-dashboards created
deployment.apps/jaeger created
service/tracing created
service/zipkin created
service/jaeger-collector created
customresourcedefinition.apiextensions.k8s.io/monitoringdashboards.monitoring.kiali.io created
serviceaccount/kiali created
configmap/kiali created
clusterrole.rbac.authorization.k8s.io/kiali-viewer created
clusterrole.rbac.authorization.k8s.io/kiali created
clusterrolebinding.rbac.authorization.k8s.io/kiali created
role.rbac.authorization.k8s.io/kiali-controlplane created
rolebinding.rbac.authorization.k8s.io/kiali-controlplane created
service/kiali created
deployment.apps/kiali created
serviceaccount/prometheus created
configmap/prometheus created
clusterrole.rbac.authorization.k8s.io/prometheus created
clusterrolebinding.rbac.authorization.k8s.io/prometheus created
service/prometheus created
deployment.apps/prometheus created
monitoringdashboard.monitoring.kiali.io/envoy created
monitoringdashboard.monitoring.kiali.io/go created
monitoringdashboard.monitoring.kiali.io/kiali created
monitoringdashboard.monitoring.kiali.io/micrometer-1.0.6-jvm-pool created
monitoringdashboard.monitoring.kiali.io/micrometer-1.0.6-jvm created
monitoringdashboard.monitoring.kiali.io/micrometer-1.1-jvm created
monitoringdashboard.monitoring.kiali.io/microprofile-1.1 created
monitoringdashboard.monitoring.kiali.io/microprofile-x.y created
monitoringdashboard.monitoring.kiali.io/nodejs created
monitoringdashboard.monitoring.kiali.io/quarkus created
monitoringdashboard.monitoring.kiali.io/springboot-jvm-pool created
monitoringdashboard.monitoring.kiali.io/springboot-jvm created
monitoringdashboard.monitoring.kiali.io/springboot-tomcat created
monitoringdashboard.monitoring.kiali.io/thorntail created
monitoringdashboard.monitoring.kiali.io/tomcat created
monitoringdashboard.monitoring.kiali.io/vertx-client created
monitoringdashboard.monitoring.kiali.io/vertx-eventbus created
monitoringdashboard.monitoring.kiali.io/vertx-jvm created
monitoringdashboard.monitoring.kiali.io/vertx-pool created
monitoringdashboard.monitoring.kiali.io/vertx-server created
</code></pre><p>2. &#xC0C8;&#xB85C;&#xC6B4; &#xD130;&#xBBF8;&#xB110; &#xCC3D;&#xC744; &#xC5F4;&#xC5B4; Kiali &#xB300;&#xC2DC;&#xBCF4;&#xB4DC; &#xC5F4;&#xAE30;</p><pre><code class="language-bash">$ istioctl dashboard kiali

&lt;http://localhost:20001/kiali&gt;
</code></pre><p>3. Graph &#xBA54;&#xB274;&#xC5D0;&#xC11C; &#xD655;&#xC778;</p><figure class="kg-card kg-image-card"><img src="https://hibuz.com/content/images/2021/05/image-11.png" class="kg-image" alt="Istio &#xC900;&#xBE44;&#xD558;&#xAE30;" loading="lazy" width="1379" height="836" srcset="https://hibuz.com/content/images/size/w600/2021/05/image-11.png 600w, https://hibuz.com/content/images/size/w1000/2021/05/image-11.png 1000w, https://hibuz.com/content/images/2021/05/image-11.png 1379w" sizes="(min-width: 720px) 720px"></figure><h1 id="%EC%82%AD%EC%A0%9C">&#xC0AD;&#xC81C;</h1><p>&#xC0AD;&#xC81C;&#xC804; &#xD130;&#xBBF8;&#xB110; &#xCC3D;&#xC758; minikube tunnel, Kiali &#xB300;&#xC2DC;&#xBCF4;&#xB4DC;&#xB97C; &#xC815;&#xC9C0;&#xD55C;&#xB2E4;.</p><ol><li>Bookinfo &#xC0AD;&#xC81C;</li></ol><pre><code class="language-bash">$ samples/bookinfo/platform/kube/cleanup.sh

namespace ? [default]
using NAMESPACE=default
virtualservice.networking.istio.io &quot;bookinfo&quot; deleted
gateway.networking.istio.io &quot;bookinfo-gateway&quot; deleted
Application cleanup may take up to one minute
service &quot;details&quot; deleted
serviceaccount &quot;bookinfo-details&quot; deleted
deployment.apps &quot;details-v1&quot; deleted
service &quot;ratings&quot; deleted
serviceaccount &quot;bookinfo-ratings&quot; deleted
deployment.apps &quot;ratings-v1&quot; deleted
service &quot;reviews&quot; deleted
serviceaccount &quot;bookinfo-reviews&quot; deleted
deployment.apps &quot;reviews-v1&quot; deleted
deployment.apps &quot;reviews-v2&quot; deleted
deployment.apps &quot;reviews-v3&quot; deleted
service &quot;productpage&quot; deleted
serviceaccount &quot;bookinfo-productpage&quot; deleted
deployment.apps &quot;productpage-v1&quot; deleted
Application cleanup successful
</code></pre><p>2. Istio &#xC0AD;&#xC81C;</p><pre><code class="language-bash"># addon &#xC0AD;&#xC81C;
$ kubectl delete -f samples/addons

# IstioOperator &#xC0AD;&#xC81C;
$ kubectl delete istiooperators.install.istio.io -n istio-system istio-controlplane-1-10-0
istiooperator.install.istio.io &quot;istio-controlplane-1-10-0&quot; deleted

# &#xC0AD;&#xC81C; &#xC804; &#xCCB4;&#xD06C;
$ istioctl x precheck
&#x2714; No issues found when checking the cluster. Istio is safe to install or upgrade!
  To get started, check out &lt;https://istio.io/latest/docs/setup/getting-started/&gt;

# Istio CR &#xC0AD;&#xC81C;
$ istioctl x uninstall --revision 1-10-0
There are still 2 proxies pointing to the control plane revision 1-10-0
...
Proceed? (y/N) y
  Removed HorizontalPodAutoscaler:istio-system:istio-egressgateway.
...
Removed MutatingWebhookConfiguration::istio-sidecar-injector-1-10-0.
&#x2714; Uninstall complete

# &#xB0A8;&#xC544;&#xC788;&#xB294; Istio CRDs &#xC0AD;&#xC81C;
$ istioctl manifest generate | kubectl delete -f -
customresourcedefinition.apiextensions.k8s.io &quot;authorizationpolicies.security.istio.io&quot; deleted
customresourcedefinition.apiextensions.k8s.io &quot;destinationrules.networking.istio.io&quot; deleted
...

# &#xC0AC;&#xC774;&#xB4DC;&#xCE74; &#xC778;&#xC81D;&#xC158;&#xC744; &#xC704;&#xD55C; &#xB808;&#xC774;&#xBE14; &#xC0AD;&#xC81C;
$ kubectl label ns default istio.io/rev-
namespace/default labeled
</code></pre><h3 id="%EC%B0%B8%EA%B3%A0">&#xCC38;&#xACE0;</h3><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://istio.io/latest/docs/setup/getting-started/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Getting Started</div><div class="kg-bookmark-description">Try Istio&#x2019;s features quickly and easily.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://istio.io/latest/favicons/android-192x192.png" alt="Istio &#xC900;&#xBE44;&#xD558;&#xAE30;"><span class="kg-bookmark-author">Istio</span><span class="kg-bookmark-publisher">8 minute read page test</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://raw.githubusercontent.com/istio/istio.io/master/static/img/istio-whitelogo-bluebackground-framed.svg" alt="Istio &#xC900;&#xBE44;&#xD558;&#xAE30;"></div></a></figure>]]></content:encoded></item><item><title><![CDATA[Minikube 클러스터와 도구준비]]></title><description><![CDATA[Minikube를 사용해서 쿠버네티스 클러스터를 로컬에서 간단히 설치하고 필요한 도구들을 설치해서 활용할 수 있도록 준비합니다.]]></description><link>https://hibuz.com/minikube-install/</link><guid isPermaLink="false">60a188652d69060001220ff3</guid><category><![CDATA[k8s]]></category><category><![CDATA[minikube]]></category><category><![CDATA[tool]]></category><dc:creator><![CDATA[Hibuz]]></dc:creator><pubDate>Sun, 16 May 2021 21:55:32 GMT</pubDate><media:content url="https://hibuz.com/content/images/2021/05/image-5.png" medium="image"/><content:encoded><![CDATA[<img src="https://hibuz.com/content/images/2021/05/image-5.png" alt="Minikube &#xD074;&#xB7EC;&#xC2A4;&#xD130;&#xC640; &#xB3C4;&#xAD6C;&#xC900;&#xBE44;"><p>OS&#xBCC4; &#xC124;&#xCE58;&#xBC29;&#xBC95;&#xC740; &#xC544;&#xB798; &#xBB38;&#xC11C;&#xB97C; &#xCC38;&#xACE0;&#xD558;&#xACE0; MacOS &#xAE30;&#xC900;&#xC73C;&#xB85C; &#xC124;&#xBA85;&#xD569;&#xB2C8;&#xB2E4;.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://minikube.sigs.k8s.io/docs/start/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">minikube start</div><div class="kg-bookmark-description">minikube is local Kubernetes</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://minikube.sigs.k8s.io/favicons/android-192x192.png" alt="Minikube &#xD074;&#xB7EC;&#xC2A4;&#xD130;&#xC640; &#xB3C4;&#xAD6C;&#xC900;&#xBE44;"><span class="kg-bookmark-author">minikube</span></div></div></a></figure><h1 id="%EC%84%A4%EC%B9%98">&#xC124;&#xCE58;</h1><pre><code class="language-bash">$ brew install minikube</code></pre><h1 id="%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0-%EC%8B%9C%EC%9E%91">&#xD074;&#xB7EC;&#xC2A4;&#xD130; &#xC2DC;&#xC791;</h1><p>&#xCD5C;&#xC2E0; &#xB9B4;&#xB9AC;&#xC988; &#xCC38;&#xACE0;</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://github.com/kubernetes/kubernetes/releases"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Releases &#xB7; kubernetes/kubernetes</div><div class="kg-bookmark-description">Production-Grade Container Scheduling and Management - kubernetes/kubernetes</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://github.githubassets.com/favicons/favicon.svg" alt="Minikube &#xD074;&#xB7EC;&#xC2A4;&#xD130;&#xC640; &#xB3C4;&#xAD6C;&#xC900;&#xBE44;"><span class="kg-bookmark-author">GitHub</span><span class="kg-bookmark-publisher">kubernetes</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://opengraph.githubassets.com/5d4cdd603de597f464ab4f422400c945db70c6c202fb72b95366776b7df47146/kubernetes/kubernetes" alt="Minikube &#xD074;&#xB7EC;&#xC2A4;&#xD130;&#xC640; &#xB3C4;&#xAD6C;&#xC900;&#xBE44;"></div></a></figure><pre><code># &#xCD5C;&#xC2E0; &#xBC84;&#xC804; &#xC124;&#xCE58;: --kubernetes-version=latest
$ minikube start --cpus 4 --memory 8192 --kubernetes-version=v1.21.1

&#x1F604;  minikube v1.20.0 on Darwin 11.3.1
&#x2757;  Kubernetes 1.21.1 has a known performance issue on cluster startup. It might take 2 to 3 minutes for a cluster to start.
&#x2757;  For more information, see: https://github.com/kubernetes/kubeadm/issues/2395
&#x2728;  Automatically selected the hyperkit driver
&#x1F4BE;  Downloading driver docker-machine-driver-hyperkit:
    &gt; docker-machine-driver-hyper...: 65 B / 65 B [----------] 100.00% ? p/s 0s
    &gt; docker-machine-driver-hyper...: 10.52 MiB / 10.52 MiB  100.00% 5.87 MiB p
&#x1F511;  The &apos;hyperkit&apos; driver requires elevated permissions. The following commands will be executed:

    $ sudo chown root:wheel /Users/hibuz/.minikube/bin/docker-machine-driver-hyperkit
    $ sudo chmod u+s /Users/hibuz/.minikube/bin/docker-machine-driver-hyperkit


Password:
&#x1F4BF;  Downloading VM boot image ...
    &gt; minikube-v1.20.0.iso.sha256: 65 B / 65 B [-------------] 100.00% ? p/s 0s
    &gt; minikube-v1.20.0.iso: 245.40 MiB / 245.40 MiB  100.00% 49.56 MiB p/s 5.2s
&#x1F44D;  Starting control plane node minikube in cluster minikube
&#x1F4BE;  Downloading Kubernetes v1.21.1 preload ...
    &gt; preloaded-images-k8s-v10-v1...: 504.74 MiB / 504.74 MiB  100.00% 38.08 Mi
&#x1F525;  Creating hyperkit VM (CPUs=4, Memory=8192MB, Disk=20000MB) ...
&#x1F433;  Preparing Kubernetes v1.21.1 on Docker 20.10.6 ...
    &#x25AA; Generating certificates and keys ...
    &#x25AA; Booting up control plane ...
    &#x25AA; Configuring RBAC rules ...
&#x1F50E;  Verifying Kubernetes components...
    &#x25AA; Using image gcr.io/k8s-minikube/storage-provisioner:v5
&#x1F31F;  Enabled addons: storage-provisioner, default-storageclass

&#x2757;  /usr/local/bin/kubectl is version 1.19.7, which may have incompatibilites with Kubernetes 1.21.1.
    &#x25AA; Want kubectl v1.21.1? Try &apos;minikube kubectl -- get pods -A&apos;
&#x1F3C4;  Done! kubectl is now configured to use &quot;minikube&quot; cluster and &quot;default&quot; namespace by default
~ 1m 46s

$ minikube node list
minikube	192.168.66.5

$ minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

$ minikube ssh
                         _             _
            _         _ ( )           ( )
  ___ ___  (_)  ___  (_)| |/&apos;)  _   _ | |_      __
/&apos; _ ` _ `\| |/&apos; _ `\| || , &lt;  ( ) ( )| &apos;_`\  /&apos;__`\
| ( ) ( ) || || ( ) || || |\`\ | (_) || |_) )(  ___/
(_) (_) (_)(_)(_) (_)(_)(_) (_)`\___/&apos;(_,__/&apos;`\____)

$ uname -a
Linux minikube 4.19.182 #1 SMP Wed May 5 21:20:39 UTC 2021 x86_64 GNU/Linux
$ exit
logout</code></pre><h1 id="%EA%B4%80%EB%A6%AC%EB%8F%84%EA%B5%AC-%EC%84%A4%EC%B9%98">&#xAD00;&#xB9AC;&#xB3C4;&#xAD6C; &#xC124;&#xCE58;</h1><ol><li>Web Dashboard</li></ol><pre><code class="language-bash"># &#xCC38;&#xACE0;: https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/

# Install Kubernetes Dashboard
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.2.0/aio/deploy/recommended.yaml

namespace/kubernetes-dashboard created
serviceaccount/kubernetes-dashboard created
service/kubernetes-dashboard created
secret/kubernetes-dashboard-certs created
secret/kubernetes-dashboard-csrf created
secret/kubernetes-dashboard-key-holder created
configmap/kubernetes-dashboard-settings created
role.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created
service/dashboard-metrics-scraper created
deployment.apps/dashboard-metrics-scraper created

# Patch the dashboard to allow skipping login
$ kubectl patch deployment kubernetes-dashboard -n kubernetes-dashboard --type &apos;json&apos; -p &apos;[{&quot;op&quot;: &quot;add&quot;, &quot;path&quot;: &quot;/spec/template/spec/containers/0/args/-&quot;, &quot;value&quot;: &quot;--enable-skip-login&quot;}]&apos;

deployment.apps/kubernetes-dashboard patched

$ kubectl proxy

Starting to serve on 127.0.0.1:8001
</code></pre><p>&#xBE0C;&#xB77C;&#xC6B0;&#xC838;&#xC5D0;&#xC11C; &#xC811;&#xC18D; (&#xC0DD;&#xB7B5;&#xC73C;&#xB85C; &#xB85C;&#xADF8;&#xC778;)</p><p>http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/</p><figure class="kg-card kg-image-card"><img src="https://hibuz.com/content/images/2021/05/image.png" class="kg-image" alt="Minikube &#xD074;&#xB7EC;&#xC2A4;&#xD130;&#xC640; &#xB3C4;&#xAD6C;&#xC900;&#xBE44;" loading="lazy" width="1232" height="826" srcset="https://hibuz.com/content/images/size/w600/2021/05/image.png 600w, https://hibuz.com/content/images/size/w1000/2021/05/image.png 1000w, https://hibuz.com/content/images/2021/05/image.png 1232w" sizes="(min-width: 720px) 720px"></figure><p>2. Metrics server</p><pre><code class="language-bash">$ kubectl top node
error: Metrics API not available

# &#xCC38;&#xACE0;: https://github.com/kubernetes-sigs/metrics-server
# Install Metrics Server
$ kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

serviceaccount/metrics-server created
clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created
clusterrole.rbac.authorization.k8s.io/system:metrics-server created
rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader created
clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator created
clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created
service/metrics-server created
deployment.apps/metrics-server created
apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io created

# Patch the metrisc server to work with insecure TLS
$ kubectl patch deployment metrics-server -n kube-system --type &apos;json&apos; -p &apos;[{&quot;op&quot;: &quot;add&quot;, &quot;path&quot;: &quot;/spec/template/spec/containers/0/args/-&quot;, &quot;value&quot;: &quot;--kubelet-insecure-tls&quot;}]&apos;

deployment.apps/metrics-server patched

$ kubectl top node
NAME       CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
minikube   204m         5%     1463Mi          18%

</code></pre><p>3. K9s</p><pre><code class="language-bash"># &#xCC38;&#xACE0;: https://github.com/derailed/k9s
$ brew install k9s

$ k9s</code></pre><figure class="kg-card kg-image-card"><img src="https://hibuz.com/content/images/2021/05/image-1.png" class="kg-image" alt="Minikube &#xD074;&#xB7EC;&#xC2A4;&#xD130;&#xC640; &#xB3C4;&#xAD6C;&#xC900;&#xBE44;" loading="lazy" width="1373" height="657" srcset="https://hibuz.com/content/images/size/w600/2021/05/image-1.png 600w, https://hibuz.com/content/images/size/w1000/2021/05/image-1.png 1000w, https://hibuz.com/content/images/2021/05/image-1.png 1373w" sizes="(min-width: 720px) 720px"></figure><p>4. Lens &#xC124;&#xCE58;</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://k8slens.dev/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Lens | The Kubernetes IDE</div><div class="kg-bookmark-description">Lens IDE for Kubernetes. The only system you&#x2019;ll ever need to take control of your Kubernetes clusters. It&#x2019;s open source and free. Download it today!</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://k8slens.dev/images/favicon/apple-touch-icon.png?v=693PWAx2zB" alt="Minikube &#xD074;&#xB7EC;&#xC2A4;&#xD130;&#xC640; &#xB3C4;&#xAD6C;&#xC900;&#xBE44;"><span class="kg-bookmark-author">LENS // THE KUBERNETES IDE</span><span class="kg-bookmark-publisher">Mirantis, Inc.</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://k8slens.dev/images/lens-og.png" alt="Minikube &#xD074;&#xB7EC;&#xC2A4;&#xD130;&#xC640; &#xB3C4;&#xAD6C;&#xC900;&#xBE44;"></div></a></figure><figure class="kg-card kg-image-card"><img src="https://hibuz.com/content/images/2021/05/image-4.png" class="kg-image" alt="Minikube &#xD074;&#xB7EC;&#xC2A4;&#xD130;&#xC640; &#xB3C4;&#xAD6C;&#xC900;&#xBE44;" loading="lazy" width="1552" height="1012" srcset="https://hibuz.com/content/images/size/w600/2021/05/image-4.png 600w, https://hibuz.com/content/images/size/w1000/2021/05/image-4.png 1000w, https://hibuz.com/content/images/2021/05/image-4.png 1552w" sizes="(min-width: 720px) 720px"></figure><h1 id="%EC%82%AD%EC%A0%9C"> &#xC0AD;&#xC81C;</h1><pre><code class="language-bash">$ minikube delete --all

&#x1F525;  Deleting &quot;minikube&quot; in hyperkit ...
&#x1F480;  Removed all traces of the &quot;minikube&quot; cluster.
&#x1F525;  Successfully deleted all profiles</code></pre>]]></content:encoded></item><item><title><![CDATA[10초만에 마인크래프트 서버 만들기]]></title><description><![CDATA[카카오 보이스톡으로 음성 채팅하며 원격으로 친구들과 마인크래프트 즐기는 모습]]></description><link>https://hibuz.com/minecraft_bedrock_docker_server/</link><guid isPermaLink="false">5ffa33fb1fb88d0001dba66e</guid><category><![CDATA[docker]]></category><category><![CDATA[minecraft]]></category><category><![CDATA[bedrock]]></category><dc:creator><![CDATA[Hibuz]]></dc:creator><pubDate>Sun, 10 Jan 2021 03:36:36 GMT</pubDate><media:content url="https://hibuz.com/content/images/2021/09/image--1--2.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://hibuz.com/content/images/2021/09/image--1--2.jpg" alt="10&#xCD08;&#xB9CC;&#xC5D0; &#xB9C8;&#xC778;&#xD06C;&#xB798;&#xD504;&#xD2B8; &#xC11C;&#xBC84; &#xB9CC;&#xB4E4;&#xAE30;"><p>&#xB2E8;, <a href="https://www.docker.com/products/docker-desktop">&#xB3C4;&#xCEE4;&#xAC00; &#xC774;&#xBBF8; &#xC124;&#xCE58;</a>&#xB418;&#xC5B4; &#xC788;&#xACE0; &#xC6D0;&#xACA9;&#xC73C;&#xB85C; &#xC9C0;&#xC778;&#xB07C;&#xB9AC; &#xC990;&#xAE30;&#xAE30; &#xC704;&#xD574;&#xC11C; &#xD074;&#xB77C;&#xC6B0;&#xB4DC;&#xB294; &#xBC29;&#xD654;&#xBCBD; &#xC124;&#xC815; &#xB610;&#xB294; &#xACF5;&#xC720;&#xAE30;&#xC5D0;&#xC11C; &#xD3EC;&#xD2B8; &#xD3EC;&#xC6CC;&#xB529; &#xC124;&#xC815;&#xC774; &#xCD94;&#xAC00;&#xB85C; &#xD544;&#xC694;&#xD569;&#xB2C8;&#xB2E4;.</p><h2 id="-">&#xAC1C;&#xC694;</h2><p>&#xCF54;&#xB85C;&#xB098;&#xB85C; &#xC678;&#xCD9C;&#xC774; &#xC27D;&#xC9C0; &#xC54A;&#xC740; &#xC0C1;&#xD669;&#xC5D0;&#xC11C; &#xC544;&#xC774;&#xB4E4;&#xC740; &#xC9D1;&#xC5D0;&#xC11C; &#xD0C1;&#xC8FC;&#xCABC;&#xAF2C; &#xB9C8;&#xC778;&#xD06C;&#xB798;&#xD504;&#xD2B8; &#xC720;&#xD29C;&#xBE0C;&#xB97C; &#xC990;&#xACA8; &#xBCF4;&#xACE0; &#xC788;&#xB294; &#xC911;&#xC774;&#xC5C8;&#xB2E4;. &#xB3D9;&#xB124; &#xCE5C;&#xAD6C;&#xB85C; &#xBD80;&#xD130; &#xC544;&#xC774;&#xB4E4;&#xC774; &#xAC01;&#xC790; &#xC9D1;&#xC5D0;&#xC11C; &#xC6D0;&#xACA9;&#xC73C;&#xB85C; &#xD568;&#xAED8; &#xAC8C;&#xC784;&#xD560; &#xC218; &#xC788;&#xB294; &#xC11C;&#xBC84; &#xD558;&#xB098; &#xB9CC;&#xB4E4;&#xC5B4; &#xBCF4;&#xB77C;&#xB294; &#xB9D0;&#xC5D0; &#xC120;&#xB73B; &#xAD6C;&#xCD95;&#xC744; &#xC2DC;&#xC791;&#xD569;&#xB2C8;&#xB2E4;. &#xACB0;&#xB860;&#xC740; &#xC81C;&#xBAA9;&#xCC98;&#xB7FC; 10&#xCD08; &#xB9CC;&#xC5D0; &#xB9CC;&#xB4E4; &#xC218; &#xC788;&#xC5C8;&#xC9C0;&#xB9CC; &#xC815;&#xBCF4;&#xB97C; &#xCC3E;&#xACE0; &#xACF5;&#xC720;&#xD558;&#xAE30; &#xAE4C;&#xC9C0;&#xB294; &#xD558;&#xB8E8;&#xC815;&#xB3C4; &#xB9CE;&#xC740; &#xC2DC;&#xD589;&#xCC29;&#xC624;&#xB97C; &#xAC70;&#xCCE4;&#xB2E4;. &#xACB0;&#xAD6D; &#xC544;&#xC774;&#xB4E4;&#xC774; &#xC544;&#xBE60;&#xAC00; &#xB9CC;&#xB4E4;&#xC5B4;&#xC900; &#xC11C;&#xBC84;&#xC5D0; &#xC811;&#xC18D;&#xD574;&#xC11C; &#xCE5C;&#xAD6C;&#xB4E4;&#xACFC; &#xC2E0;&#xB098;&#xAC8C; &#xAC8C;&#xC784;&#xC744; &#xD558;&#xBA74;&#xC11C; <code>&#xC544;&#xBE60; &#xCD5C;&#xACE0;!</code> &#xB77C;&#xB294; &#xB294; &#xB9D0;&#xC744; &#xB4E3;&#xACE0; &#xBFCC;&#xB4EF;&#xD568;&#xACFC; &#xD558;&#xB8E8;&#xC758; &#xB178;&#xB825;&#xC774; &#xC544;&#xAE5D;&#xC9C0; &#xC54A;&#xC558;&#xB2E4;. &#xC800;&#xC640; &#xAC19;&#xC774; &#xD544;&#xC694;&#xD55C; &#xBD84;&#xB4E4;&#xC5D0;&#xAC8C; &#xB3C4;&#xC6C0;&#xC774; &#xB418;&#xBA74; &#xC88B;&#xACA0;&#xC2B5;&#xB2C8;&#xB2E4; :)</p><h2 id="--1">&#xACB0;&#xB860;</h2><p>&#xCD5C;&#xC885;&#xC73C;&#xB85C; &#xC120;&#xD0DD;&#xD574;&#xC11C; &#xC990;&#xAE30;&#xACE0; &#xC788;&#xB294; &#xB3C4;&#xCEE4; &#xC635;&#xC158;&#xC740; &#xB2E4;&#xC74C;&#xACFC; &#xAC19;&#xB2E4;. &#xC2E4;&#xD589;&#xD558;&#xBA74; &#xB85C;&#xCEEC;&#xC5D0;&#xC11C;&#xB294; &#xBC14;&#xB85C; &#xCE5C;&#xAD6C; &#xBAA9;&#xB85D;&#xC5D0; &#xC11C;&#xBC84;&#xAC00; &#xBCF4;&#xC5EC;&#xC9C0;&#xACE0; &#xD074;&#xB77C;&#xC6B0;&#xB4DC;&#xC5D0;&#xC11C; &#xC2E4;&#xD589;&#xD558;&#xAC70;&#xB098; &#xD3EC;&#xD2B8; &#xD3EC;&#xC6CC;&#xB529;&#xAE4C;&#xC9C0; &#xD574;&#xC8FC;&#xBA74; &#xC11C;&#xBC84; &#xCD94;&#xAC00;&#xB97C; &#xD1B5;&#xD574; &#xC804;&#xC138;&#xACC4; &#xC5B4;&#xB514;&#xC11C;&#xB4E0; &#xC811;&#xC18D;&#xD574;&#xC11C; &#xAC8C;&#xC784;&#xC744; &#xC990;&#xAE38; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</p><pre><code class="language-zsh">$ docker run -d \
 --name mc \
 -p 19132:19132/udp \
 -v $HOME/bedrock_data:/data \
 -e EULA=TRUE \
 -e ALLOW_CHEATS=true \
 -e SERVER_NAME=&quot;&#xB9C8;&#xD06C;&#xC11C;&#xBC84;&quot; \
 -e GAMEMODE=creative \
 -e DIFFICULTY=easy \
 -e DEFAULT_PLAYER_PERMISSION_LEVEL=operator \
 itzg/minecraft-bedrock-server</code></pre><ul><li>--name mc : &#xC2E4;&#xD589;&#xD560; &#xB3C4;&#xCEE4; &#xCEE8;&#xD14C;&#xC774;&#xB108;&#xBA85;&#xC744; &#xC2EC;&#xD50C;&#xD558;&#xAC8C; <code>mc</code> &#xB85C; &#xD574;&#xC11C; &#xD3B8;&#xB9AC;&#xD558;&#xAC8C; &#xCEE8;&#xD14C;&#xC774;&#xB108; &#xC11C;&#xBC84;&#xB97C; &#xAD00;&#xB9AC;&#xD558;&#xAE30; &#xC704;&#xD568;</li><li>-p 19132:19132/udp : &#xCEE8;&#xD14C;&#xC774;&#xB108;(&#xC11C;&#xBC84;)&#xC640; Host PC(&#xB85C;&#xCEEC; &#xBA38;&#xC2E0;) &#xAC04;&#xC758; &#xD3EC;&#xD2B8; &#xD3EC;&#xC6CC;&#xB529; &#xC124;&#xC815;&#xD558;&#xACE0; &#xCC38;&#xACE0;&#xB85C; &#xB9C8;&#xD06C;&#xC11C;&#xBC84;&#xB294; <code>19132 udp</code> &#xD3EC;&#xD2B8;&#xB97C; &#xC0AC;&#xC6A9;&#xD569;&#xB2C8;&#xB2E4;. (&#xACF5;&#xC720;&#xAE30;&#xB098; &#xBC29;&#xD654;&#xBCBD; &#xC124;&#xC815;&#xC2DC; &#xCC38;&#xACE0;)</li><li>-v $HOME/bedrock_data:/data : &#xB3C4;&#xCEE4; &#xCEE8;&#xD14C;&#xC774;&#xB108;&#xB294; &#xD558;&#xB098;&#xC758; &#xC644;&#xC804;&#xD55C; &#xC11C;&#xBC84;&#xCC98;&#xB7FC; &#xB3D9;&#xC791;&#xD558;&#xBBC0;&#xB85C; &#xCEE8;&#xD14C;&#xC774;&#xB108; &#xC11C;&#xBC84; &#xC548;&#xCABD;&#xC5D0; &#xB9C8;&#xD06C; &#xB370;&#xC774;&#xD130;&#xAC00; &#xC313;&#xC774;&#xAC8C; &#xB418;&#xBA74; &#xCEE8;&#xD14C;&#xC774;&#xB108;&#xB97C; &#xC0AD;&#xC81C;&#xD560; &#xACBD;&#xC6B0; &#xAC8C;&#xC784; &#xB370;&#xC774;&#xD130;&#xAE4C;&#xC9C0; &#xC783;&#xC5B4;&#xBC84;&#xB9AC;&#xAC8C; &#xB429;&#xB2C8;&#xB2E4;. &#xB530;&#xB77C;&#xC11C; &#xC548;&#xC804;&#xD558;&#xAC8C; &#xB85C;&#xCEEC; &#xBA38;&#xC2E0;&#xC758; &#xB514;&#xB809;&#xD1A0;&#xB9AC;&#xB97C; &#xB9C8;&#xC6B4;&#xD2B8; &#xD574;&#xC11C; &#xB85C;&#xCEEC; &#xBA38;&#xC2E0;&#xC5D0; &#xB370;&#xC774;&#xD130;&#xAC00; &#xC0DD;&#xC131;&#xB418;&#xAC8C; &#xD558;&#xACE0; &#xD544;&#xC694;&#xC2DC; &#xB2E4;&#xB978; &#xCEF4;&#xD4E8;&#xD130;&#xB85C; &#xB370;&#xC774;&#xD130;&#xB97C; &#xBC31;&#xC5C5;&#xD558;&#xAC70;&#xB098; &#xC774;&#xC804;&#xD560; &#xC218; &#xC788;&#xB3C4;&#xB85D; &#xD569;&#xB2C8;&#xB2E4;. &#xB85C;&#xCEEC; &#xBA38;&#xC2E0;&#xC774; Ubuntu&#xB77C;&#xACE0; &#xAC00;&#xC815;&#xD558;&#xBA74; $HOME/bedrock_data &#xC124;&#xC815;&#xC740; /home/ubuntu/bedrock_data &#xC5D0; &#xB370;&#xC774;&#xD130;&#xB97C; &#xC800;&#xC7A5;&#xD558;&#xAC8C;&#xB418;&#xACE0; &#xB3C4;&#xCEE4; &#xCEE8;&#xD14C;&#xC774;&#xB108; &#xC548;&#xCABD;&#xC5D0;&#xC11C;&#xB294; /data &#xB514;&#xB809;&#xD1A0;&#xB9AC;&#xC5D0; &#xD574;&#xB2F9; &#xD3F4;&#xB354;&#xAC00; &#xB9C8;&#xC6B4;&#xD2B8; &#xB418;&#xC5B4; &#xBCF4;&#xC5EC;&#xC9C0;&#xAC8C; &#xB429;&#xB2C8;&#xB2E4;. &#xC708;&#xB3C4;&#xC6B0; &#xAE30;&#xC900;&#xC73C;&#xB85C;&#xB294; (C:\Users\&#xC0AC;&#xC6A9;&#xC790;&#xBA85;\bedrock_data)</li><li>-e EULA=TRUE : &#xB9C8;&#xD06C; &#xC11C;&#xBC84; &#xC0AC;&#xC6A9;&#xC5D0; &#xB300;&#xD55C; End User License Agreement &#xC5D0; &#xB3D9;&#xC758;&#xD55C;&#xB2E4;&#xB294; &#xB73B; (&#xC774;&#xD6C4; -e &#xC635;&#xC158;&#xC740; &#xCEE8;&#xD14C;&#xC774;&#xB108;&#xC5D0; &#xC804;&#xB2EC;&#xD560; &#xD658;&#xACBD;&#xBCC0;&#xC218; - &#xB9C8;&#xD06C; &#xC11C;&#xBC84;&#xAC00; &#xC774; &#xC815;&#xBCF4;&#xB97C; &#xC0AC;&#xC6A9;&#xD574; &#xAC8C;&#xC784; &#xC635;&#xC158;&#xC744; &#xC815;&#xD568;)</li><li>-e ALLOW_CHEATS=true : &#xAC8C;&#xC784;&#xC2DC; &#xCC44;&#xD305;&#xC744; &#xD1B5;&#xD574; &#xCE58;&#xD2B8;&#xD0A4; &#xC0AC;&#xC6A9; &#xD5C8;&#xC6A9;(&#xC608;: &#xC88C;&#xD45C;&#xBCF4;&#xAE30;, &#xC21C;&#xAC04;&#xC774;&#xB3D9;&#xB4F1;&#xB4F1;.. <a href="https://doqin.tistory.com/64">&#xCC38;&#xACE0;&#xC0AC;&#xC774;&#xD2B8;</a>)</li><li>-e SERVER_NAME= &#xC11C;&#xBC84; &#xBAA9;&#xB85D;&#xC5D0; &#xBCF4;&#xC5EC;&#xC9C8; &#xC774;&#xB984; - &#xC790;&#xC2E0;&#xB9CC;&#xC758; &#xC11C;&#xBC84;&#xBA85;&#xC744; &#xC815;&#xD574;&#xBCF4;&#xC138;&#xC694;</li><li>-e GAMEMODE= <code>survival</code>, <code>creative</code>, or <code>adventure</code> &#xC911;&#xC5D0; &#xC120;&#xD0DD;</li><li>-e DIFFICULTY= <code>peaceful</code>, <code>easy</code>, <code>normal</code>, or <code>hard</code> &#xA0;&#xC911; &#xB09C;&#xC774;&#xB3C4; &#xC120;&#xD0DD;</li><li>-e DEFAULT_PLAYER_PERMISSION_LEVEL= <code>visitor</code>, <code>member</code>, or <code>operator</code> &#xC911;&#xC5D0; &#xC120;&#xD0DD; operator &#xB85C; &#xD558;&#xBA74; &#xAC8C;&#xC784; &#xC635;&#xC158;, &#xB09C;&#xC774;&#xB3C4; &#xB4F1;&#xC744; &#xAC8C;&#xC784;&#xC124;&#xC815;&#xC5D0;&#xC11C; &#xBCC0;&#xACBD; &#xAC00;&#xB2A5;</li><li>itzg/minecraft-bedrock-server : &#xB0B4;&#xB824;&#xBC1B;&#xC544;&#xC11C; &#xC2E4;&#xD589;&#xD560; &#xB3C4;&#xCEE4; &#xC774;&#xBBF8;&#xC9C0; (&#xB9CC;&#xB4E4;&#xC5B4; &#xC8FC;&#xC2E0;&#xBD84; &#xAC10;&#xC0AC;&#xD569;&#xB2C8;&#xB2E4;!! &#xC804;&#xCCB4; &#xC635;&#xC158;&#xB4E4;&#xB3C4; &#xCC38;&#xACE0;: <a href="https://github.com/itzg/docker-minecraft-bedrock-server">Github Minecraft Bedrock Dedicated Server</a>)</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://hibuz.com/content/images/2021/01/image.png" class="kg-image" alt="10&#xCD08;&#xB9CC;&#xC5D0; &#xB9C8;&#xC778;&#xD06C;&#xB798;&#xD504;&#xD2B8; &#xC11C;&#xBC84; &#xB9CC;&#xB4E4;&#xAE30;" loading="lazy" width="1885" height="1048" srcset="https://hibuz.com/content/images/size/w600/2021/01/image.png 600w, https://hibuz.com/content/images/size/w1000/2021/01/image.png 1000w, https://hibuz.com/content/images/size/w1600/2021/01/image.png 1600w, https://hibuz.com/content/images/2021/01/image.png 1885w" sizes="(min-width: 720px) 720px"><figcaption>&#xB85C;&#xCEEC;&#xC5D0;&#xC11C; &#xC2E4;&#xD589;&#xC911;&#xC774; &#xB9C8;&#xD06C; &#xC11C;&#xBC84; &#xBAA9;&#xB85D;</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://hibuz.com/content/images/2021/01/image-2.png" class="kg-image" alt="10&#xCD08;&#xB9CC;&#xC5D0; &#xB9C8;&#xC778;&#xD06C;&#xB798;&#xD504;&#xD2B8; &#xC11C;&#xBC84; &#xB9CC;&#xB4E4;&#xAE30;" loading="lazy" width="1587" height="899" srcset="https://hibuz.com/content/images/size/w600/2021/01/image-2.png 600w, https://hibuz.com/content/images/size/w1000/2021/01/image-2.png 1000w, https://hibuz.com/content/images/2021/01/image-2.png 1587w" sizes="(min-width: 720px) 720px"><figcaption>&#xC11C;&#xBC84; &#xD0ED;&#xC5D0;&#xC11C; &#xCD94;&#xAC00; &#xC11C;&#xBC84; &#xB4F1;&#xB85D;&#xD558;&#xB294; &#xD654;&#xBA74;</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://hibuz.com/content/images/2021/01/image-1.png" class="kg-image" alt="10&#xCD08;&#xB9CC;&#xC5D0; &#xB9C8;&#xC778;&#xD06C;&#xB798;&#xD504;&#xD2B8; &#xC11C;&#xBC84; &#xB9CC;&#xB4E4;&#xAE30;" loading="lazy" width="1882" height="1050" srcset="https://hibuz.com/content/images/size/w600/2021/01/image-1.png 600w, https://hibuz.com/content/images/size/w1000/2021/01/image-1.png 1000w, https://hibuz.com/content/images/size/w1600/2021/01/image-1.png 1600w, https://hibuz.com/content/images/2021/01/image-1.png 1882w" sizes="(min-width: 720px) 720px"><figcaption>&#xCD94;&#xAC00; &#xC11C;&#xBC84;&#xC5D0; &#xB4F1;&#xB85D; &#xD6C4; &#xC11C;&#xBC84; &#xC811;&#xC18D;&#xC790;&#xC640; &#xC0C1;&#xD0DC; &#xD655;&#xC778;</figcaption></figure><h4 id="--2">&#xC11C;&#xBC84; &#xC2E4;&#xD589; &#xC870;&#xD68C;</h4><pre><code class="language-zsh">$ docker ps
CONTAINER ID IMAGE                           COMMAND                  CREATED             STATUS                  PORTS                      NAMES
ce86eb11a4a2 itzg/minecraft-bedrock-server   &quot;/usr/local/bin/entr&#x2026;&quot;   10 hours ago        Up 10 hours (healthy)   0.0.0.0:19132-&gt;19132/udp   mc</code></pre><h2 id="--3">&#xCD94;&#xAC00; &#xC815;&#xBCF4;</h2><ul><li>&#xC11C;&#xBC84; &#xC5C5;&#xB370;&#xC774;&#xD2B8;: &#xC571;&#xC774; &#xCD5C;&#xC2E0;&#xC73C;&#xB85C; &#xC5C5;&#xB370;&#xC774;&#xD2B8; &#xB418;&#xBA74; &#xC11C;&#xBC84;&#xB3C4; &#xC5C5;&#xB370;&#xC774;&#xD2B8;&#xAC00; &#xD544;&#xC694;&#xD569;&#xB2C8;&#xB2E4;. &#xD604;&#xC7AC;(2021-01-10) &#xAE30;&#xC900; &#xC11C;&#xBC84;&#xBC84;&#xC804;: 1.16.201.02 &#xC774;&#xACE0; &#xB3C4;&#xCEE4; &#xC7AC; &#xC2DC;&#xC791;&#xC2DC; &#xC790;&#xB3D9; &#xC5C5;&#xB370;&#xC774;&#xD2B8;</li></ul><pre><code class="language-zsh"># &#xC11C;&#xBC84; &#xC7AC; &#xC2DC;&#xC791;
$ docker restart mc

# &#xC2E4;&#xD589;&#xC911;&#xC778; &#xC11C;&#xBC84; &#xAC15;&#xC81C; &#xC0AD;&#xC81C;
$ docker rm -f mc</code></pre><pre><code class="language-zsh"># &#xC11C;&#xBC84; &#xC2E4;&#xD589; &#xBC0F; &#xC811;&#xC18D; &#xB85C;&#xADF8;&#xBCF4;&#xAE30;(&#xCDE8;&#xC18C;&#xB294; Ctrl + C)
$ docker logs -f mc

2021/01/09 23:56:08 Setting server-name to &#xB9C8;&#xD06C;&#xC11C;&#xBC84;-test in server.properties
Starting Bedrock server...
NO LOG FILE! - setting up server logging...
[2021-01-09 23:56:11 INFO] Starting Server
[2021-01-09 23:56:11 INFO] Version 1.16.201.2
[2021-01-09 23:56:11 INFO] Session ID 86a76a38-b7a5-49be-8090-ebd14ff1a72c
[2021-01-09 23:56:11 INFO] Level Name: Bedrock level
[2021-01-09 23:56:11 INFO] Game mode: 1 Creative
[2021-01-09 23:56:11 INFO] Difficulty: 1 EASY
[INFO] opening worlds/Bedrock level/db
[INFO] IPv4 supported, port: 19132
[INFO] IPv6 not supported
[INFO] IPv4 supported, port: 33766
[INFO] IPv6 not supported
[INFO] Server started.
[INFO] Player connected: hibuz, xuid: 2532272938126403
[INFO] Player disconnected: hibuz, xuid: 2532272938126403</code></pre><ul><li>iOS&#xC758; &#xACBD;&#xC6B0; &#xC11C;&#xBC84; &#xC811;&#xC18D;&#xC774; &#xC798; &#xC548;&#xB418;&#xB294; &#xACBD;&#xC6B0; &#xAC8C;&#xC784;&#xC744; &#xC644;&#xC804;&#xD788; &#xC885;&#xB8CC;&#xD558;&#xACE0; &#xC7AC; &#xC2DC;&#xB3C4;</li><li>&#xC11C;&#xBC84; &#xCD94;&#xAC00;&#xC635;&#xC158; &#xBCC0;&#xACBD;: $HOME/bedrock_data/server.properties</li><li>&#xCC38;&#xACE0;: <a href="https://my.yirum.net/synology-nas-%EC%97%90%EC%84%9C-%EB%A7%88%EC%9D%B8%ED%81%AC%EB%9E%98%ED%94%84%ED%8A%B8-%EB%B2%A0%EB%93%9C%EB%9D%BD-%EC%84%9C%EB%B2%84-%EA%B5%AC%EC%B6%95/">https://my.yirum.net/synology-nas-&#xC5D0;&#xC11C;-&#xB9C8;&#xC778;&#xD06C;&#xB798;&#xD504;&#xD2B8;-&#xBCA0;&#xB4DC;&#xB77D;-&#xC11C;&#xBC84;-&#xAD6C;&#xCD95;</a></li><li><a href="https://hibuz.com/tag/oracle%20cloud">&#xC624;&#xB77C;&#xD074; &#xD3C9;&#xC0DD; &#xBB34;&#xB8CC; &#xD074;&#xB77C;&#xC6B0;&#xB4DC; &#xC11C;&#xBC84;&#xC5D0; &#xB3C4;&#xCEE4; &#xAD6C;&#xCD95;&#xD558;&#xAE30;</a></li></ul>]]></content:encoded></item><item><title><![CDATA[개발 북마크]]></title><description><![CDATA[<figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://www.grabbing.me/IT-A-to-Z-By-1e1fbc981b7c4c03ac44943085ac8304"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Notion &#x2013; The all-in-one workspace for your notes, tasks, wikis, and databases.</div><div class="kg-bookmark-description">A new tool that blends your everyday work apps into one. It&#x2019;s the all-in-one workspace for you and your team</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://www.grabbing.me/images/logo-ios.png"><span class="kg-bookmark-author">Notion</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://www.notion.so/images/meta/default.png"></div></a></figure>]]></description><link>https://hibuz.com/dev-bookmarks/</link><guid isPermaLink="false">5f38fedbf3f18f000191326d</guid><category><![CDATA[bookmark]]></category><category><![CDATA[dev]]></category><dc:creator><![CDATA[Hibuz]]></dc:creator><pubDate>Sun, 16 Aug 2020 09:48:22 GMT</pubDate><media:content url="https://hibuz.com/content/images/2021/09/photo-1497493292307-31c376b6e479.jpg" medium="image"/><content:encoded><![CDATA[<figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://www.grabbing.me/IT-A-to-Z-By-1e1fbc981b7c4c03ac44943085ac8304"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Notion &#x2013; The all-in-one workspace for your notes, tasks, wikis, and databases.</div><div class="kg-bookmark-description">A new tool that blends your everyday work apps into one. It&#x2019;s the all-in-one workspace for you and your team</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://www.grabbing.me/images/logo-ios.png" alt="&#xAC1C;&#xBC1C; &#xBD81;&#xB9C8;&#xD06C;"><span class="kg-bookmark-author">Notion</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://www.notion.so/images/meta/default.png" alt="&#xAC1C;&#xBC1C; &#xBD81;&#xB9C8;&#xD06C;"></div></a></figure>]]></content:encoded></item><item><title><![CDATA[빅데이터 북마크]]></title><description><![CDATA[<figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://github.com/Team-Neighborhood/I-want-to-study-Data-Science"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Team-Neighborhood/I-want-to-study-Data-Science</div><div class="kg-bookmark-description">&#xB370;&#xC774;&#xD130; &#xC0AC;&#xC774;&#xC5B8;&#xC2A4;&#xB97C; &#xACF5;&#xBD80;&#xD558;&#xACE0; &#xC2F6;&#xC740; &#xBD84;&#xB4E4;&#xC744; &#xC704;&#xD55C; &#xAE00; . Contribute to Team-Neighborhood/I-want-to-study-Data-Science development by creating an account on GitHub.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://github.githubassets.com/favicons/favicon.svg"><span class="kg-bookmark-author">GitHub</span><span class="kg-bookmark-publisher">Team-Neighborhood</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://avatars3.githubusercontent.com/u/38028694?s=400&amp;v=4"></div></a></figure>]]></description><link>https://hibuz.com/bigdata-bookmarks/</link><guid isPermaLink="false">5f38fcc9f3f18f0001913257</guid><category><![CDATA[bigdata]]></category><category><![CDATA[bookmark]]></category><category><![CDATA[dev]]></category><dc:creator><![CDATA[Hibuz]]></dc:creator><pubDate>Sun, 16 Aug 2020 09:36:31 GMT</pubDate><media:content url="https://hibuz.com/content/images/2021/09/photo-1527474305487-b87b222841cc.jpg" medium="image"/><content:encoded><![CDATA[<figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://github.com/Team-Neighborhood/I-want-to-study-Data-Science"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Team-Neighborhood/I-want-to-study-Data-Science</div><div class="kg-bookmark-description">&#xB370;&#xC774;&#xD130; &#xC0AC;&#xC774;&#xC5B8;&#xC2A4;&#xB97C; &#xACF5;&#xBD80;&#xD558;&#xACE0; &#xC2F6;&#xC740; &#xBD84;&#xB4E4;&#xC744; &#xC704;&#xD55C; &#xAE00; . Contribute to Team-Neighborhood/I-want-to-study-Data-Science development by creating an account on GitHub.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://github.githubassets.com/favicons/favicon.svg" alt="&#xBE45;&#xB370;&#xC774;&#xD130; &#xBD81;&#xB9C8;&#xD06C;"><span class="kg-bookmark-author">GitHub</span><span class="kg-bookmark-publisher">Team-Neighborhood</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://avatars3.githubusercontent.com/u/38028694?s=400&amp;v=4" alt="&#xBE45;&#xB370;&#xC774;&#xD130; &#xBD81;&#xB9C8;&#xD06C;"></div></a></figure>]]></content:encoded></item><item><title><![CDATA[웹개발 북마크]]></title><description><![CDATA[<figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://heropy.blog/2020/01/27/typescript/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">&#xD55C;&#xB208;&#xC5D0; &#xBCF4;&#xB294; &#xD0C0;&#xC785;&#xC2A4;&#xD06C;&#xB9BD;&#xD2B8;(updated)</div><div class="kg-bookmark-description">&#xD0C0;&#xC785;&#xC2A4;&#xD06C;&#xB9BD;&#xD2B8;&#xB294; Microsoft&#xC5D0;&#xC11C; &#xAC1C;&#xBC1C;&#xD558;&#xACE0; &#xC720;&#xC9C0;/&#xAD00;&#xB9AC;&#xD558;&#xB294; Apache &#xB77C;&#xC774;&#xC13C;&#xC2A4;&#xAC00; &#xBD80;&#xC5EC;&#xB41C; &#xC624;&#xD508; &#xC18C;&#xC2A4;&#xB85C;, &#xC790;&#xBC14;&#xC2A4;&#xD06C;</div></div></a></figure>]]></description><link>https://hibuz.com/webdev-bookmarks/</link><guid isPermaLink="false">5f138ac7f3f18f0001913243</guid><category><![CDATA[web]]></category><category><![CDATA[dev]]></category><category><![CDATA[bookmark]]></category><dc:creator><![CDATA[Hibuz]]></dc:creator><pubDate>Sat, 18 Jul 2020 23:51:54 GMT</pubDate><media:content url="https://hibuz.com/content/images/2021/09/photo-1499951360447-b19be8fe80f5.jpg" medium="image"/><content:encoded><![CDATA[<figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://heropy.blog/2020/01/27/typescript/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">&#xD55C;&#xB208;&#xC5D0; &#xBCF4;&#xB294; &#xD0C0;&#xC785;&#xC2A4;&#xD06C;&#xB9BD;&#xD2B8;(updated)</div><div class="kg-bookmark-description">&#xD0C0;&#xC785;&#xC2A4;&#xD06C;&#xB9BD;&#xD2B8;&#xB294; Microsoft&#xC5D0;&#xC11C; &#xAC1C;&#xBC1C;&#xD558;&#xACE0; &#xC720;&#xC9C0;/&#xAD00;&#xB9AC;&#xD558;&#xB294; Apache &#xB77C;&#xC774;&#xC13C;&#xC2A4;&#xAC00; &#xBD80;&#xC5EC;&#xB41C; &#xC624;&#xD508; &#xC18C;&#xC2A4;&#xB85C;, &#xC790;&#xBC14;&#xC2A4;&#xD06C;&#xB9BD;&#xD2B8;&#xC5D0; &#xAC15;&#xD55C; &#xD0C0;&#xC785; &#xC2DC;&#xC2A4;&#xD15C;&#xC744; &#xC801;&#xC6A9;&#xD574; &#xB300;&#xBD80;&#xBD84;&#xC758; &#xC5D0;&#xB7EC;&#xB97C; &#xCEF4;&#xD30C;&#xC77C; &#xD658;&#xACBD;&#xC5D0;&#xC11C; &#xCF54;&#xB4DC;&#xB97C; &#xC785;&#xB825;&#xD558;&#xB294; &#xB3D9;&#xC548; &#xCCB4;&#xD06C;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://heropy.blog/css/images/favicon.png" alt="&#xC6F9;&#xAC1C;&#xBC1C; &#xBD81;&#xB9C8;&#xD06C;"><span class="kg-bookmark-author">HEROPY</span><span class="kg-bookmark-publisher">HEROPY</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://heropy.blog/css/images/vendor_icons/typescript.png" alt="&#xC6F9;&#xAC1C;&#xBC1C; &#xBD81;&#xB9C8;&#xD06C;"></div></a></figure><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://h5bp.org/Front-end-Developer-Interview-Questions/translations/korean/#%EC%9D%BC%EB%B0%98%EC%A0%81%EC%9D%B8-%EC%A7%88%EB%AC%B8"><div class="kg-bookmark-content"><div class="kg-bookmark-title">&#xD504;&#xB860;&#xD2B8;&#xC5D4;&#xB4DC; &#xBA74;&#xC811; &#xBB38;&#xC81C; &#xC740;&#xD589; &#x2605; Front-end Job Interview Questions</div><div class="kg-bookmark-description">A list of helpful front-end related questions you can use to interview potential candidates, test yourself or completely ignore.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://h5bp.org/Front-end-Developer-Interview-Questions/assets/images/favicon-32x32.png" alt="&#xC6F9;&#xAC1C;&#xBC1C; &#xBD81;&#xB9C8;&#xD06C;"><span class="kg-bookmark-author">Front-end Job Interview Questions</span><span class="kg-bookmark-publisher">Front-end Job Interview Questions</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://h5bp.org/Front-end-Developer-Interview-Questions/assets/images/og-image.png" alt="&#xC6F9;&#xAC1C;&#xBC1C; &#xBD81;&#xB9C8;&#xD06C;"></div></a></figure>]]></content:encoded></item><item><title><![CDATA[인공지능 북마크]]></title><description><![CDATA[<figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://www.facebook.com/groups/TensorFlowKR/permalink/1249835358690853/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Hwalsuk Lee</div><div class="kg-bookmark-description">&#xC548;&#xB155;&#xD558;&#xC138;&#xC694;. Clova AI&#xC758; &#xC774;&#xD65C;&#xC11D;&#xC785;&#xB2C8;&#xB2E4;. &#xC791;&#xB144; &#xD55C;&#xAE00;&#xB0A0; &#xC190;&#xAE00;&#xC528; &#xACF5;&#xBAA8;&#xC804;&#xC744; &#xC704;&#xD574;&#xC11C; &#xC313;&#xC544;&#xB450;&#xC5C8;&#xB358; &#xD3F0;&#xD2B8; &#xC0DD;&#xC131; &#xAE30;&#xC220;&#xC774; CVPR 2020&#xC758; AI for Content Creation</div></div></a></figure>]]></description><link>https://hibuz.com/ai-bookmarks/</link><guid isPermaLink="false">5f1389b6f3f18f0001913232</guid><category><![CDATA[ai]]></category><category><![CDATA[bookmark]]></category><dc:creator><![CDATA[Hibuz]]></dc:creator><pubDate>Sat, 18 Jul 2020 23:48:12 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1535378620166-273708d44e4c?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=2000&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" medium="image"/><content:encoded><![CDATA[<figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://www.facebook.com/groups/TensorFlowKR/permalink/1249835358690853/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Hwalsuk Lee</div><div class="kg-bookmark-description">&#xC548;&#xB155;&#xD558;&#xC138;&#xC694;. Clova AI&#xC758; &#xC774;&#xD65C;&#xC11D;&#xC785;&#xB2C8;&#xB2E4;. &#xC791;&#xB144; &#xD55C;&#xAE00;&#xB0A0; &#xC190;&#xAE00;&#xC528; &#xACF5;&#xBAA8;&#xC804;&#xC744; &#xC704;&#xD574;&#xC11C; &#xC313;&#xC544;&#xB450;&#xC5C8;&#xB358; &#xD3F0;&#xD2B8; &#xC0DD;&#xC131; &#xAE30;&#xC220;&#xC774; CVPR 2020&#xC758; AI for Content Creation Workshop&#xC5D0;&#xC11C; &#x201C;BEST PAPER - RUNNER-UP AWARD&#x201D;&#xB97C; &#xC218;&#xC0C1;&#xD55C;&#xB370; &#xC774;&#xC5B4;, &#xD0DC;&#xAD6D;&#xC5B4;&#xAE4C;&#xC9C0; &#xC2E4;&#xD5D8;&#xC744; &#xD655;&#xC7A5;&#xD55C; &#xB17C;&#xBB38;&#xC774; &#xC774;&#xBC88; ECCV 2020&#xC5D0;&#xC11C;&#xB3C4; &#xC2B9;&#xC778;&#xC774; &#xB418;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;. &#xB610;&#xD55C;...</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://static.xx.fbcdn.net/rsrc.php/yz/r/KFyVIAWzntM.ico" alt="&#xC778;&#xACF5;&#xC9C0;&#xB2A5; &#xBD81;&#xB9C8;&#xD06C;"><span class="kg-bookmark-author">Facebook</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://external-gmp1-1.xx.fbcdn.net/safe_image.php?d=AQBLpaPA2Brnp4k0&amp;w=247&amp;h=247&amp;url=https%3A%2F%2Favatars0.githubusercontent.com%2Fu%2F48815312%3Fs%3D400%26v%3D4&amp;cfs=1&amp;_nc_hash=AQCntL5HPhhSpl9D" alt="&#xC778;&#xACF5;&#xC9C0;&#xB2A5; &#xBD81;&#xB9C8;&#xD06C;"></div></a></figure>]]></content:encoded></item><item><title><![CDATA[Ghost 버전 업그레이드]]></title><description><![CDATA[docker compose 로 운영중인 ghost docker 이미지를 사용해 손쉽게 버전을 업그레이드 하는 방법을 소개합니다.]]></description><link>https://hibuz.com/ghost-version-upgrade/</link><guid isPermaLink="false">5eac97c5afbe630001a263c0</guid><category><![CDATA[blog]]></category><category><![CDATA[ghost]]></category><category><![CDATA[upgrade]]></category><dc:creator><![CDATA[Hibuz]]></dc:creator><pubDate>Mon, 11 May 2020 14:26:32 GMT</pubDate><media:content url="https://images.unsplash.com/reserve/LJIZlzHgQ7WPSh5KVTCB_Typewriter.jpg?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=2000&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" medium="image"/><content:encoded><![CDATA[<ol><li>&#xD604;&#xC7AC;&#xBC84;&#xC804; &#xD655;&#xC778;</li></ol><pre><code class="language-bash">$ docker ps
CONTAINER ID   IMAGE                   COMMAND                  CREATED          STATUS          PORTS                                      NAMES
f67902375e94   nginx:1.19.5-alpine     &quot;/docker-entrypoint.&#x2026;&quot;   5 weeks ago     Up 2 minutes        0.0.0.0:80-&gt;80/tcp, 0.0.0.0:443-&gt;443/tcp   nginx
b813b1c51e04   ghost:4.1.0             &quot;docker-entrypoint.s&#x2026;&quot;   5 weeks ago     Up 2 minutes        2368/tcp                                   ghost


$ docker images
REPOSITORY              TAG             IMAGE ID       CREATED         SIZE
ghost                   4.1.0           c03c7fc2964e   8 weeks ago     440MB
certbot/certbot         latest          8354cb53c8c0   5 months ago    96.5MB
ghost                   3.39.0          9ebb9391dc1b   5 months ago    443MB</code></pre><img src="https://images.unsplash.com/reserve/LJIZlzHgQ7WPSh5KVTCB_Typewriter.jpg?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=2000&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" alt="Ghost &#xBC84;&#xC804; &#xC5C5;&#xADF8;&#xB808;&#xC774;&#xB4DC;"><p>2. &#xC2E0;&#xADDC; &#xBC84;&#xC804; &#xD655;&#xC778;</p><pre><code class="language-bash">$ curl -s https://registry.hub.docker.com/v1/repositories/ghost/tags | sed &quot;s/,/\n/g&quot; | grep name | cut -d &apos;&quot;&apos; -f 4

...
4.4
4.4-alpine
4.4.0
4.4.0-alpine
4.5
4.5-alpine
4.5.0
4.5.0-alpine
alpine</code></pre><p>3. &#xC5C5;&#xADF8;&#xB808;&#xC774;&#xB4DC; 4.1.0 -&gt; 4.5.0 (<a href="https://hibuz.com/ghost-blog-backup/">&#xC124;&#xCE58;&#xC804; &#xB370;&#xC774;&#xD130; &#xBC31;&#xC5C5; &#xD544;&#xC218;</a>)</p><pre><code class="language-bash">ubuntu@hibuz:~/nginx-certbot$ vi docker-compose.yml
version: &apos;3&apos;

services:
  ghost:
    image: ghost:4.5.0


ubuntu@hibuz:~/nginx-certbot$ docker-compose up -d
Pulling ghost (ghost:4.5.0)...
4.5.0: Pulling from library/ghost
69692152171a: Pull complete
15c9a4a75a9a: Pull complete
c548bd93bc33: Pull complete
a2fde13f6b72: Pull complete
aef01cdc4384: Pull complete
e7b67caf303f: Pull complete
201051a0bf39: Pull complete
ca422add453c: Pull complete
a91772022367: Pull complete
Digest: sha256:248b792b71e4b1de84aa675aabeeefad4c91612c7203365659caa9ea9094c402
Status: Downloaded newer image for ghost:4.5.0
Recreating ghost ...
Recreating ghost ... done
nginx is up-to-date
</code></pre><p>4. &#xC5C5;&#xADF8;&#xB808;&#xC774;&#xB4DC; &#xD655;&#xC778;</p><pre><code class="language-bash">$ docker images
REPOSITORY              TAG             IMAGE ID       CREATED         SIZE
ghost                   4.5.0           c908524b5920   3 days ago      452MB
nginx                   1.20.0-alpine   3b715e351972   3 weeks ago     22.6MB
ghost                   4.1.0           c03c7fc2964e   8 weeks ago     440MB
certbot/certbot         latest          8354cb53c8c0   5 months ago    96.5MB

$ docker ps
CONTAINER ID   IMAGE                   COMMAND                  CREATED         STATUS          PORTS                                      NAMES
472e3746940a   nginx:1.20.0-alpine     &quot;/docker-entrypoint.&#x2026;&quot;   2 minutes ago   Up 2 minutes    0.0.0.0:80-&gt;80/tcp, 0.0.0.0:443-&gt;443/tcp   nginx
abbafe515aa0   ghost:4.5.0             &quot;docker-entrypoint.s&#x2026;&quot;   2 minutes ago   Up 2 minutes    2368/tcp                                   ghost
56fca6439c86   certbot/certbot         &quot;/bin/sh -c &apos;trap ex&#x2026;&quot;   8 weeks ago     Up 2 minutes    80/tcp, 443/tcp                            nginx-certbot_certbot_1</code></pre>]]></content:encoded></item><item><title><![CDATA[Ghost 블로그 데이터 자동백업]]></title><description><![CDATA[모든 서버는 언제든 날라갈 수 있다고(아무리 클라우드 서버일지라도...) 생각하고 2중 3중으로 데이터를 백업하는 것이 좋다. 이번에는 가장 쉬운 cron tab을 사용하여 데이터를 일백업 하는 방법을 사용했습니다.]]></description><link>https://hibuz.com/ghost-blog-backup/</link><guid isPermaLink="false">5eac8009afbe630001a262e2</guid><category><![CDATA[blog]]></category><category><![CDATA[backup]]></category><category><![CDATA[crontab]]></category><dc:creator><![CDATA[Hibuz]]></dc:creator><pubDate>Thu, 07 May 2020 14:54:47 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1573164713988-8665fc963095?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=2000&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1573164713988-8665fc963095?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=2000&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" alt="Ghost &#xBE14;&#xB85C;&#xADF8; &#xB370;&#xC774;&#xD130; &#xC790;&#xB3D9;&#xBC31;&#xC5C5;"><p>&#xB2E4;&#xC74C;&#xACFC; &#xAC19;&#xC740; &#xC808;&#xCC28;&#xB85C; &#xC124;&#xC815;</p><ol><li>&#xBE14;&#xB85C;&#xADF8; &#xC11C;&#xBC84; root &#xACC4;&#xC815;&#xACFC; &#xD0C0;&#xCF13; &#xBC31;&#xC5C5; &#xC11C;&#xBC84;&#xC5D0; &#xD328;&#xC2A4;&#xC6CC;&#xB4DC; &#xC5C6;&#xC774; &#xC811;&#xC18D; &#xAC00;&#xB2A5;&#xD558;&#xAC8C; &#xC124;&#xC815;</li><li>tar &#xC218;&#xB3D9; &#xBC31;&#xC5C5; &#xC2A4;&#xD06C;&#xB9BD;&#xD2B8; &#xC791;&#xC131;</li><li>root &#xC720;&#xC800;&#xC758; crontab&#xC5D0; bash &#xC2A4;&#xD06C;&#xB9BD;&#xD2B8; &#xC2E4;&#xD589; &#xC124;&#xC815;</li></ol><p>docker&#xB85C; &#xAD6C;&#xB3D9;&#xD558;&#xB294; ghost &#xB370;&#xC774;&#xD130;&#xB294; &#xB2E4;&#xC74C;&#xACFC; &#xAC19;&#xC774; root &#xAD8C;&#xD55C;&#xC73C;&#xB85C; &#xB370;&#xC774;&#xD130;&#xAC00; &#xC0DD;&#xC131;&#xB418;&#xC5B4; &#xC788;&#xC74C;&#xC744; &#xC54C;&#xC218; &#xC788;&#xB2E4;.</p><pre><code class="language-bash">ubuntu@hibuz:~/nginx-certbot/data$ ll
total 20
drwxrwxr-x 5 ubuntu ubuntu 4096 Feb 22 07:50 ./
drwxrwxr-x 4 ubuntu ubuntu 4096 Mar 29 07:32 ../
drwxrwxr-x 4 ubuntu ubuntu 4096 Feb 22 05:18 certbot/
drwxr-xr-x 3 root   root   4096 Feb 22 07:50 ghost/
drwxrwxr-x 2 ubuntu ubuntu 4096 Apr 18 06:20 nginx/</code></pre><p>root &#xB85C; &#xB85C;&#xADF8;&#xC778;&#xD6C4; ssh-key &#xC0DD;&#xC131;</p><pre><code class="language-bash">ubuntu@hibuz:~/nginx-certbot/data$ sudo -i

root@hibuz:~# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:vY1JA2P4nBsJw1m84DuOuqineNH+2eOR7e1pa1cZr8Y root@hibuz
The key&apos;s randomart image is:
+---[RSA 2048]----+
|       ..        |
|     ..+.        |
|     .*.+.       |
|      .*.*     . |
|   .   .S +     +|
|  . . o  * *   .o|
|   o o .+ = .. o |
|..o o .o.o .o.E  |
|*+oo .o.o..+=+   |
+----[SHA256]-----+

root@hibuz:~# cd .ssh/

root@hibuz:~/.ssh# ll
total 20
drwx------ 2 root root 4096 May  1 20:09 ./
drwx------ 4 root root 4096 Jan 17 02:55 ../
-rw------- 1 root root  558 Jan 17 02:55 authorized_keys
-rw------- 1 root root 1679 May  1 20:09 id_rsa
-rw-r--r-- 1 root root  392 May  1 20:09 id_rsa.pub</code></pre><p>id_rsa.pub &#xD30C;&#xC77C;&#xB0B4;&#xC6A9;&#xC744; &#xBCF5;&#xC0AC;&#xD6C4; &#xD0C0;&#xAC9F; &#xBC31;&#xC5C5; &#xC11C;&#xBC84;&#xC5D0; &#xC811;&#xC18D;&#xD558;&#xC5EC; authorized_keys&#xC5D0; &#xB4F1;&#xB85D;&#xD6C4; &#xC7AC; &#xC811;&#xC18D; &#xD558;&#xBA74; &#xD328;&#xC2A4;&#xC6CC;&#xB4DC; &#xC5C6;&#xC774; &#xC811;&#xC18D; &#xB418;&#xB294;&#xAC83;&#xC744; &#xD655;&#xC778;(&#xB9CC;&#xC57D; authorized_keys &#xAC00; &#xC5C6;&#xB2E4;&#xBA74; &#xC0DD;&#xC131;&#xD6C4; chmod 400 authorized_keys&#xB85C; &#xAD8C;&#xD55C;&#xC124;&#xC815;) &#xD558;&#xACE0; &#xBC31;&#xC5C5;&#xC744; &#xC704;&#xD55C; &#xD3F4;&#xB354;&#xB3C4; &#xC0DD;&#xC131;&#xD55C;&#xB2E4;.</p><pre><code class="language-bash"># root@hibuz:~# ssh ubuntu@nas.hibuz.com
ubuntu@nas-srv:~$ vi ~/.ssh/authorized_keys
ubuntu@nas-srv:~$ exit
logout
Connection to nas.hibuz.com closed.

# ssh ubuntu@nas.hibuz.com
Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.4.0-28-generic x86_64)

ubuntu@nas-srv:~$ mkdir hibuz.com.blog.backup</code></pre><p>&#xBC31;&#xC5C5; &#xC2A4;&#xD06C;&#xB9BD;&#xD2B8;&#xB97C; &#xC791;&#xC131;&#xD558;&#xACE0; &#xBA3C;&#xC800; root &#xAD8C;&#xD55C;&#xC73C;&#xB85C; &#xC218;&#xB3D9; &#xBC31;&#xC5C5; &#xC258;&#xC774; &#xC798; &#xB418;&#xB294;&#xC9C0; &#xD655;&#xC778;&#xD55C;&#xB2E4;.</p><pre><code class="language-bash">ubuntu@hibuz:~/nginx-certbot$ vi remote_backup.sh
#!/bin/bash
BACKUP_DATE=`date &quot;+%Y-%m-%d&quot;`
tar czf $BACKUP_DATE.tgz /home/ubuntu/nginx-certbot/data
scp $BACKUP_DATE.tgz ubuntu@nas.hibuz.com:~/hibuz.com.blog.backup/
rm -f $BACKUP_DATE.tgz

ubuntu@hibuz:~/nginx-certbot$ sudo bash ./remote_backup.sh
tar: Removing leading `/&apos; from member names
2020-05-01.tgz                                 100%   21MB   6.6MB/s   00:03

ubuntu@hibuz:~/nginx-certbot$ ssh ubuntu@nas.hibuz.com

ubuntu@nas-srv:~$ ll hibuz.com.blog.backup/
total 21968
drwxrwxr-x  2 ubuntu ubuntu     4096  5&#xC6D4;  2 05:55 ./
drwxr-xr-x 22 ubuntu ubuntu     4096  5&#xC6D4;  2 05:00 ../
-rw-r--r--  1 ubuntu ubuntu 22486652  5&#xC6D4;  2 05:55 2020-05-01.tgz
ubuntu@nas-srv:~$ exit</code></pre><p>&#xB9E4;&#xC77C; &#xC0C8;&#xBCBD; 5&#xC2DC;&#xC5D0; root &#xAD8C;&#xD55C;&#xC73C;&#xB85C; &#xC2A4;&#xD06C;&#xB9BD;&#xD2B8;&#xAC00; &#xC2E4;&#xD589;&#xB418;&#xB3C4;&#xB85D; crontab&#xC5D0; &#xB4F1;&#xB85D;</p><pre><code class="language-bash">$ sudo crontab -e
SHELL=/bin/bash
0 5 * * * /home/ubuntu/nginx-certbot/remote_backup.sh &gt; /dev/null 2&gt;&amp;1</code></pre>]]></content:encoded></item><item><title><![CDATA[Ubuntu 18.04 -> 20.04 버전 업그레이드]]></title><description><![CDATA[Ubuntu 20.04 LTS(안정버전)가 출시 되었습니다. 
커널 5.4와 다크 테마를 지원하고 apt를 대신할 새로운 패키지 설치용 snap 명령어도 지원됩니다.]]></description><link>https://hibuz.com/ubuntu-version-upgrade/</link><guid isPermaLink="false">5eac7c9bafbe630001a262c3</guid><category><![CDATA[upgrade]]></category><category><![CDATA[ubuntu]]></category><category><![CDATA[20.04]]></category><dc:creator><![CDATA[Hibuz]]></dc:creator><pubDate>Fri, 01 May 2020 21:40:39 GMT</pubDate><media:content url="https://hibuz.com/content/images/2020/05/ubuntu.png" medium="image"/><content:encoded><![CDATA[<ol><li>&#xC11C;&#xBC84;&#xC811;&#xC18D;</li></ol><pre><code class="language-bash">$ ssh ubuntu@hibuz.com
Welcome to Ubuntu 18.04.4 LTS (GNU/Linux 4.15.0-1033-oracle x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

 * Ubuntu 20.04 LTS is out, raising the bar on performance, security,
   and optimisation for Intel, AMD, Nvidia, ARM64 and Z15 as well as
   AWS, Azure and Google Cloud.

     https://ubuntu.com/blog/ubuntu-20-04-lts-arrives

This system has been minimized by removing packages and content that are
not required on a system that users do not log into.

To restore this content, you can run the &apos;unminimize&apos; command.

25 packages can be updated.
0 updates are security updates.

*** System restart required ***
Last login: Sat Apr 18 06:20:30 2020 from 175.113.240.188
ubuntu@hibuz:~$</code></pre><img src="https://hibuz.com/content/images/2020/05/ubuntu.png" alt="Ubuntu 18.04 -&gt; 20.04 &#xBC84;&#xC804; &#xC5C5;&#xADF8;&#xB808;&#xC774;&#xB4DC;"><p>2. <code>do-release-upgrade -d</code> &#xBA85;&#xB839;&#xC5B4;&#xB85C; &#xC5C5;&#xADF8;&#xB808;&#xC774;&#xB4DC;</p><pre><code class="language-bash">ubuntu@hibuz:~$ sudo apt update &amp;&amp; sudo apt dist-upgrade
[sudo] password for ubuntu:
Hit:1 https://download.docker.com/linux/ubuntu eoan InRelease
Get:2 http://security.ubuntu.com/ubuntu eoan-security InRelease [97.5 kB]
Hit:3 http://kr.archive.ubuntu.com/ubuntu eoan InRelease
Get:4 http://kr.archive.ubuntu.com/ubuntu eoan-updates InRelease [97.5 kB]
Get:5 http://kr.archive.ubuntu.com/ubuntu eoan-backports InRelease [88.8 kB]
Fetched 284 kB in 3s (105 kB/s)
Reading package lists... Done
Building dependency tree
Reading state information... Done
All packages are up to date.
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.


ubuntu@hibuz:~$ sudo apt install update-manager-core
Reading package lists... Done
Building dependency tree
Reading state information... Done
update-manager-core is already the newest version (1:19.04.8).
update-manager-core set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.


ubuntu@hibuz:~$ do-release-upgrade -d
Checking for a new Ubuntu release
Get:1 Upgrade tool signature [1554 B]
Get:2 Upgrade tool [1344 kB]
Fetched 1346 kB in 0s (0 B/s)
authenticate &apos;focal.tar.gz&apos; against &apos;focal.tar.gz.gpg&apos;
extracting &apos;focal.tar.gz&apos;

Reading cache

Checking package manager

Continue running under SSH?

This session appears to be running under ssh. It is not recommended
to perform a upgrade over ssh currently because in case of failure it
is harder to recover.

If you continue, an additional ssh daemon will be started at port
&apos;1022&apos;.
Do you want to continue?

Continue [yN] y

Starting additional sshd

To make recovery in case of failure easier, an additional sshd will
be started on port &apos;1022&apos;. If anything goes wrong with the running
ssh you can still connect to the additional one.
If you run a firewall, you may need to temporarily open this port. As
this is potentially dangerous it&apos;s not done automatically. You can
open the port with e.g.:
&apos;iptables -I INPUT -p tcp --dport 1022 -j ACCEPT&apos;

To continue please press [ENTER]

Reading package lists... Done
Building dependency tree
Reading state information... Done
Hit https://download.docker.com/linux/ubuntu eoan InRelease
Get:1 http://security.ubuntu.com/ubuntu eoan-security InRelease [97.5 kB]
Hit http://kr.archive.ubuntu.com/ubuntu eoan InRelease
Get:2 http://kr.archive.ubuntu.com/ubuntu eoan-updates InRelease [97.5 kB]
Get:3 http://kr.archive.ubuntu.com/ubuntu eoan-backports InRelease [88.8 kB]
Fetched 284 kB in 0s (0 B/s)
Reading package lists... Done
Building dependency tree
Reading state information... Done

Checking for installed snaps

Calculating snap size requirements

Updating repository information

Third party sources disabled

Some third party entries in your sources.list were disabled. You can
re-enable them after the upgrade with the &apos;software-properties&apos; tool
or your package manager.

To continue please press [ENTER]
</code></pre><p>3. &#xC5C5;&#xADF8;&#xB808;&#xC774;&#xB4DC; &#xD655;&#xC778;</p><pre><code class="language-bash">$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu Focal Fossa
Release:	20.04
Codename:	focal</code></pre>]]></content:encoded></item><item><title><![CDATA[자아실현, 코로나, 프로젝트]]></title><description><![CDATA[누구나 장미빛 미래와 자아실현을 꿈꾼다.
But 모든게 계획데로만 되지 않는다. 현실은 냉정하다.
매슬로우의 인간의 욕구단계 중 자아실현의 욕구 5단계 까지 가는 길은 상당히 어렵다.
본인의 노력만으로는 안되고 주변의(가족, 친구, 동료) 도움이 필요하고 거기에 운 까지도 따라 줘야 한다.
지금 대한민국은 코로나로 2단계-안전의 욕구마저 위협받고 있다.]]></description><link>https://hibuz.com/mylife/</link><guid isPermaLink="false">5e59e82c44056b0001f9e9f1</guid><category><![CDATA[life]]></category><category><![CDATA[project]]></category><category><![CDATA[코로나]]></category><dc:creator><![CDATA[Hibuz]]></dc:creator><pubDate>Sat, 29 Feb 2020 08:54:22 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1518159357049-bb438a340932?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=2000&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" medium="image"/><content:encoded><![CDATA[<h3 id="-">&#xC790;&#xC544;&#xC2E4;&#xD604;</h3><blockquote>&#xC0DD;&#xAC01;&#xD558;&#xB294; &#xB300;&#xB85C; &#xC0B4;&#xC9C0; &#xC54A;&#xC73C;&#xBA74; &#xACB0;&#xAD6D;&#xC5D0;&#xB294; &#xC0AC;&#xB294; &#xB300;&#xB85C; &#xC0DD;&#xAC01;&#xD558;&#xAC8C; &#xB41C;&#xB2E4;.<br>One must live the way one thinks or end up thinking the way one has lived.<br>- &#xD3F4; &#xBD80;&#xB974;&#xC81C; / Paul Bourget, &#xC815;&#xC624;&#xC758; &#xC545;&#xB9C8;, 1914</blockquote><img src="https://images.unsplash.com/photo-1518159357049-bb438a340932?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=2000&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" alt="&#xC790;&#xC544;&#xC2E4;&#xD604;, &#xCF54;&#xB85C;&#xB098;, &#xD504;&#xB85C;&#xC81D;&#xD2B8;"><p>&#xC2A4;&#xC2A4;&#xB85C; &#xD310;&#xB2E8;&#xD558;&#xACE0; &#xAC00;&#xCE58;&#xB97C; &#xB9CC;&#xB4E4;&#xC5B4; &#xADF8;&#xAC83;&#xC5D0; &#xC758;&#xD574; &#xD589;&#xB3D9;&#xD558;&#xB294;, &#xC989; &#xC790;&#xC728;&#xC801;&#xC778; &#xC0AC;&#xB78C;&#xACFC; &#xADF8;&#xB807;&#xC9C0; &#xC54A;&#xC740; &#xC0AC;&#xB78C;&#xC744; &#xBE44;&#xAD50;&#xD558;&#xB294; &#xB9D0;&#xC785;&#xB2C8;&#xB2E4;. &#xD604;&#xB300; &#xC2EC;&#xB9AC;&#xD559;&#xC758; &#xC218;&#xB9CE;&#xC740; &#xC2E4;&#xD5D8; &#xC5F0;&#xAD6C;&#xC640; &#xAD00;&#xCC30;&#xB41C; &#xC0AC;&#xB840;&#xB4E4;&#xC744; &#xBCF4;&#xBA74; &#xBCC4;&#xB2E4;&#xB978; &#xBAA9;&#xD45C;&#xC758;&#xC2DD;&#xC774; &#xC5C6;&#xB294; &#xC0C1;&#xD669;&#xC5D0;&#xC11C;&#xB294; &#xC77C;&#xC5B4;&#xB09C; &#xC0C1;&#xD669;&#xACFC; &#xC790;&#xC2E0;&#xC744; &#xB3D9;&#xC77C;&#xC2DC; &#xD558;&#xB294; &#xACB0;&#xACFC;&#xAC00; &#xAD00;&#xCC30; &#xB410;&#xB2E4;&#xACE0; &#xD569;&#xB2C8;&#xB2E4;. &#xADF8;&#xB798;&#xC11C; &#xC81C; &#xC0B6;&#xC758; &#xBAA9;&#xC801;&#xACFC; &#xC778;&#xC0DD;&#xC758; &#xBAA8;&#xD1A0;&#xB294; &#xD589;&#xBCF5;&#xD558;&#xACE0; &#xC990;&#xAC81;&#xAC8C; &#xC0B4;&#xBA74;&#xC11C; &#xC0AC;&#xD68C;&#xC5D0; &#xC870;&#xAE08;&#xC774;&#xB77C;&#xB3C4; &#xAE30;&#xC5EC;&#xD558;&#xB294; &#xC758;&#xBBF8;&#xC788;&#xB294; &#xC0B6;&#xC744; &#xC0AC;&#xB294; &#xAC83;&#xC73C;&#xB85C; &#xC815;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;. &#xC774;&#xB7F0; &#xAC00;&#xCE58;&#xC758; &#xAE30;&#xC900;&#xC744; &#xC124;&#xC815;&#xD574; &#xC0C1;&#xD669;&#xC758; &#xC9C0;&#xBC30;&#xB97C; &#xBC1B;&#xC544;&#xC11C; &#xC0AC;&#xB294;&#xB370;&#xB85C; &#xC0DD;&#xAC01;&#xC9C0; &#xC54A;&#xB3C4;&#xB85D;, &#xD798;&#xB4E4;&#xC5B4;&#xB3C4; &#xC774;&#xACA8;&#xB0B4;&#xACE0;, &#xC0DD;&#xAC01;&#xD558;&#xB294; &#xAC00;&#xCE58;&#xB370;&#xB85C; &#xC0B4;&#xB824;&#xACE0; &#xB178;&#xB825;&#xD560; &#xAC70;&#xB77C;&#xACE0; &#xBBFF;&#xACE0; &#xC788;&#xB2E4;.<br>&#xC800; &#xD63C;&#xC790; &#xC798;&#xBA39;&#xACE0; &#xC798;&#xC0B4;&#xACA0;&#xB2E4; &#xD558;&#xBA74; &#xB300;&#xCDA9; &#xC801;&#xB2F9;&#xD788; &#xC0B4;&#xC544;&#xB3C4; &#xB418;&#xACA0;&#xC9C0;&#xB9CC; &#xBC1C;&#xC804;&#xC801;&#xC73C;&#xB85C; &#xC0B4;&#xACE0; &#xC2F6;&#xACE0; &#xBB54;&#xAC00;&#xB97C; &#xAE30;&#xC5EC;&#xD558;&#xACE0; &#xC2F6;&#xB2E4;. &#xC0AC;&#xC2E4; &#xAE30;&#xC5EC;&#xB77C;&#xB294;&#xAC8C; &#xAC70;&#xCC3D;&#xD574; &#xBCF4;&#xC774;&#xC9C0;&#xB9CC; &#xC81C; &#xC0C1;&#xD669;&#xC5D0;&#xC11C; &#xC791;&#xAC8C; &#xBCF8;&#xB2E4;&#xBA74; &#xC9C0;&#xAE08; &#xB9E1;&#xC740;&#xBC14; &#xC784;&#xBB34;&#xC5D0; &#xCDA9;&#xC2E4;&#xD558;&#xBA74; &#xD68C;&#xC0AC;&#xAC00; &#xC798;&#xB418;&#xC11C; &#xAE30;&#xC5C5;&#xC774; &#xC0AC;&#xD68C;&#xC5D0; &#xC88B;&#xC740; &#xC601;&#xD5A5;&#xC744; &#xC904;&#xAC83;&#xC774;&#xB2E4;. &#xB610;&#xD55C; &#xC800;&#xD76C; &#xC544;&#xC774;&#xB4E4;&#xC774; &#xC798; &#xBA39;&#xACE0; &#xB180;&#xACE0; &#xBC30;&#xC6B8; &#xC218; &#xC788;&#xB3C4;&#xB85D; &#xB3D5;&#xACE0; &#xAC00;&#xC871;&#xC774; &#xC880;&#xB354; &#xD48D;&#xC694;&#xB86D;&#xAC8C; &#xC0DD;&#xD65C;&#xD560; &#xC218; &#xC788;&#xB3C4;&#xB85D; &#xACBD;&#xC81C;&#xC801;&#xC73C;&#xB85C; &#xC9C0;&#xC6D0;&#xD558;&#xB294; &#xAC83;&#xB3C4; &#xB0B4;&#xAC00; &#xC0AC;&#xD68C;&#xC5D0; &#xAE30;&#xC5EC;&#xD558;&#xB294; &#xBD80;&#xBD84;&#xC911;&#xC5D0; &#xD558;&#xB098;&#xB77C;&#xACE0; &#xC0DD;&#xAC01;&#xD55C;&#xB2E4;.</p><h3 id="--1">&#xC804;&#xB7B5;</h3><blockquote>&#xB098;&#xB294; &#xC138;&#xC0C1;&#xC744; &#xAC15;&#xC790;&#xC640; &#xC57D;&#xC790;, &#xC131;&#xACF5;&#xACFC; &#xC2E4;&#xD328;&#xB85C; &#xB098;&#xB204;&#xC9C0; &#xC54A;&#xB294;&#xB2E4;.<br>&#xB098;&#xB294; &#xC138;&#xC0C1;&#xC744; <code>&#xBC30;&#xC6B0;&#xB294; &#xC790;</code>&#xC640; &#xBC30;&#xC6B0;&#xC9C0; &#xC54A;&#xB294; &#xC790;&#xB85C; &#xB098;&#xB208;&#xB2E4;.<br>I don&apos;t divide the world into the weak and the strong, or the successes and the failures, those who make it or those who don&apos;t. I divide the world into <code>learners</code> and non-learners.<br>- &#xBCA4;&#xC790;&#xBBFC; &#xBC14;&#xBC84; / Benjamin Barber</blockquote><blockquote>&#xC800;&#xB294; &#xC0AC;&#xC2E4; &#xD070; &#xADF8;&#xB9BC;&#xC744; &#xADF8;&#xB9AC;&#xB294; &#xC57C;&#xB9DD;&#xAC00;&#xB3C4; &#xC544;&#xB2C8;&#xACE0;, &#xC6D0;&#xB300;&#xD55C; &#xAFC8;&#xC744; &#xAFB8;&#xB294; &#xC0AC;&#xB78C;&#xB3C4; &#xC544;&#xB2D9;&#xB2C8;&#xB2E4;. &#xC880;&#xB354; &#xC815;&#xD655;&#xD788; &#xB9D0;&#xD558;&#xBA74; &#xAD6C;&#xCCB4;&#xC801;&#xC778; &#xAFC8; &#xC790;&#xCCB4;&#xAC00; &#xC5C6;&#xC2B5;&#xB2C8;&#xB2E4;. &#xADF8;&#xB7EC;&#xB2E4; &#xBCF4;&#xB2C8; &#xB9E4;&#xBC88; &#xADF8;&#xB54C;&#xADF8;&#xB54C; &#xD558;&#xACE0; &#xC2F6;&#xC740; &#xAC83;&#xC5D0; &#xB530;&#xB77C; &#xC120;&#xD0DD;&#xD588;&#xB358; &#xAC83; &#xAC19;&#xC2B5;&#xB2C8;&#xB2E4;.<br>&#xC800;&#xB294; &#xC55E;&#xC73C;&#xB85C;&#xB3C4; &#xAFC8; &#xC5C6;&#xC774; &#xC0B4; &#xAC81;&#xB2C8;&#xB2E4;. &#xC54C; &#xC9C0; &#xBABB;&#xD558;&#xB294; &#xBBF8;&#xB798;&#xB97C; &#xAD6C;&#xCCB4;&#xD654;&#xD558;&#xAE30; &#xC704;&#xD574;&#xC11C; &#xC2DC;&#xAC04;&#xC744; &#xC4F8; &#xBC14;&#xC5D0;, &#xC9C0;&#xAE08; &#xC8FC;&#xC5B4;&#xC9C4; &#xB0A9;&#xB4DD;&#xD560; &#xC218; &#xC5C6;&#xB294; &#xBB38;&#xC81C;&#xB97C; &#xAC1C;&#xC120;&#xD574; &#xB098;&#xAC00;&#xACA0;&#xC2B5;&#xB2C8;&#xB2E4;.<br>- &#xBC29;&#xC2DC;&#xC5ED;, &#xC11C;&#xC6B8;&#xB300; &#xC878;&#xC5C5;&#xC2DD; &#xCD95;&#xC0AC;&#xC911;</blockquote><p>&#xC774;&#xB97C; &#xC2E4;&#xD589;&#xD558;&#xAE30; &#xC704;&#xD574; &#xB0B4;&#xAC00; &#xCDE8;&#xD55C; &#xC804;&#xB7B5;&#xC740; <br>1. &#xB9E4;&#xC0AC;&#xC5D0; &#xC990;&#xAE30;&#xBA74;&#xC11C; &#xBC30;&#xC6B0;&#xBA74;&#xC11C; &#xD638;&#xAE30;&#xC2EC; &#xAC00;&#xB4DD;&#xD558;&#xAC8C; &#xC131;&#xC7A5;&#xD558;&#xBA70; &#xC870;&#xAE08;&#xC529; &#xB098;&#xC544;&#xAC00;&#xB294; &#xAC83;&#xC774;&#xB2E4;. &#xC138;&#xC0C1;&#xC744; &#xB113;&#xACE0; &#xD06C;&#xAC8C; &#xBCF4;&#xBA74; &#xC9C0;&#xAE08;&#xC758; &#xC704;&#xAE30; &#xC0C1;&#xD669;&#xC774;&#xB098; &#xD658;&#xACBD;&#xC774; &#xB098;&#xC5D0;&#xAC8C;&#xB294; &#xC81C;&#xC57D;&#xC774; &#xB418;&#xC9C0; &#xC54A;&#xB294;&#xB2E4;. &#xC778;&#xC0DD;&#xC774;&#xB780; &#xAE34; &#xB808;&#xC774;&#xC2A4;&#xC5D0;&#xC11C; &#xBCF8;&#xB2E4;&#xBA74; &#xC774; &#xBAA8;&#xB4E0;&#xAC8C; &#xB098;&#xC5D0;&#xAC8C; &#xB3C4;&#xC6C0;&#xC774; &#xB41C;&#xB2E4;&#xACE0; &#xBBFF;&#xACE0; &#xC5EC;&#xAE30;&#xBA74;&#xC11C; &#xB364;&#xB364;&#xD788; &#xBC1B;&#xC544; &#xB4E4;&#xC774;&#xAC8C; &#xB41C;&#xB2E4;. &#xC138;&#xC0C1;&#xC740; &#xB113;&#xACE0; &#xD560;&#xC77C;&#xC740; &#xB9CE;&#xACE0; &#xBC30;&#xC6B0;&#xBA74;&#xC11C; &#xACFC;&#xC815;&#xC744; &#xC990;&#xAE30;&#xBA74;&#xC11C; &#xC0B4;&#xC790;. &#xC774;&#xB7EC;&#xD55C; &#xBC30;&#xC6C0;&#xC774; &#xC2B5;&#xAD00;&#xC774; &#xB41C;&#xB2E4;&#xBA74; &#xB098;&#xC758; &#xC778;&#xC0DD; &#xADF8;&#xB798;&#xD504;&#xB294; &#xC6B0;&#xC0C1;&#xD5A5;&#xC744; &#xC774;&#xB8F0; &#xAC83;&#xC774;&#xB2E4;.<br>2. &#xC0C8;&#xB85C;&#xC6B4; &#xBD84;&#xC57C;&#xB85C; &#xB450;&#xB824;&#xC6C0; &#xC5C6;&#xC774; &#xB6F0;&#xC5B4;&#xB4E4;&#xC790;. &#xC774;&#xB294; &#xC790;&#xC5F0;&#xC2A4;&#xB808; &#xB3D9;&#xAE30;&#xAC00; &#xBD80;&#xC5EC;&#xB418;&#xACE0; &#xC774;&#xB97C; &#xC131;&#xC2E4;&#xD558;&#xAC8C; &#xC784;&#xD558;&#xBA74; &#xC131;&#xC7A5;&#xD55C;&#xB2E4;. &#xAC00;&#xC7A5; &#xC88B;&#xC740; &#xBC29;&#xBC95;&#xC740; &#xC790;&#xC2E0;&#xC774; &#xBD80;&#xC871;&#xD55C; &#xBD80;&#xBD84;&#xC744; &#xCC44;&#xC6CC;&#xC904; &#xC218; &#xC788;&#xB294; &#xACF3;&#xC5D0;&#xC11C; &#xC5C5;&#xBB34;&#xB85C; &#xBC30;&#xC6B0;&#xB294; &#xAC83;&#xC774;&#xB2E4;. &#xC774;&#xB294; &#xC778;&#xC0DD; &#xADF8;&#xB798;&#xD504;&#xC758; &#xAE30;&#xC6B8;&#xAE30;&#xB97C; &#xC880;&#xB354; &#xAC00;&#xD30C;&#xB974;&#xAC8C; &#xB9CC;&#xB4E4;&#xC5B4; &#xACC4;&#xB2E8;&#xCC98;&#xB7FC; &#xB3C4;&#xC57D;&#xD558;&#xAC8C; &#xD574;&#xC8FC;&#xB294; &#xBC29;&#xBC95;&#xC911; &#xD55C;&#xAC00;&#xC9C0;&#xC774;&#xB2E4;. &#xA0;&#xB610;&#xD55C; &#xC778;&#xAC04;&#xC740; &#xC801;&#xC751;&#xC758; &#xB3D9;&#xBB3C;&#xC774;&#xB77C; &#xBCF8;&#xB2A5;&#xC801;&#xC73C;&#xB85C; &#xD63C;&#xB3C8;&#xC758; &#xC0C1;&#xD669;&#xC744; &#xC548;&#xC815;&#xC2DC;&#xD0A4;&#xB824;&#xB294; &#xC7A5;&#xCE58;&#xAC00; &#xB3D9;&#xC791;&#xD55C;&#xB2E4;. &#xC774;&#xB97C; &#xC774;&#xC6A9;&#xD574; &#xBCF4;&#xB294; &#xAC83;&#xC774;&#xB2E4;. &#xC870;&#xAE08;&#xB9CC; &#xBC29;&#xC2EC;&#xD558;&#xBA74; &#xC815;&#xCCB4; &#xB420;&#xC9C0; &#xBAA8;&#xB974;&#xB2C8; &#xC0C8;&#xB85C;&#xC6B4; &#xD63C;&#xB3C8;&#xC758; &#xC0C1;&#xD669;&#xC744; &#xC758;&#xB3C4;&#xC801;&#xC73C;&#xB85C; &#xB9CC;&#xB4E4;&#xC5B4; &#xBCF4;&#xB294; &#xAC83;&#xC774;&#xB2E4;.<br>&#xACB0;&#xAD6D; &#xC870;&#xAE08;&#xC774;&#xB77C;&#xB3C4; &#xC80A;&#xC744; &#xB54C;, &#xC77C;&#xC744; &#xB9CE;&#xC774; &#xD560; &#xC218; &#xC788;&#xB294; &#xC5EC;&#xB825;&#xC774; &#xB420; &#xB54C; &#xC5F4;&#xC2EC;&#xD788; &#xD574;&#xC11C; &#xBCF8;&#xC778;&#xC758; &#xBC1C;&#xC804;&#xC5D0; &#xD22C;&#xC790;&#xD558;&#xB294;&#xAC8C; &#xCD5C;&#xC120;&#xC774;&#xB2E4;. &#xC774;&#xB7F0; &#xCD08;&#xAE30; &#xD22C;&#xC790;&#xAC00; &#xC774;&#xD6C4; &#xBCF5;&#xB9AC;&#xB85C; &#xC778;&#xC0DD;&#xC5D0;&#xC11C; &#xACC4;&#xC18D; &#xC774;&#xC790;&#xB85C; &#xB3CC;&#xC544;&#xC624;&#xB294;&#xB370; &#xADF8; &#xC911; &#xD55C;&#xAC00;&#xC9C0; &#xC608;&#xC2DC;&#xC778; &#xC5F0;&#xBD09;&#xC73C;&#xB85C; &#xAC00;&#xB2A0;&#xD574; &#xBCFC;&#xC218;&#xB3C4; &#xC788;&#xB2E4;&#xACE0; &#xC0DD;&#xAC01;&#xD55C;&#xB2E4;. &#xB2A6;&#xC5C8;&#xB2E4;&#xACE0; &#xC0DD;&#xAC01;&#xD560;&#xB54C;&#xAC00; &#xAC00;&#xC7A5; &#xBE60;&#xB974;&#xB2E4;.</p><h3 id="but">But</h3><figure class="kg-card kg-image-card"><img src="https://hibuz.com/content/images/2020/02/image-31.png" class="kg-image" alt="&#xC790;&#xC544;&#xC2E4;&#xD604;, &#xCF54;&#xB85C;&#xB098;, &#xD504;&#xB85C;&#xC81D;&#xD2B8;" loading="lazy"></figure><p>&#xCF54;&#xB85C;&#xB098;19&#xB85C; &#xC9C0;&#xAE08; &#xB300;&#xD55C;&#xBBFC;&#xAD6D;&#xC774; &#xBAB8;&#xC0B4;&#xC744; &#xC553;&#xACE0; &#xC788;&#xB2E4;. &#xC9C0;&#xAE08;&#xCC98;&#xB7FC; &#xB9CE;&#xC740; &#xC0AC;&#xB78C;&#xB4E4;&#xC774; 2&#xB2E8;&#xACC4; &#xC548;&#xC804;&#xC758; &#xC695;&#xAD6C;&#xB9C8;&#xC800; &#xC704;&#xD611;&#xBC1B;&#xB294; &#xC0C1;&#xD669;&#xC5D0;&#xC11C;&#xB294; 3&#xB2E8;&#xACC4; &#xC0AC;&#xD68C;&#xC801;&#xC778; &#xC695;&#xAD6C;&#xB97C; &#xD3EC;&#xAE30; &#xD560; &#xC218; &#xBC16;&#xC5D0; &#xC5C6;&#xB2E4;. &#xC0AC;&#xD68C;&#xAC00; &#xB4A4;&#xB85C; &#xC5ED;&#xD589;&#xD558;&#xB294; &#xD558;&#xB294; &#xAC83;&#xCC98;&#xB7FC; &#xBCF4;&#xC778;&#xB2E4;. &#xB204;&#xAC00; &#xC774;&#xB7F0; &#xC2EC;&#xAC01;&#xD55C; &#xC0C1;&#xD669;&#xC774; &#xBC1C;&#xC0DD;&#xD560; &#xAC70;&#xB77C;&#xACE0; &#xC608;&#xC0C1;&#xC774;&#xB098; &#xD560; &#xC218; &#xC788;&#xC5C8;&#xB2E8; &#xB9D0;&#xC778;&#xAC00;(&#xC2E0;&#xCC9C;&#xC9C0;&#xB294; &#xB354;&#xC774;&#xC0C1; &#xC0AC;&#xACE0;&#xCE58;&#xC9C0; &#xB9D0;&#xACE0; &#xC81C;&#xBC1C; &#xB9D0; &#xC798;&#xB4E3;&#xACE0; &#xD611;&#xC870; &#xD558;&#xAE38;...) &#xBB3C;&#xB860; &#xAD6D;&#xBBFC; &#xBAA8;&#xB450;&#xAC00; &#xC870;&#xC2EC;&#xD558;&#xACE0; &#xC788;&#xACE0;, &#xC815;&#xBD80;&#xB3C4; &#xD22C;&#xBA85;&#xD558;&#xACE0; &#xC801;&#xADF9;&#xC801;&#xC73C;&#xB85C; &#xB300;&#xC751;&#xD558;&#xB294; &#xB9CC;&#xD07C; &#xADF8; &#xC5B4;&#xB5A4; &#xB098;&#xB77C;&#xBCF4;&#xB2E4; &#xD604;&#xBA85;&#xD558;&#xAC8C; &#xC774; &#xC704;&#xAE30;&#xB97C; &#xC798; &#xD574;&#xCCD0; &#xB098;&#xAC08;&#xAC83;&#xC73C;&#xB85C; &#xBBFF;&#xB294;&#xB2E4;.<br>&#xB2E4;&#xC2DC; &#xB3CC;&#xC544;&#xC640;&#xC11C; &#xC778;&#xAC04;&#xC740; &#xAC10;&#xC815;&#xC758; &#xC9C0;&#xBC30;&#xB97C; &#xC27D;&#xAC8C; &#xBC1B;&#xB294; &#xB098;&#xC57D;&#xD55C; &#xC874;&#xC7AC;&#xC774;&#xB2E4;. &#xC8FC;&#xBCC0;&#xC5D0;&#xC11C; &#xC0C1;&#xCC98;&#xBC1B;&#xB294; &#xB9D0; &#xD55C;&#xB9C8;&#xB514;, &#xD589;&#xB3D9;&#xC73C;&#xB85C;&#xB3C4; &#xC27D;&#xAC8C; &#xC88C;&#xC808;&#xD558;&#xACE0; &#xD3EC;&#xAE30;&#xD558;&#xBA74;&#xC11C; &#xBA39;&#xACE0; &#xC790;&#xAE30;&#xB9CC; &#xD558;&#xB294; &#xBB34;&#xAE30;&#xB825;&#xC99D;&#xC5D0; &#xBE60;&#xC838;&#xC11C; 1&#xB2E8;&#xACC4; &#xC0DD;&#xB9AC;&#xC801; &#xC695;&#xAD6C;&#xB2E8;&#xACC4;&#xC5D0; &#xBA38;&#xBB34;&#xB294; &#xC0C1;&#xD669;&#xB3C4; &#xC27D;&#xAC8C; &#xBC1C;&#xC0DD;&#xD55C;&#xB2E4;. &#xB098; &#xB610;&#xD55C; &#xC790;&#xC8FC; &#xADF8;&#xB7F0;&#xB2E4;. &#xC774;&#xCC98;&#xB7FC; &#xC5EC;&#xB7EC;&#xAC00;&#xC9C0; &#xC0DD;&#xAC01;&#xC9C0;&#xB3C4; &#xBABB;&#xD55C; &#xC774;&#xC720;&#xB85C; 5&#xB2E8;&#xACC4;&#xB97C; &#xACC4;&#xC18D; &#xC720;&#xC9C0;&#xD558;&#xB294; &#xAC83;&#xC740; &#xB9D0;&#xCC98;&#xB7FC; &#xC27D;&#xC9C0; &#xC54A;&#xB2E4;&#xB294; &#xAC83;&#xC774;&#xB2E4;.</p><h3 id="--2">&#xD300; &#xD504;&#xB85C;&#xC81D;&#xD2B8;</h3><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://hibuz.com/content/images/2020/02/image-30.png" class="kg-image" alt="&#xC790;&#xC544;&#xC2E4;&#xD604;, &#xCF54;&#xB85C;&#xB098;, &#xD504;&#xB85C;&#xC81D;&#xD2B8;" loading="lazy"><figcaption>&#xCD9C;&#xCC98;: SHR &#xD300;&#xAC1C;&#xBC1C; (<a href="http://www.shr.kr/development/devel03.php">http://www.shr.kr/development/devel03.php</a>)</figcaption></figure><p>&#xB72C;&#xAE08;&#xC5C6;&#xB294; &#xD504;&#xB85C;&#xC81D;&#xD2B8; &#xC774;&#xC57C;&#xAE30;&#xC774;&#xB2E4;. &#xB0B4;&#xAC00; &#xC9C0;&#xAE08; &#xD558;&#xACE0; &#xC788;&#xB294; &#xC77C;&#xC774; &#xD504;&#xB85C;&#xC81D;&#xD2B8; &#xCEE8;&#xC124;&#xD134;&#xD2B8;&#xC774;&#xB2E4;. &#xD300; &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xC5D0;&#xC11C;&#xB294; &#xB2E4;&#xC74C; 4&#xAC00;&#xC9C0; &#xD300; &#xBC1C;&#xB2EC; &#xB2E8;&#xACC4;&#xB97C; &#xACBD;&#xD5D8;&#xD558;&#xAC8C; &#xB41C;&#xB2E4;. &#xCCAB;&#xC9F8;&#xB85C; <code>&#xD300; &#xD615;&#xC131;&#xAE30;(Forming)</code>&#xC5D0;&#xB294; &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xC5D0; &#xB300;&#xD55C; &#xAE30;&#xB300;&#xAC10;&#xACFC; &#xBD88;&#xD655;&#xC2E4;&#xC131;&#xC774; &#xACF5;&#xC874;&#xD55C;&#xB2E4;. &#xC11C;&#xB85C; &#xD3B8;&#xD558;&#xC9C0;&#xB9CC;&#xC740; &#xC54A;&#xC740; &#xAD00;&#xACC4;&#xB85C; &#xC11C;&#xB85C;&#xB97C; &#xD0D0;&#xC0C9;&#xD558;&#xB294; &#xB2E8;&#xACC4;&#xC774;&#xACE0; &#xC11C;&#xB85C;&#xC758; &#xC2E0;&#xB8B0;&#xAC00; &#xD615;&#xC131;&#xB418;&#xC9C0; &#xC54A;&#xB294; &#xC2DC;&#xAE30;&#xC774;&#xB2E4;. &#xC774;&#xD6C4; &#xB300;&#xBD80;&#xBD84;&#xC758; &#xD300;&#xB4E4;&#xC740; <code>&#xAC08;&#xB4F1;&#xAE30;(Storming)</code>&#xB97C; &#xACAA;&#xAC8C; &#xB41C;&#xB2E4;. &#xB9C9;&#xC0C1; &#xD300;&#xC744; &#xACAA;&#xC5B4;&#xBCF4;&#xBA74; &#xB0B4; &#xC0DD;&#xAC01;&#xACFC;&#xB294; &#xB9CE;&#xC774; &#xB2E4;&#xB974;&#xB2E4;&#xB294; &#xD604;&#xC2E4;&#xC744; &#xC11C;&#xB85C; &#xB9C8;&#xC8FC;&#xD558;&#xAC8C; &#xB41C;&#xB2E4;. &#xC774;&#xB7EC;&#xB2E4; &#xB098; &#xD63C;&#xC790; &#xB2E4; &#xB5A0;&#xB9E1;&#xC544;&#xC57C; &#xD558;&#xB294;&#xAC74; &#xC544;&#xB2CC;&#xAC00;? &#xB098;&#xB791; &#xC2A4;&#xD0C0;&#xC77C;&#xC774; &#xB9DE;&#xC9C0;&#xB3C4; &#xC54A;&#xACE0; &#xB9D8;&#xC5D0; &#xC548;&#xB4DC;&#xB294;&#xAC8C; &#xADF8;&#xB0E5; &#xC800; &#xC0AC;&#xB78C;&#xC774; &#xC2EB;&#xB2E4;. &#xB610;&#xD55C; &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xC5D0; &#xB300;&#xD55C; &#xC5F4;&#xC815;&#xC758; &#xC628;&#xB3C4;&#xCC28;&#xC774;&#xB85C; &#xC11C;&#xB85C;&#xAC04;&#xC5D0; &#xD0C0;&#xD611;&#xC810;&#xC744; &#xCC3E;&#xC9C0; &#xBABB;&#xD574; &#xC801;&#xADF9; &#xCC38;&#xC5EC;&#xC790;&#xC640; &#xBC29;&#xAD00;&#xC790;&#xB85C; &#xB098;&#xB258;&#xC5B4; &#xBD84;&#xC5F4; &#xB418;&#xAE30;&#xB3C4; &#xD55C;&#xB2E4;. &#xC774; &#xB2E8;&#xACC4;&#xC5D0;&#xC11C; &#xCD5C;&#xC545;&#xC758; &#xC0C1;&#xD669;&#xC740; &#xC11C;&#xB85C; &#xAC04;&#xC5D0; &#xC0C1;&#xCC98;&#xB97C; &#xBC1B;&#xC544; &#xC544;&#xBB34;&#xAC83;&#xB3C4; &#xC548;&#xD558;&#xBA74;&#xC11C; &#xC2DC;&#xAC04;&#xC744; &#xB54C;&#xC6B0;&#xAC70;&#xB098; &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xC640; &#xBB34;&#xAD00;&#xD55C; &#xC77C;&#xC744; &#xD558;&#xBA74;&#xC11C; &#xC9D1;&#xC911;&#xD558;&#xC9C0; &#xBABB;&#xD558;&#xACE0; &#xD300;&#xC774; &#xD130;&#xC9C0;&#xB294; &#xACBD;&#xC6B0;&#xC774;&#xB2E4;.</p><p>&#xB530;&#xB77C;&#xC11C; &#xC774; &#xAC08;&#xB4F1;&#xAE30;&#xB97C; &#xA0;&#xCD5C;&#xC18C;&#xD654; &#xD558;&#xBA74;&#xC11C; &#xC798; &#xB118;&#xAE30;&#xB294; &#xAC83;&#xC774; &#xD504;&#xB85C;&#xC81D;&#xD2B8; &#xC131;&#xACF5;&#xC744; &#xC88C;&#xC6B0;&#xD55C;&#xB2E4;.</p><ul><li>&#xC774;&#xC0C1;&#xC801;&#xC73C;&#xB85C;&#xB294; &#xBA74;&#xB2F4;&#xB4F1;&#xC758; &#xC5EC;&#xB7EC;&#xAC00;&#xC9C0; &#xC815;&#xBCF4;&#xB825;&#xC744; &#xCD1D; &#xB3D9;&#xC6D0;&#xD558;&#xC5EC; &#xD300;&#xC744; &#xC798; &#xAD6C;&#xC131;&#xD558;&#xB294; &#xB2A5;&#xB825;&#xC774; &#xC911;&#xC694;&#xD558;&#xB2E4;</li><li>&#xD504;&#xB85C;&#xC81D;&#xD2B8; &#xC2DC;&#xC791;&#xC804;&#xC5D0; &#xCDA9;&#xBD84;&#xD788; &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xC758; &#xBAA9;&#xD45C;&#xB97C; &#xC778;&#xC9C0;&#xC2DC;&#xD0A4;&#xACE0; &#xCE5C;&#xBAA9;&#xD65C;&#xB3D9;&#xB4F1;&#xC758; &#xD300;&#xBE4C;&#xB529; &#xACFC;&#xC815;&#xC744; &#xD1B5;&#xD574;&#xC11C; &#xBD88;&#xD655;&#xC2E4;&#xC131;&#xC744; &#xCD5C;&#xB300;&#xD55C; &#xC81C;&#xAC70; &#xD560; &#xC218; &#xC788;&#xB294; &#xC120;&#xC81C;&#xC801; &#xC548;&#xC804;&#xC7A5;&#xCE58;&#xB97C; &#xC900;&#xBE44;&#xD558;&#xB294; &#xAC83;&#xC774;&#xB2E4;.</li><li>&#xB9C8;&#xC9C0;&#xB9C9;&#xC73C;&#xB85C; &#xD300;&#xC6D0;&#xB4E4;&#xC758; &#xC5ED;&#xD560;&#xC744; &#xBA85;&#xD655;&#xD788; &#xD558;&#xACE0; &#xC5C5;&#xBB34;&#xB97C; &#xC798; &#xC870;&#xC728; &#xD560; &#xC218; &#xC788;&#xB294; &#xD300; &#xB9AC;&#xB354;&#xB97C; &#xC120;&#xC815;&#xD558;&#xB294; &#xAC83;&#xC774;&#xB2E4;. &#xB9AC;&#xB354;&#xB294; &#xC801;&#xADF9;&#xC801;&#xC778; &#xCEE4;&#xBBA4;&#xB2C8;&#xCF00;&#xC774;&#xC158;&#xC744; &#xD1B5;&#xD574; &#xAC08;&#xB4F1;&#xC744; &#xAD00;&#xB9AC;&#xD558;&#xACE0; &#xC0C1;&#xD669;&#xC5D0; &#xB530;&#xB77C; &#xC11C;&#xB85C;&#xAC00; &#xB354; &#xCE5C;&#xD574;&#xC9C0;&#xAE30; &#xC704;&#xD55C; &#xD65C;&#xB3D9;&#xB3C4; &#xD544;&#xC694;&#xD558;&#xB2E4;.</li></ul><p>&#xAC08;&#xB4F1;&#xC774; &#xAE4A;&#xC5B4;&#xC9C4; &#xD300;&#xB3C4; &#xACB0;&#xAD6D;&#xC5D0;&#xB294; &#xC6B0;&#xB9AC; &#xD300;&#xC758; &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xB97C; &#xB9DD;&#xCE60;&#xC218;&#xB294; &#xC5C6;&#xACE0; &#xC774;&#xB7EC;&#xB2E4; &#xC870;&#xC9C1;&#xC5D0;&#xC11C; &#xBC30;&#xC81C; &#xB418;&#xC9C0;&#xB294; &#xC54A;&#xC744;&#xAE4C; &#xD558;&#xB294; &#xBD88;&#xC548;&#xAC10;&#xC774; &#xCC3E;&#xC544;&#xC624;&#xB294; &#xC790;&#xC219;&#xC758; &#xC2DC;&#xAC04;&#xC744; &#xB9DE;&#xB294;&#xB2E4;. &#xC790;&#xC5F0;&#xC2A4;&#xB7FD;&#xAC8C; 3&#xB2E8;&#xACC4;&#xC758; &#xC0AC;&#xD68C;&#xC801; &#xC695;&#xAD6C;(&#xC18C;&#xC18D;&#xAC10;, &#xACB0;&#xACFC;&#xC5D0; &#xB300;&#xD55C; &#xC778;&#xC815;) &#xB2E8;&#xACC4;&#xB85C; &#xD5A5;&#xD558;&#xB294; &#xACB0;&#xD54D;&#xC695;&#xAD6C;&#xAC00; &#xB3D9;&#xC791; &#xD558;&#xBA74;&#xC11C; &#xA0;<code>&#xADDC;&#xC900;&#xD615;&#xC131;&#xAE30;(Norming)</code> &#xB85C; &#xC811;&#xC5B4;&#xB4E0;&#xB2E4;. &#xC791;&#xC740; &#xC131;&#xCDE8; &#xACBD;&#xD5D8;&#xB4E4;&#xC774; &#xC313;&#xC774;&#xACE0; &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xAC00; &#xC810;&#xC810; &#xAC00;&#xC2DC;&#xD654; &#xB418;&#xBA74;&#xC11C; &#xACB0;&#xACFC;&#xBB3C;&#xC744; &#xB208;&#xC73C;&#xB85C; &#xBCF4;&#xAC8C; &#xB41C;&#xB2E4;. &#xB610;&#xD55C; &#xC11C;&#xB85C;&#xB97C; &#xC774;&#xD574;&#xD558;&#xAC8C; &#xB418;&#xBA74;&#xC11C; &#xD574;&#xC57C; &#xD560;&#xAC83;&#xACFC; &#xD558;&#xC9C0; &#xB9D0;&#xC544;&#xC57C; &#xD560;&#xAC83;&#xB4E4;&#xC5D0; &#xB300;&#xD55C; &#xC554;&#xBB35;&#xC801;&#xC778; &#xACF5;&#xAC10;&#xB300;&#xAC00; &#xC791;&#xC6A9;&#xD558;&#xAC8C; &#xB41C;&#xB2E4;. &#xCC98;&#xC74C; &#xD615;&#xC131;&#xAE30;&#xC758; &#xBD88;&#xD655;&#xC2E4;&#xC131;&#xC774; &#xB9CE;&#xC774; &#xC81C;&#xAC70;&#xB418;&#xC790; &#xBAA9;&#xC801;&#xC774; &#xBD84;&#xBA85;&#xD574;&#xC9C0;&#xACE0; &#xD300; &#xC790;&#xC6D0;&#xC774; &#xC9D1;&#xACB0;&#xD558;&#xAC8C;&#xB418;&#xB294; &#xD300;&#xC6CC;&#xD06C;&#xB97C; &#xACBD;&#xD5D8;&#xD558;&#xAC8C; &#xB41C;&#xB2E4;. &#xB9C8;&#xC9C0;&#xB9C9; <code>&#xC131;&#xCDE8;&#xAE30;(Performing)</code> &#xB2E8;&#xACC4;&#xC5D0;&#xC11C;&#xB294; &#xC758;&#xC0AC;&#xACB0;&#xC815;&#xC774; &#xBE68;&#xB77C;&#xC9C0;&#xACE0; &#xC790;&#xC2E0;&#xAC10;&#xC774; &#xD5A5;&#xC0C1;&#xB418;&#xC5B4; &#xD6CC;&#xB96D;&#xD55C; &#xACB0;&#xACFC;&#xB97C; &#xC131;&#xCDE8;&#xD560; &#xC218; &#xC788;&#xB2E4;&#xB294; &#xAE30;&#xB300;&#xAC10;&#xC774; &#xC0C1;&#xC2B9;&#xD55C;&#xB2E4;. &#xB530;&#xB77C;&#xC11C; &#xD300;&#xC6D0; &#xBAA8;&#xB450;&#xAC00; &#xC801;&#xADF9;&#xC801;&#xC73C;&#xB85C; &#xA0;&#xCC38;&#xC5EC;&#xD558;&#xAC8C; &#xB418;&#xC5B4; &#xD37C;&#xD3EC;&#xBA3C;&#xC2A4;&#xAC00; &#xBC1C;&#xC0DD;&#xD558;&#xB294; &#xB2E8;&#xACC4;&#xC774;&#xB2E4;.<br><br>&#xC6B0;&#xB9AC;&#xB294; &#xD300; &#xD504;&#xB85C;&#xC81D;&#xD2B8; &#xACBD;&#xD5D8;&#xC744; &#xD1B5;&#xD574; &#xAC01; &#xD300; &#xBC1C;&#xC804; &#xB2E8;&#xACC4;&#xC758; &#xD750;&#xB984;&#xC744; &#xC774;&#xD574;&#xD560; &#xD544;&#xC694;&#xAC00; &#xC788;&#xB2E4;. &#xB610;&#xD55C; &#xACBD;&#xD5D8;&#xC744; &#xAE30;&#xBC18;&#xC73C;&#xB85C; &#xB2E4;&#xC74C; &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xC5D0;&#xC11C;&#xB294; &#xD798;&#xB4E4;&#xACE0; &#xC5B4;&#xB824;&#xC6E0;&#xB358; &#xC810;&#xC740; &#xCD5C;&#xC18C;&#xD654;&#xD558;&#xACE0; &#xC798; &#xD588;&#xACE0; &#xC88B;&#xC558;&#xB358; &#xC810;&#xB4E4;&#xC744; &#xAC15;&#xD654;&#xD558;&#xC790;. &#xC55E;&#xC11C; &#xB9D0;&#xD55C; &#xAC83;&#xCC98;&#xB7FC; &#xAC08;&#xB4F1;&#xAE30;&#xB97C; &#xCD5C;&#xC18C;&#xD654;&#xD558;&#xAC70;&#xB098; &#xB118;&#xAE38; &#xC218; &#xC788;&#xB294; &#xC5ED;&#xB7C9;&#xC744; &#xC9C0;&#xC18D;&#xC801;&#xC73C;&#xB85C; &#xD5A5;&#xC0C1;&#xC2DC;&#xCF1C; &#xC131;&#xCDE8;&#xAE30;&#xC758; &#xB2E8;&#xACC4;&#xC5D0; &#xBE60;&#xB974;&#xAC8C; &#xC9C4;&#xC785;&#xD558;&#xB294; &#xAC83;&#xC774; &#xB192;&#xC740; &#xC131;&#xACFC;&#xB97C; &#xB0B4;&#xB294; &#xBC29;&#xBC95;&#xC774;&#xB2E4;.</p><p>&#xCF54;&#xB85C;&#xB098;&#xB85C; &#xD734;&#xAC00;&#xB97C; &#xBCF4;&#xB0B4;&#xBA74;&#xC11C; &#xC6B0;&#xC5F0;&#xD788; <a href="http://devground.hanbit.co.kr/2019/11/21/%eb%b0%95%ec%a2%85%ec%b2%9c-%ea%b0%9c%eb%b0%9c%ec%9e%90%ea%b0%80-%ea%b0%96%ec%b6%94%ec%96%b4%ec%95%bc-%ed%95%a0-9%ea%b0%80%ec%a7%80-%ea%b8%b0%ec%88%a0/">&#xBC15;&#xC885;&#xCC9C;&#xB2D8;&#xC758; &#xAC1C;&#xBC1C;&#xC790;&#xAC00; &#xAC16;&#xCD94;&#xC5B4;&#xC57C; &#xD560; 9&#xAC00;&#xC9C0; &#xAE30;&#xC220;</a> &#xC720;&#xD29C;&#xBE0C;&#xB97C; &#xBCF4;&#xB2E4;&#xAC00; &#xC601;&#xAC10;&#xC744; &#xBC1B;&#xC544; &#xC791;&#xC131;&#xD558;&#xC600;&#xC2B5;&#xB2C8;&#xB2E4;.</p>]]></content:encoded></item><item><title><![CDATA[[세미나 후기] 우아한모노리스 by 박용권님]]></title><description><![CDATA[세미나 후기: 결합과 응집에 대해 항상 고민하고  모듈 경계를 철저히 잘 지켜서 협력하도록 개발하자. 빠르게 변화하는 비지니스에 뒤쳐지지 않으면서도 유연하게 대응가능한 유용한 제품을 개발하는 개발자가 되자. 방법론, 아키텍쳐가 만능은 아니다!]]></description><link>https://hibuz.com/building-modular-monoliths/</link><guid isPermaLink="false">5e5483bf0773020001594529</guid><category><![CDATA[msa]]></category><category><![CDATA[monoliths]]></category><category><![CDATA[ddd]]></category><category><![CDATA[oop]]></category><dc:creator><![CDATA[Hibuz]]></dc:creator><pubDate>Tue, 25 Feb 2020 03:59:13 GMT</pubDate><media:content url="https://hibuz.com/content/images/2020/02/cohesion_coupling.jpeg" medium="image"/><content:encoded><![CDATA[<figure class="kg-card kg-embed-card"><iframe width="480" height="270" src="https://www.youtube.com/embed/SrQeIz3gXZg?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure><figure class="kg-card kg-embed-card"><iframe src="https://www.slideshare.net/slideshow/embed_code/key/g1MfPAI9AqFIKh" width="427" height="356" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe> <div style="margin-bottom:5px"> <strong> <a href="https://www.slideshare.net/arawnkr/ss-224478403" title="&#xC6B0;&#xC544;&#xD55C; &#xBAA8;&#xB178;&#xB9AC;&#xC2A4;" target="_blank">&#xC6B0;&#xC544;&#xD55C; &#xBAA8;&#xB178;&#xB9AC;&#xC2A4;</a> </strong> from <strong><a href="https://www.slideshare.net/arawnkr" target="_blank">Arawn Park</a></strong> </div>

</figure><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://github.com/arawn/building-modular-monoliths-using-spring"><div class="kg-bookmark-content"><div class="kg-bookmark-title">arawn/building-modular-monoliths-using-spring</div><div class="kg-bookmark-description">&#xC2A4;&#xD504;&#xB9C1;&#xC744; &#xAE30;&#xBC18;&#xC73C;&#xB85C; &#xBAA8;&#xB4C8;&#xD615; &#xBAA8;&#xB178;&#xB9AC;&#xC2A4;&#xB97C; &#xB9CC;&#xB4E4;&#xAE30; &#xC704;&#xD55C; &#xBC29;&#xC548;&#xC744; &#xACF5;&#xC720;&#xD569;&#xB2C8;&#xB2E4;. Contribute to arawn/building-modular-monoliths-using-spring development by creating an account on GitHub.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://github.githubassets.com/favicon.ico" alt="[&#xC138;&#xBBF8;&#xB098; &#xD6C4;&#xAE30;] &#xC6B0;&#xC544;&#xD55C;&#xBAA8;&#xB178;&#xB9AC;&#xC2A4; by &#xBC15;&#xC6A9;&#xAD8C;&#xB2D8;"><span class="kg-bookmark-author">GitHub</span><span class="kg-bookmark-publisher">arawn</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://avatars0.githubusercontent.com/u/74773?s=400&amp;v=4" alt="[&#xC138;&#xBBF8;&#xB098; &#xD6C4;&#xAE30;] &#xC6B0;&#xC544;&#xD55C;&#xBAA8;&#xB178;&#xB9AC;&#xC2A4; by &#xBC15;&#xC6A9;&#xAD8C;&#xB2D8;"></div></a></figure><img src="https://hibuz.com/content/images/2020/02/cohesion_coupling.jpeg" alt="[&#xC138;&#xBBF8;&#xB098; &#xD6C4;&#xAE30;] &#xC6B0;&#xC544;&#xD55C;&#xBAA8;&#xB178;&#xB9AC;&#xC2A4; by &#xBC15;&#xC6A9;&#xAD8C;&#xB2D8;"><p>&#xB0B4;&#xC6A9;&#xC744; &#xC624;&#xB7AB;&#xB3D9;&#xC548; &#xAE30;&#xC5B5;&#xD558;&#xAE30; &#xC704;&#xD574; &#xC815;&#xB9AC;&#xD569;&#xB2C8;&#xB2E4;.</p><ul><li><a href="https://image.slidesharecdn.com/building-modular-monoliths-using-spring-200126030839/95/-4-638.jpg?cb=1580008680">4</a> MSA &#xAE30;&#xC220;&#xBD80;&#xCC44;<br>- &#xACF5;&#xC720;&#xB41C; &#xB370;&#xC774;&#xD130; &#xC6D0;&#xBCF8; (shared datastore)<br>- &#xD63C;&#xC7A1;&#xD55C; &#xAE30;&#xB2A5;&#xC218;&#xD589; (messy processing)<br>- &#xB3D9;&#xC2DC;&#xBC30;&#xD3EC; (deployment together)</li><li>&#xC6B0;&#xB9B0; &#xB9C8;&#xC774;&#xD06C;&#xB85C;&#xC11C;&#xBE44;&#xC2A4;&#xC5D0;&#xC11C; &#xBAA8;&#xB178;&#xB9AC;&#xD2F1;&#xC73C;&#xB85C; &#xAC08;&#xC544;&#xD0D4;&#xB2E4;</li><li><a href="https://image.slidesharecdn.com/building-modular-monoliths-using-spring-200126030839/95/-6-638.jpg?cb=1580008680">6</a> &#xBAA8;&#xB178;&#xB9AC;&#xD2F1;&#xC73C;&#xB85C; &#xB418;&#xB3CC;&#xC544;&#xAC00;&#xB294; &#xC5EC;&#xC815;: &#xA0;1) &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xBCC4; &#xAD6C;&#xC870;&#xC815;&#xB9AC; -&gt; 2) &#xC800;&#xC7A5;&#xC18C; &#xBC0F; &#xD504;&#xB85C;&#xC81D;&#xD2B8; &#xD1B5;&#xD569; -&gt; 3) &#xD328;&#xD0A4;&#xC9C0; &#xAD6C;&#xC870; &#xD45C;&#xC900;&#xD654; -&gt; 4) &#xC11C;&#xBE44;&#xC2A4; &#xD1B5;&#xD569;</li><li><a href="https://image.slidesharecdn.com/building-modular-monoliths-using-spring-200126030839/95/-17-638.jpg?cb=1580008680">17</a> &#xC544;&#xD0A4;&#xD14D;&#xCC98; &#xC2A4;&#xD0C0;&#xC77C;&#xC774; &#xBB38;&#xC81C;&#xB97C; &#xD574;&#xACB0;&#xD574; &#xC8FC;&#xC9C0; &#xC54A;&#xACE0; &#xD070; &#xC9C4;&#xD759; &#xB369;&#xC5B4;&#xB9AC;&#xB294; &#xBB34;&#xC5BC; &#xD558;&#xB4E0; &#xB9CC;&#xB4E4; &#xC218; &#xC788;&#xB2E4;. &#xC18C;&#xD504;&#xD2B8;&#xC6E8;&#xC5B4;&#xB294; &#xD0DC;&#xC0DD;&#xC801;&#xC73C;&#xB85C; &#xBCF5;&#xC7A1;&#xD558;&#xB2E4;. &#xC758;&#xB3C4;&#xC801;&#xC73C;&#xB85C; &#xBCF5;&#xC7A1;&#xC131;&#xC744; &#xC81C;&#xC5B4;&#xD558;&#xAE30; &#xC704;&#xD574; &#xB192;&#xC740; &#xC751;&#xC9D1;(Cohesion)&#xB3C4;&#xC640; &#xB0AE;&#xC740; &#xACB0;&#xD569;(Coupling)&#xB3C4;&#xB97C; &#xB2E4;&#xC2A4;&#xB9AC;&#xB294;&#xAC8C; &#xD488;&#xC9C8;&#xC744; &#xACB0;&#xC815;&#xD558;&#xB294; &#xAE30;&#xC900;&#xC774; &#xB41C;&#xB2E4;.</li></ul><blockquote>The devil is in the <strong>detail</strong></blockquote><ul><li><a href="https://image.slidesharecdn.com/building-modular-monoliths-using-spring-200126030839/95/-18-638.jpg?cb=1580008680">18</a> &#xC18C;&#xD504;&#xD2B8;&#xC6E8;&#xC5B4;&#xC758; &#xAC1C;&#xBC1C;&#xC758; &#xBAA9;&#xC801;&#xC740; &#xAE0D;&#xC815;&#xC801;&#xC778; &#xBE44;&#xC9C0;&#xB2C8;&#xC2A4;&#xC758; &#xC601;&#xD5A5;&#xB825;&#xC744; &#xAC00;&#xB2A5;&#xD55C;&#xD55C; &#xBE60;&#xB978;&#xC2DC;&#xAC04;&#xC5D0; &#xC18C;&#xBE44;&#xC790;&#xC5D0;&#xAC8C; &#xC804;&#xB2EC;&#xD558;&#xB294; &#xAC83;&#xC774;&#xB2E4;. &#xC2DC;&#xC7A5;&#xC758; &#xBCC0;&#xD654;&#xB97C; &#xBE60;&#xB974;&#xAC8C; &#xC9C0;&#xC18D;&#xC801;&#xC73C;&#xB85C; &#xC218;&#xC6A9;&#xD558;&#xBA74;&#xC11C; &#xADDC;&#xBAA8;&#xAC00; &#xCEE4;&#xC9C0;&#xB354;&#xB77C;&#xB3C4; &#xC18D;&#xB3C4;&#xAC00; &#xB5A8;&#xC5B4;&#xC9C0;&#xC9C0; &#xC54A;&#xAC8C; &#xAC1C;&#xBC1C;&#xC774; &#xBCC0;&#xD654;&#xC758; &#xC18D;&#xB3C4;&#xB97C; &#xB530;&#xB77C;&#xC7A1;&#xC544;&#xC57C; &#xD55C;&#xB2E4;.</li></ul><blockquote>The goal of software delivery is to <code>minimize the lead time to business impact</code>. Everything else is detail - Dan North</blockquote><blockquote><a href="https://image.slidesharecdn.com/building-modular-monoliths-using-spring-200126030839/95/-27-638.jpg?cb=1580008680">27</a> &#xC88B;&#xC740; &#xC544;&#xD0A4;&#xD14D;&#xCC98;&#xB294; &#xC2DC;&#xC2A4;&#xD15C;&#xC774; &#xBAA8;&#xB178;&#xB9AC;&#xD2F1; &#xAD6C;&#xC870;&#xB85C; &#xD0DC;&#xC5B4;&#xB098;&#xC11C; &#xB2E8;&#xC77C; &#xD30C;&#xC77C;&#xB85C; &#xBC30;&#xD3EC;&#xB418;&#xB354;&#xB77C;&#xB3C4;, &#xC774;&#xD6C4;&#xC5D0;&#xB294; &#xB3C5;&#xB9BD;&#xC801;&#xC73C;&#xB85C; &#xBC30;&#xD3EC; &#xAC00;&#xB2A5;&#xD55C; &#xB2E8;&#xC704;&#xB4E4;&#xC758; &#xC9D1;&#xD569;&#xC73C;&#xB85C; &#xC131;&#xC7A5;&#xD558;&#xACE0;, &#xB610; &#xB3C5;&#xB9BD;&#xC801;&#xC778; &#xC11C;&#xBE44;&#xC2A4;&#xB098; <code>&#xB9C8;&#xC774;&#xD06C;&#xB85C;&#xC11C;&#xBE44;&#xC2A4; &#xC218;&#xC900;&#xAE4C;&#xC9C0; &#xC131;&#xC7A5;&#xD560; &#xC218; &#xC788;&#xB3C4;&#xB85D; &#xB9CC;&#xB4E4;&#xC5B4;&#xC838;&#xC57C;</code> &#xD55C;&#xB2E4;. &#xB610;&#xD55C; &#xC88B;&#xC740; &#xC544;&#xD0A4;&#xD14D;&#xCC98;&#xB77C;&#xBA74; &#xB098;&#xC911;&#xC5D0; &#xC0C1;&#xD669;&#xC774; &#xBC14;&#xB00C;&#xC5C8;&#xC744; &#xB54C; &#xC774; &#xC9C4;&#xD589; &#xBC29;&#xD5A5;&#xC744; &#xAC70;&#xAFB8;&#xB85C; &#xB3CC;&#xB824; &#xC6D0;&#xB798; &#xD615;&#xD0DC;&#xC778; <code>&#xBAA8;&#xB178;&#xB9AC;&#xD2F1; &#xAD6C;&#xC870;&#xB85C; &#xB418;&#xB3CC;&#xB9B4; &#xC218;&#xB3C4; &#xC788;&#xC5B4;&#xC57C;</code> &#xD55C;&#xB2E4;. - &#xB85C;&#xBC84;&#xD2B8; C. &#xB9C8;&#xD2F4;(Robert C. Martin)&#xC758; &#xC800;&#xC11C; <a href="https://blog.insightbook.co.kr/2019/08/08/%ED%81%B4%EB%A6%B0-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98/" rel="nofollow">&#xD074;&#xB9B0; &#xC544;&#xD0A4;&#xD14D;&#xCC98;</a></blockquote><ul><li><a href="https://youtu.be/SrQeIz3gXZg?t=2810">28</a> &#xC720;&#xC5F0;&#xD55C; &#xC2DC;&#xC2A4;&#xD15C;&#xC740; &#xB450;&#xAC00;&#xC9C0;&#xAC00; &#xD544;&#xC694;<br>- &#xD63C;&#xB3C8;&#xC5D0;&#xC11C; &#xC9C8;&#xC11C;&#xB85C; &#xAC00;&#xB294; &#xBAA8;&#xB4C8;&#xD654;: &#xACBD;&#xACC4;&#xB97C; &#xCCD0;&#xC11C; &#xBCF5;&#xC7A1;&#xC131;&#xC744; &#xC904;&#xC5EC;&#xC904; &#xC218; &#xC788;&#xB294; &#xB3C4;&#xAD6C;&#xC778; &#xBAA8;&#xB4C8;&#xC744; &#xAD6C;&#xC131;&#xD558;&#xACE0; &#xD611;&#xB825;&#xC2DC;&#xD0A4;&#xB294; &#xAC83;<br>- &#xBCC0;&#xACBD;&#xC744; &#xC218;&#xC6A9;&#xD560; &#xC218; &#xC788;&#xB294; &#xC18C;&#xD504;&#xD2B8;&#xC6E8;&#xC5B4; &#xC544;&#xD0A4;&#xD14D;&#xCC98;: &#xAD00;&#xC2EC;&#xC0AC;&#xC758; &#xBD84;&#xB9AC;&#xB97C; &#xD1B5;&#xD574; &#xC560;&#xD50C;&#xB9AC;&#xCF00;&#xC774;&#xC158; &#xD575;&#xC2EC;(&#xB0B4;&#xBD80; - &#xB3C4;&#xBA54;&#xC778; &#xC601;&#xC5ED;)&#xC744; &#xAE30;&#xC220;&#xC801;&#xC778; &#xBD80;&#xBD84;(&#xC678;&#xBD80; - &#xC778;&#xD504;&#xB77C;&#xC2A4;&#xD2B8;&#xB7ED;&#xCCD0; &#xC601;&#xC5ED;)&#xACFC; &#xBD84;&#xB9AC;&#xC2DC;&#xCF1C; &#xC678;&#xBD80;&#xC5D0;&#xC11C; &#xB0B4;&#xBD80;&#xC5D0; &#xC758;&#xC874;&#xD558;&#xB294; &#xB2E8;&#xBC29;&#xD5A5; &#xC758;&#xC874;&#xAD00;&#xACC4; &#xD615;&#xC131; &#xBC0F; &#xC678;&#xBD80;&#xB294; &#xAD00;&#xC2EC;&#xC0AC;&#xC5D0; &#xB9DE;&#xAC8C; &#xC27D;&#xAC8C; &#xBCC0;&#xACBD; &#xAC00;&#xB2A5;&#xD55C; &#xAD6C;&#xC870;</li><li>&#xACC4;&#xCE35; &#xAD6C;&#xC870;&#xB85C; &#xBAA8;&#xB4C8;&#xD654;: &#xADDC;&#xBAA8;&#xAC00; &#xCEE4;&#xC9C0;&#xBA74; &#xACC4;&#xCE35; &#xB0B4;&#xBD80;&#xC758; &#xBCF5;&#xC7A1;&#xB3C4;&#xAC00; &#xC99D;&#xAC00; &#xD558;&#xBBC0;&#xB85C; &#xB3C4;&#xBA54;&#xC778;&#xC744; &#xAE30;&#xBC18;&#xC73C;&#xB85C; &#xC0C1;&#xC704; &#xACBD;&#xACC4;&#xB97C; &#xB9CC;&#xB4E4;&#xACE0; &#xB0B4;&#xBD80;&#xB97C; &#xACC4;&#xCE35;&#xC758; &#xAD6C;&#xC870;&#xB85C; &#xB9CC;&#xB4E0;&#xB2E4;.</li><li>&#xC758;&#xC874;&#xC131; &#xAD00;&#xB9AC;&#xB85C; &#xB290;&#xC2A8;&#xD558;&#xAC8C; &#xACB0;&#xD569;&#xB41C; &#xBAA8;&#xB4C8; &#xC124;&#xACC4;&#xD558;&#xAE30; (<a href="https://www.slideshare.net/baejjae93/ss-151545329">&#xC6B0;&#xC544;&#xD55C; &#xAC1D;&#xCCB4;&#xC9C0;&#xD5A5; &#xCC38;&#xACE0;</a>)</li><li>&#xC804;&#xB7B5;&#xC801;&#xC73C;&#xB85C; &#xC2DC;&#xC2A4;&#xD15C; &#xD1B5;&#xD569;&#xC744; &#xB3D5;&#xB294; &#xCEE8;&#xD14D;&#xC2A4;&#xD2B8; &#xB9E4;&#xD551;</li><li><a href="https://youtu.be/SrQeIz3gXZg?t=3964">42</a> &#xBAA8;&#xB4C8;&#xC0AC;&#xC774; &#xACBD;&#xACC4;&#xB97C; &#xB118;&#xC5B4;&#xC624;&#xC9C0; &#xBABB;&#xD558;&#xAC8C; &#xC120;&#xAE0B;&#xAE30;</li><li>&#xC801;&#xC808;&#xD55C; &#xAC00;&#xC2DC;&#xC131;&#xC73C;&#xB85C; &#xBAA8;&#xB4C8; &#xBCF4;&#xD638;&#xD558;&#xAE30;</li><li>&#xBA40;&#xD2F0;&#xD504;&#xB85C;&#xC81D;&#xD2B8; &#xAD6C;&#xC131;&#xC744; &#xD1B5;&#xD574; &#xC758;&#xC874;&#xC131; &#xBD84;&#xB9AC;&#xD558;&#xAE30;</li><li>&#xBAA8;&#xB4C8; &#xC790;&#xC728;&#xC131;&#xC744; &#xC9C0;&#xCF1C;&#xC8FC;&#xB294; &#xCEE8;&#xD14D;&#xC2A4;&#xD2B8; &#xACBD;&#xACC4; &#xAD6C;&#xC131;&#xD558;&#xAE30;</li><li>&#xCEE8;&#xD14D;&#xC2A4;&#xD2B8; &#xACC4;&#xCE35; &#xAD6C;&#xC870;&#xB85C; &#xBAA8;&#xB4C8;&#xC744; &#xACA9;&#xB9AC;&#xD558;&#xAE30;</li><li>&#xCEE8;&#xD14D;&#xC2A4;&#xD2B8; &#xC124;&#xC815; &#xBAA8;&#xB4C8;&#xD654;</li><li>&#xC2DC;&#xC2A4;&#xD15C; &#xBD84;&#xB9AC;&#xC640; &#xB3C5;&#xB9BD;&#xC801;&#xC778; &#xC11C;&#xBE44;&#xC2A4;&#xB85C; &#xC131;&#xC7A5;&#xD558;&#xAE30;</li><li>&#xC18C;&#xD504;&#xD2B8;&#xC6E8;&#xC5B4; &#xC720;&#xC9C0;&#xD558;&#xB294; &#xB3D9;&#xC548; &#xB3D9;&#xC791; &#xC2DC;&#xD0A4;&#xAC8C; &#xB9CC;&#xB4DC;&#xB294; &#xAC8C; &#xC544;&#xB2C8;&#xB77C; &#xB354;&#xC6B1; &#xC720;&#xC6A9;&#xD558;&#xAC8C; &#xC4F0;&#xC774;&#xAC8C; &#xB9CC;&#xB4DC;&#xB294;&#xAC8C; &#xBAA9;&#xC801; - &#xBCC0;&#xACBD;&#xC744; &#xBE60;&#xB974;&#xAC8C; &#xC218;&#xC6A9;, &#xBE44;&#xC9C0;&#xB2C8;&#xC2A4;&#xB97C; &#xCD5C;&#xB300;&#xD55C; &#xBE60;&#xB974;&#xAC8C; &#xC804;&#xB2EC;</li></ul><blockquote>software maintenance is not &apos;keep it <code>working</code> like before&apos; It is &apos;keep it being <code>useful</code> in a changing world. - Jessica Keer, Atomist</blockquote>]]></content:encoded></item><item><title><![CDATA[인증서 자동갱신 되는 평생 무료 블로그 운영하기 (3)]]></title><description><![CDATA[lets encrypt 인증서를 다운로드 받고 ghost docker-compose 설정을 추가 및 nginx app.conf 파일을 수정하여 설정을 마무리 합니다.]]></description><link>https://hibuz.com/https-ghost-blog-3/</link><guid isPermaLink="false">5e50dd558756e50001461133</guid><category><![CDATA[blog]]></category><category><![CDATA[ghost]]></category><category><![CDATA[oracle cloud]]></category><dc:creator><![CDATA[Hibuz]]></dc:creator><pubDate>Mon, 24 Feb 2020 03:00:00 GMT</pubDate><media:content url="https://static.ghost.org/v3.0.0/images/app-integrations.png" medium="image"/><content:encoded><![CDATA[<h2 id="1-">1. &#xC778;&#xC99D;&#xC11C; &#xBC1C;&#xAE09;</h2><img src="https://static.ghost.org/v3.0.0/images/app-integrations.png" alt="&#xC778;&#xC99D;&#xC11C; &#xC790;&#xB3D9;&#xAC31;&#xC2E0; &#xB418;&#xB294; &#xD3C9;&#xC0DD; &#xBB34;&#xB8CC; &#xBE14;&#xB85C;&#xADF8; &#xC6B4;&#xC601;&#xD558;&#xAE30; (3)"><p>&#xC124;&#xC815;&#xD30C;&#xC77C; &#xB2E4;&#xC6B4;&#xB85C;&#xB4DC;</p><pre><code class="language-bash">$ git clone https://github.com/hibuz/nginx-certbot.git</code></pre><p>&#xAC1C;&#xBC1C; PC &#xC5D0;&#xC11C; sshcode &#xC2E4;&#xD589;</p><pre><code class="language-zsh">$ sshcode ubuntu@hibuz.com</code></pre><p>nginx-certbot &#xD3F4;&#xB354;&#xB97C; &#xC5F4;&#xC5B4;&#xC11C; <a href="https://github.com/hibuz/nginx-certbot/blob/hibuz/init-letsencrypt.sh">init-letsencrypt.sh</a> &#xD30C;&#xC77C;&#xACFC; data/nginx/<a href="https://github.com/hibuz/nginx-certbot/blob/hibuz/data/nginx/app.conf">app.conf</a> &#xD30C;&#xC77C;&#xC744; &#xC790;&#xC2E0;&#xC758; &#xB3C4;&#xBA54;&#xC778;&#xC5D0; &#xB9DE;&#xAC8C; &#xBCC0;&#xACBD;&#xD569;&#xB2C8;&#xB2E4;.</p><figure class="kg-card kg-image-card"><img src="https://hibuz.com/content/images/2020/02/image-12.png" class="kg-image" alt="&#xC778;&#xC99D;&#xC11C; &#xC790;&#xB3D9;&#xAC31;&#xC2E0; &#xB418;&#xB294; &#xD3C9;&#xC0DD; &#xBB34;&#xB8CC; &#xBE14;&#xB85C;&#xADF8; &#xC6B4;&#xC601;&#xD558;&#xAE30; (3)" loading="lazy"></figure><figure class="kg-card kg-code-card"><pre><code class="language-text">domains=(example.org www.example.org)
email=&quot;&quot; # Adding a valid address is strongly recommended</code></pre><figcaption>init-letsencrypt.sh &#xBCC0;&#xACBD;&#xD560; &#xB0B4;&#xC6A9;</figcaption></figure><figure class="kg-card kg-code-card"><pre><code class="language-config">server {
    listen 80;
    server_name hibuz.com; #&lt;- &#xC5EC;&#xAE30;
    server_tokens off;
   ...
}

server {
    listen 443 ssl;
    server_name hibuz.com; #&lt;- &#xC5EC;&#xAE30;
    server_tokens off;

    ssl_certificate /etc/letsencrypt/live/hibuz.com/fullchain.pem; #&lt;- &#xC5EC;&#xAE30;
    ssl_certificate_key /etc/letsencrypt/live/hibuz.com/privkey.pem; #&lt;- &#xC5EC;&#xAE30;
    ...
}</code></pre><figcaption>app.conf &#xBCC0;&#xACBD;&#xD560; &#xB0B4;&#xC6A9;</figcaption></figure><p>&#xBC18;&#xB4DC;&#xC2DC; <a href="https://hibuz.com/oracle-cloud-network-security-group/">&#xBC29;&#xD654;&#xBCBD; &#xC124;&#xC815;</a> &#xC744; &#xD55C; &#xB2E4;&#xC74C; &#xC778;&#xC99D;&#xC11C; &#xBC1C;&#xAE09; &#xC2A4;&#xD06C;&#xB9BD;&#xD2B8; &#xC2E4;&#xD589;&#xD569;&#xB2C8;&#xB2E4;. &#xBC29;&#xD654;&#xBCBD; &#xBBF8; &#xC124;&#xC815;&#xC2DC; &#xC778;&#xC99D;&#xC11C; &#xBC1C;&#xAE09;&#xC774; &#xC2E4;&#xD328;&#xD569;&#xB2C8;&#xB2E4;. &#xA0;(./init-letsencrypt.sh)</p><figure class="kg-card kg-image-card"><img src="https://hibuz.com/content/images/2020/02/image-13.png" class="kg-image" alt="&#xC778;&#xC99D;&#xC11C; &#xC790;&#xB3D9;&#xAC31;&#xC2E0; &#xB418;&#xB294; &#xD3C9;&#xC0DD; &#xBB34;&#xB8CC; &#xBE14;&#xB85C;&#xADF8; &#xC6B4;&#xC601;&#xD558;&#xAE30; (3)" loading="lazy"></figure><pre><code class="language-sh">ubuntu@hibuz:~/nginx-certbot$ ./init-letsencrypt.sh
### Downloading recommended TLS parameters ...

### Creating dummy certificate for hibuz.com ...
Creating network &quot;nginx-certbot_default&quot; with the default driver
Pulling certbot (certbot/certbot:)...
latest: Pulling from certbot/certbot
c9b1b535fdd9: Pull complete
2cc5ad85d9ab: Pull complete
61614c1a5710: Pull complete
0522d30cde10: Pull complete
407da27a0336: Pull complete
b63a4f7ce95d: Pull complete
ab40fb88f5b7: Pull complete
605448d8e8f9: Pull complete
03958c6b08b9: Pull complete
ceef1228bad4: Pull complete
be9eccf787ef: Pull complete
Digest: sha256:ba624186374c7e10191f7c70702c9dd059c9e9cade0ed8e800625e0aa5f55977
Status: Downloaded newer image for certbot/certbot:latest
Generating a RSA private key
............+++++
.+++++
writing new private key to &apos;/etc/letsencrypt/live/hibuz.com/privkey.pem&apos;
-----
failed to resize tty, using default size

### Starting nginx ...
Pulling nginx (nginx:1.17-alpine)...
1.17-alpine: Pulling from library/nginx
4167d3e14976: Pull complete
db94a93dfca0: Pull complete
Digest: sha256:9e81b8f9cef5a095f892183688798a5b2c368663276aa0f2be4b1cd283ace53d
Status: Downloaded newer image for nginx:1.17-alpine
Creating nginx-certbot_nginx_1 ... done

### Deleting dummy certificate for hibuz.com ...
failed to resize tty, using default size

### Requesting Let&apos;s Encrypt certificate for hibuz.com ...
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator webroot, Installer None

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let&apos;s Encrypt project and the non-profit
organization that develops Certbot? We&apos;d like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for hibuz.com
Using the webroot path /var/www/certbot for all unmatched domains.
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/hibuz.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/hibuz.com/privkey.pem
   Your cert will expire on 2020-05-26. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   &quot;certbot renew&quot;
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let&apos;s Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le


### Reloading nginx ...
2020/02/26 01:54:49 [notice] 10#10: signal process started

ubuntu@hibuz:~/nginx-certbot$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                      NAMES
775647951ef3        nginx:1.17-alpine   &quot;/bin/sh -c &apos;while :&#x2026;&quot;   6 minutes ago       Up 6 minutes        0.0.0.0:80-&gt;80/tcp, 0.0.0.0:443-&gt;443/tcp   nginx-certbot_nginx_1</code></pre><p>https &#xC811;&#xC18D;&#xC774; &#xAC00;&#xB2A5;&#xD55C;&#xC9C0; &#xD655;&#xC778;&#xD569;&#xB2C8;&#xB2E4;.</p><figure class="kg-card kg-image-card"><img src="https://hibuz.com/content/images/2020/02/image-14.png" class="kg-image" alt="&#xC778;&#xC99D;&#xC11C; &#xC790;&#xB3D9;&#xAC31;&#xC2E0; &#xB418;&#xB294; &#xD3C9;&#xC0DD; &#xBB34;&#xB8CC; &#xBE14;&#xB85C;&#xADF8; &#xC6B4;&#xC601;&#xD558;&#xAE30; (3)" loading="lazy"></figure><h2 id="2-ghost-">2. Ghost &#xC124;&#xC815;</h2><p>&#xAD6C;&#xB3D9;&#xC911;&#xC778; &#xC778;&#xC99D;&#xC11C; &#xBC1C;&#xAE09;&#xC6A9; &#xCEE8;&#xD14C;&#xC774;&#xB108;&#xB97C; &#xC0AD;&#xC81C;&#xD569;&#xB2C8;&#xB2E4;.</p><pre><code class="language-bash">~/nginx-certbot$ docker-compose down
Stopping nginx-certbot_nginx_1 ... done
Removing nginx-certbot_nginx_1 ... done
Removing network nginx-certbot_default
~/nginx-certbot$</code></pre><p> <a href="https://github.com/hibuz/nginx-certbot/blob/ghost/docker-compose.yml">docker-compose.yml</a> &#xD30C;&#xC77C;&#xC5D0; ghost &#xC815;&#xBCF4;&#xB97C; &#xCD94;&#xAC00;&#xD569;&#xB2C8;&#xB2E4;. (&#xB0B4;&#xC6A9;&#xC911; ghost url &#xD658;&#xACBD;&#xBCC0;&#xC218;&#xB294; &#xBCF8;&#xC778;&#xC5D0; &#xB9DE;&#xAC8C; &#xC218;&#xC815; &#xD544;&#xC694;)</p><figure class="kg-card kg-code-card"><pre><code class="language-yml">version: &apos;3&apos;

services:
  ghost:
    image: ghost:3.7
    restart: always
    container_name: ghost
    network_mode: &quot;bridge&quot;
    volumes:
      - ./data/ghost/content:/var/lib/ghost/content:z
    environment: # this section can be commented to start in dev mode by default
      - url=&quot;https://hibuz.com&quot; # change this
  nginx:
    image: nginx:1.17-alpine
    restart: always
    container_name: nginx
    network_mode: &quot;bridge&quot;
    links:
      - ghost
    volumes:
      - ./data/nginx:/etc/nginx/conf.d
      - ./data/certbot/conf:/etc/letsencrypt
      - ./data/certbot/www:/var/www/certbot
    ports:
      - &quot;80:80&quot;
      - &quot;443:443&quot;
    command: &quot;/bin/sh -c &apos;while :; do sleep 6h &amp; wait $${!}; nginx -s reload; done &amp; nginx -g \&quot;daemon off;\&quot;&apos;&quot;
  certbot:
    image: certbot/certbot
    restart: always
    volumes:
      - ./data/certbot/conf:/etc/letsencrypt
      - ./data/certbot/www:/var/www/certbot
    entrypoint: &quot;/bin/sh -c &apos;trap exit TERM; while :; do certbot renew; sleep 12h &amp; wait $${!}; done;&apos;&quot;</code></pre><figcaption>docker-compose.yml</figcaption></figure><ul><li>network_mode: &quot;bridge&quot; : docker-compose &#xB294; &#xAE30;&#xBCF8;&#xC801;&#xC73C;&#xB85C; &#xBCC4;&#xB3C4;&#xC758; bridge &#xB124;&#xD2B8;&#xC6CC;&#xD06C;&#xB97C; &#xC0DD;&#xC131;&#xD574;&#xC11C; &#xAC01; &#xCEE8;&#xD14C;&#xC774;&#xB108;&#xC5D0; &#xC0DD;&#xC131;&#xD55C; &#xB124;&#xD2B8;&#xC6CC;&#xD06C; &#xB300;&#xC5ED;&#xC758; ip&#xB97C; &#xD560;&#xB2F9;&#xD569;&#xB2C8;&#xB2E4;. network_mode&#xB97C; bridge &#xB85C; &#xC124;&#xC815;&#xD558;&#xBA74; docker run &#xC73C;&#xB85C; &#xC2E4;&#xD589; &#xC2DC;&#xD0A8; &#xCEE8;&#xD14C;&#xC774;&#xB108;&#xC640; &#xAC19;&#xC740; &#xB300;&#xC5ED;&#xC758; ip&#xB85C; &#xC11C;&#xB85C; &#xD1B5;&#xC2E0;&#xC774; &#xAC00;&#xB2A5;&#xD558;&#xBBC0;&#xB85C; &#xD3B8;&#xC758;&#xC0C1; &#xC124;&#xC815;</li><li>restart: always: &#xCEE8;&#xD14C;&#xC774;&#xB108;&#xAC00; &#xBE44;&#xC815;&#xC0C1;&#xC801;&#xC73C;&#xB85C; &#xC885;&#xB8CC;&#xB418;&#xAC70;&#xB098; &#xC11C;&#xBC84;&#xAC00; &#xC7AC;&#xBD80;&#xD305; &#xB418;&#xC5B4;&#xB3C4; &#xCEE8;&#xD14C;&#xC774;&#xB108;&#xB97C; &#xC790;&#xB3D9;&#xC73C;&#xB85C; &#xC2DC;&#xC791;&#xB418;&#xBBC0;&#xB85C; &#xBE14;&#xB85C;&#xADF8; &#xC6B4;&#xC601;&#xC774; &#xD3B8;&#xB9AC;&#xD568;</li><li>container_name: nginx: &#xC790;&#xB3D9; &#xC0DD;&#xC131;&#xB418;&#xB294; &#xC774;&#xB984;&#xC744; &#xC0AC;&#xC6A9;&#xD574;&#xB3C4; &#xB418;&#xC9C0;&#xB9CC; docker restart nginx &#xB85C; app.conf &#xB97C; &#xBCC0;&#xACBD;&#xD558;&#xACE0; &#xC7AC;&#xC2DC;&#xC791;&#xC744; &#xD3B8;&#xD558;&#xAC8C; &#xD558;&#xAC70;&#xB098; docker exec -it nginx sh &#xB85C; &#xCEE8;&#xD14C;&#xC774;&#xB108;&#xC5D0; &#xC811;&#xC18D;&#xD558;&#xAE30;&#xB3C4; &#xC88B;&#xC74C;</li><li>volumes:<br>- ./data/ghost/content:/var/lib/ghost/content:z<br>ghost &#xBC84;&#xC804;&#xC744; &#xC99D;&#xAC00; &#xC2DC;&#xD0A4;&#xAC70;&#xB098; &#xB370;&#xC774;&#xD130;&#xB97C; &#xC27D;&#xAC8C; &#xBC31;&#xC5C5;&#xC774; &#xAC00;&#xB2A5;&#xD558;&#xB3C4;&#xB85D; host &#xB514;&#xB809;&#xD1A0;&#xB9AC;&#xB97C; mount &#xD574;&#xC11C; &#xD30C;&#xC77C;db(sqlite) &#xBC0F; &#xCEE8;&#xD150;&#xCE20;&#xB4F1;&#xC744; &#xAE30;&#xB85D;&#xD569;&#xB2C8;&#xB2E4;. (&#xCEE8;&#xD14C;&#xC774;&#xB108;&#xAC00; &#xC0AD;&#xC81C;&#xB418;&#xC5B4;&#xB3C4; &#xB370;&#xC774;&#xD130;&#xB294; &#xC720;&#xC9C0;) &#xB610;&#xD55C; &#xB370;&#xC774;&#xD130;&#xB97C; &#xC815;&#xAE30;&#xC801;&#xC73C;&#xB85C; S3&#xC5D0; &#xBC31;&#xC5C5;&#xBC1B;&#xB3C4;&#xB85D; &#xD558;&#xB294; &#xC124;&#xC815;&#xD558;&#xB294;&#xBC95; &#xD3EC;&#xC2A4;&#xD305; &#xC608;&#xC815;</li><li>links:<br>- ghost<br>nginx &#xC5D0;&#xC11C; host &#xC774;&#xB984;&#xC73C;&#xB85C; &#xD1B5;&#xC2E0;&#xC774; &#xAC00;&#xB2A5;&#xD558;&#xB3C4;&#xB85D; &#xC124;&#xC815;&#xD569;&#xB2C8;&#xB2E4;. &#xB9CC;&#xC57D; ip&#xB85C; &#xC124;&#xC815;&#xD55C;&#xB2E4;&#xBA74; &#xC0DD;&#xB7B5; &#xAC00;&#xB2A5; &#xA0;(&#xC678;&#xBD80; &#xCEE8;&#xD14C;&#xC774;&#xB108;&#xB97C; reverse proxing &#xD558;&#xB824;&#xBA74; external_links &#xB85C;&#xB3C4; &#xC9C0;&#xC815; &#xAC00;&#xB2A5;)</li></ul><p>data/nginx/<a href="https://github.com/hibuz/nginx-certbot/blob/ghost/data/nginx/app.conf">app.conf</a> &#xC5D0; Reverse proxy &#xC124;&#xC815; &#xCD94;&#xAC00; (&#xB0B4;&#xC6A9;&#xC911; domain &#xC8FC;&#xC18C;&#xB294; &#xBCF8;&#xC778;&#xC5D0; &#xB9DE;&#xAC8C; &#xC218;&#xC815; &#xD544;&#xC694;)</p><figure class="kg-card kg-code-card"><pre><code class="language-config">server {
    listen 80;
    server_name hibuz.com;
    server_tokens off;

    location /.well-known/acme-challenge/ {
        root /var/www/certbot;
    }

    location / {
        return 301 https://$host$request_uri;
    }
}

server {
    listen 443 ssl;
    server_name hibuz.com;
    server_tokens off;

    ssl_certificate /etc/letsencrypt/live/hibuz.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/hibuz.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    location / {
        proxy_pass http://ghost:2368;
        proxy_set_header    Host                $http_host;
        proxy_set_header    X-Real-IP           $remote_addr;
        proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
        proxy_set_header    X-Forwarded-Proto   $scheme;
        client_max_body_size    10m;
    }
}</code></pre><figcaption>app.conf</figcaption></figure><p>ghost&#xB97C; &#xC801;&#xC6A9;&#xD558;&#xAE30; &#xC704;&#xD574; &#xBCC0;&#xACBD;&#xD55C; docker-compose.yml &#xBC0F; app.conf &#xBCC0;&#xACBD;&#xC0AC;&#xD56D; &#xD655;&#xC778;</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://github.com/hibuz/nginx-certbot/commit/d5dc1205d268f8a97f9ca79c482c2b54cc8428aa"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Add ghost &#xB7; hibuz/nginx-certbot@d5dc120</div><div class="kg-bookmark-description">Boilerplate configuration for nginx and certbot with docker-compose - hibuz/nginx-certbot</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://github.githubassets.com/favicon.ico" alt="&#xC778;&#xC99D;&#xC11C; &#xC790;&#xB3D9;&#xAC31;&#xC2E0; &#xB418;&#xB294; &#xD3C9;&#xC0DD; &#xBB34;&#xB8CC; &#xBE14;&#xB85C;&#xADF8; &#xC6B4;&#xC601;&#xD558;&#xAE30; (3)"><span class="kg-bookmark-author">GitHub</span><span class="kg-bookmark-publisher">hibuz</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://avatars1.githubusercontent.com/u/38822671?s=200&amp;v=4" alt="&#xC778;&#xC99D;&#xC11C; &#xC790;&#xB3D9;&#xAC31;&#xC2E0; &#xB418;&#xB294; &#xD3C9;&#xC0DD; &#xBB34;&#xB8CC; &#xBE14;&#xB85C;&#xADF8; &#xC6B4;&#xC601;&#xD558;&#xAE30; (3)"></div></a></figure><p>&#xCEE8;&#xD14C;&#xC774;&#xB108; &#xC2E4;&#xD589; &#xBC0F; &#xD655;&#xC778;</p><pre><code class="language-bash">~/nginx-certbot$ docker-compose up -d

~/nginx-certbot$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                      NAMES
786f28da2ce9        nginx:1.17-alpine   &quot;/bin/sh -c &apos;while :&#x2026;&quot;   9 seconds ago       Up 7 seconds        0.0.0.0:80-&gt;80/tcp, 0.0.0.0:443-&gt;443/tcp   nginx
fc159e7ea05e        ghost:3.7           &quot;docker-entrypoint.s&#x2026;&quot;   12 seconds ago      Up 9 seconds        2368/tcp                                   ghost
283dff7bddf9        certbot/certbot     &quot;/bin/sh -c &apos;trap ex&#x2026;&quot;   12 seconds ago      Up 9 seconds        80/tcp, 443/tcp                            nginx-certbot_certbot_1</code></pre><p>&#xC774;&#xC81C; &#xBE14;&#xB85C;&#xADF8; &#xC124;&#xC815;&#xC774; &#xB05D;&#xB0AC;&#xC2B5;&#xB2C8;&#xB2E4;. &#xAD00;&#xB9AC;&#xC790; &#xACC4;&#xC815;&#xC744; &#xC0DD;&#xC131;&#xD558;&#xACE0; &#xBE14;&#xB85C;&#xADF8;&#xB97C; &#xC2DC;&#xC791;&#xD574; &#xBCF4;&#xC138;&#xC694;~(https://your_domain/ghost)</p><figure class="kg-card kg-image-card"><img src="https://hibuz.com/content/images/2020/02/image-26.png" class="kg-image" alt="&#xC778;&#xC99D;&#xC11C; &#xC790;&#xB3D9;&#xAC31;&#xC2E0; &#xB418;&#xB294; &#xD3C9;&#xC0DD; &#xBB34;&#xB8CC; &#xBE14;&#xB85C;&#xADF8; &#xC6B4;&#xC601;&#xD558;&#xAE30; (3)" loading="lazy"></figure>]]></content:encoded></item></channel></rss>