<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.3.2">Jekyll</generator><link href="https://leediculous.netlify.app//feed.xml" rel="self" type="application/atom+xml" /><link href="https://leediculous.netlify.app//" rel="alternate" type="text/html" /><updated>2023-04-06T00:16:51+00:00</updated><id>https://leediculous.netlify.app//feed.xml</id><title type="html">LeeDiculous</title><subtitle></subtitle><author><name>LeeDiculous</name></author><entry><title type="html">소프트웨어 개발 프로세스</title><link href="https://leediculous.netlify.app//%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4/2023/04/06/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4-%EA%B0%9C%EB%B0%9C-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4/" rel="alternate" type="text/html" title="소프트웨어 개발 프로세스" /><published>2023-04-06T00:00:00+00:00</published><updated>2023-04-06T00:00:00+00:00</updated><id>https://leediculous.netlify.app//%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4/2023/04/06/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4-%EA%B0%9C%EB%B0%9C-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4</id><content type="html" xml:base="https://leediculous.netlify.app//%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4/2023/04/06/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4-%EA%B0%9C%EB%B0%9C-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4/"><![CDATA[<h5 id="️일상에서의-프로세스-의미">❗️일상에서의 프로세스 의미</h5>
<h6 id="프로세스">프로세스</h6>
<p>일을 처리하는 과정 또는 순서이다.</p>
<ul>
  <li>공장에서 자동차, 세탁기 등이 조립되어 완제품이 되는 과정</li>
  <li>TV요리 프로에서 요리사가 맛있는 요리를 만드는 과정</li>
</ul>

<hr />

<h5 id="️프로세스의-정의">❗️프로세스의 정의</h5>
<h6 id="프로세스-1">프로세스</h6>
<ul>
  <li>일이 처리되는 과정이나 공정. 즉, 주어진 일을 해결하기 위한 목적으로 그 순서가 정해져 수행되는 일련의 절차</li>
</ul>

<h6 id="프로세스를-따랐을-때의-효과의-예">프로세스를 따랐을 때의 효과의 예</h6>
<ul>
  <li>요리 레시피 활용하면?</li>
  <li>세탁기 사용설명서를 활용하면?</li>
  <li>화면 지시에 따라 OS를 설치하면?</li>
</ul>

<hr />

<h5 id="️소프트웨어-개발-프로세스1">❗️소프트웨어 개발 프로세스(1)</h5>
<h6 id="소프트웨어-개발에서의-프로세스">소프트웨어 개발에서의 프로세스</h6>
<ul>
  <li>작업순서의 집합 + 제약 조건(일정, 예산, 자원)을 포함하는 일련의 활동
    <ul>
      <li>작업: SW를 개발할 때 일을 수행하는 작은 단위</li>
    </ul>
  </li>
</ul>

<h6 id="좁은-의미의-소프트웨어-개발-프로세스"><code class="language-plaintext highlighter-rouge">좁은 의미</code>의 소프트웨어 개발 프로세스</h6>
<ul>
  <li>SW제품을 개발할 때, 필요한 절차, 과정, 구조</li>
  <li>사용자의 요구사항을 SW시스템으로 구현하기 위한 일련의 활동</li>
</ul>

<h6 id="넓은-의미의-소프트웨어-개발-프로세스"><code class="language-plaintext highlighter-rouge">넓은 의미</code>의 소프트웨어 개발 프로세스</h6>
<ul>
  <li>절차, 구조, 방법, 도구, 참여자까지 모두 포함</li>
  <li>SW개발 목적을 이루는데 필요한 통합적 수단</li>
</ul>]]></content><author><name>LeeDiculous</name></author><category term="[&quot;소프트웨어&quot;]" /><summary type="html"><![CDATA[❗️일상에서의 프로세스 의미 프로세스 일을 처리하는 과정 또는 순서이다. 공장에서 자동차, 세탁기 등이 조립되어 완제품이 되는 과정 TV요리 프로에서 요리사가 맛있는 요리를 만드는 과정]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://leediculous.netlify.app//assets/img/blog/project.webp" /><media:content medium="image" url="https://leediculous.netlify.app//assets/img/blog/project.webp" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Vue.js란?</title><link href="https://leediculous.netlify.app//%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C/2023/04/03/1-vue%EB%9E%80/" rel="alternate" type="text/html" title="Vue.js란?" /><published>2023-04-03T00:00:00+00:00</published><updated>2023-04-03T00:00:00+00:00</updated><id>https://leediculous.netlify.app//%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C/2023/04/03/1-vue%EB%9E%80</id><content type="html" xml:base="https://leediculous.netlify.app//%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C/2023/04/03/1-vue%EB%9E%80/"><![CDATA[<p>Vue.js는 프론트엔드 기술 중 하나입니다. 한 페이지에서 모든 컨텐츠를 보여주는 웹사이트를 <code class="language-plaintext highlighter-rouge">SPA</code>(Single Page Application)이라고 하는데,
이런 동적인 페이지를 쉽게 만들어주는 기술이 Vue.js입니다. jQuery가 있기는 하지만, 좀 더 간단한 방법을 제공하기 위해 개발된 Vue.js 살펴보겠습니다.</p>

<h6 id="공식-문서">공식 문서</h6>
<p><a href="https://kr.vuejs.org/">https://kr.vuejs.org/</a></p>

<h6 id="vuejs의-탄생">Vue.js의 탄생</h6>
<p>Vue.js는 가벼운 소규모 어플리케이션을 만드는 것을 목표로 만들어졌습니다. 중국의 Evan You가 개발하여 2014년에 릴리즈된 새로운 프레임워크입니다. 제작자는 이전에 구글의 Angular JS의 개발팀이었습니다. 그가 Vue.js를 개발한 이유에 대해서는 이렇게 말합니다.</p>

<blockquote>
  <p>Angular의 정말 맘에 드는 부분만 추출하여 가벼운 것을 만들 때 사용할 수 있으면 어떨까?</p>
</blockquote>

<p>그는 심플하고 가벼운 SPA를 만들고 싶었던 것입니다.</p>

<h6 id="vuejs는-데이터와-뷰를-연결해주는-역할">Vue.js는 “데이터와 뷰를 연결해주는 역할”</h6>
<p>Vue.js라는 것은 한마디로 데이터와 뷰를 연결해주는 역할을 합니다. <code class="language-plaintext highlighter-rouge">MVVM</code>(Model-View-ViewMode) 이라는 방식을 기본으로 만들어져 있습니다.  <br />
“<code class="language-plaintext highlighter-rouge">Model</code>(Vue 안에 준비된 데이터)”과 “<code class="language-plaintext highlighter-rouge">View</code>(HTML에서 표시되는 요소)” 그리고 “<code class="language-plaintext highlighter-rouge">ViewModel</code>(View와 Model을 어떻게 연결할까)”로 나누어 생각하는 방식입니다.</p>

<p>MVVM의 구조를 생각할 때는</p>
<ol>
  <li>데이터는 무엇인가? (Model)
    <ul>
      <li>웹페이지에서 바뀌는 부분은 어디인가? 그러기 위해서 필요한 데이터를 생각할 것</li>
    </ul>
  </li>
  <li>표시되는 요소는 무엇인가 (View)
    <ul>
      <li>그 데이터가 HTML의 어느 부분에서 어떤 형식으로 표시되는가 생각할 것</li>
    </ul>
  </li>
  <li>어떤 식으로 연결되는가? (ViewModel)
    <ul>
      <li>HTML의 어디가 조작될 때, 데이터가 어떤 형식으로 변화되는가 생각할 것</li>
    </ul>
  </li>
</ol>

<h6 id="vuejs의-주요-기능">Vue.js의 주요 기능</h6>
<p>Vue.js에는 여러 가지 기능이 있습니다.</p>

<table>
  <thead>
    <tr>
      <th>기능</th>
      <th>서식</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>데이터를 있는 그대로 표시</td>
      <td>{{데이터}}</td>
    </tr>
    <tr>
      <td>요소의 속성을 데이터로 지정</td>
      <td>v-bind</td>
    </tr>
    <tr>
      <td>입력폼과 데이터의 연결</td>
      <td>v-model</td>
    </tr>
    <tr>
      <td>이벤트 연결</td>
      <td>v-on</td>
    </tr>
    <tr>
      <td>조건에 따라 표시</td>
      <td>v-if</td>
    </tr>
    <tr>
      <td>반복해서 표시</td>
      <td>v-for</td>
    </tr>
    <tr>
      <td>데이터를 사용한 계산</td>
      <td>computed</td>
    </tr>
    <tr>
      <td>데이터의 변화 감시</td>
      <td>watch</td>
    </tr>
    <tr>
      <td>표시/비표시에 애니메이션 처리</td>
      <td>transition</td>
    </tr>
    <tr>
      <td>컴포넌트 조립</td>
      <td>component</td>
    </tr>
  </tbody>
</table>

<h6 id="설치해-보기">설치해 보기</h6>
<p>Vue.js를 설치하는 방법에는 “CDN을 사용하는 방법” “다운로드하는 방법” “Vue-cli로 시작하는 방법” 등 여러 가지가 있습니다. “Vue-cli로 시작하는 방법”은 대규모 어플리케이션을 구축할 때 사용하는 방식으로 입문자에게는 권장하지 않으므로, 공식 사이트에 있는 설치 방법을 따라가며 설치하면 되겠습니다.</p>

<p><a href="https://ko.vuejs.org/guide/quick-start.html#creating-a-vue-application">Vue.js 사이트의 설치 페이지</a></p>]]></content><author><name>LeeDiculous</name></author><category term="[&quot;프론트엔드&quot;]" /><category term="vue.js" /><summary type="html"><![CDATA[Vue.js는 프론트엔드 기술 중 하나입니다. 한 페이지에서 모든 컨텐츠를 보여주는 웹사이트를 SPA(Single Page Application)이라고 하는데, 이런 동적인 페이지를 쉽게 만들어주는 기술이 Vue.js입니다. jQuery가 있기는 하지만, 좀 더 간단한 방법을 제공하기 위해 개발된 Vue.js 살펴보겠습니다.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://leediculous.netlify.app//assets/blog/vuejs.png" /><media:content medium="image" url="https://leediculous.netlify.app//assets/blog/vuejs.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">[Vue.js] 라우터란?</title><link href="https://leediculous.netlify.app//%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C/2023/04/03/2-%EB%9D%BC%EC%9A%B0%ED%84%B0%EB%9E%80/" rel="alternate" type="text/html" title="[Vue.js] 라우터란?" /><published>2023-04-03T00:00:00+00:00</published><updated>2023-04-03T00:00:00+00:00</updated><id>https://leediculous.netlify.app//%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C/2023/04/03/2-%EB%9D%BC%EC%9A%B0%ED%84%B0%EB%9E%80</id><content type="html" xml:base="https://leediculous.netlify.app//%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C/2023/04/03/2-%EB%9D%BC%EC%9A%B0%ED%84%B0%EB%9E%80/"><![CDATA[<h5 id="️뷰-라우터-vue-router">❗️뷰 라우터 (Vue Router)</h5>
<p>뷰 라우터는 Vue.js를 이용하여 SPA를 구현할 때 사용하는 Vue.js 라우터입니다. <a href="https://router.vuejs.org/guide/">공식문서-라우터</a></p>

<h6 id="라우터란-router">라우터란? (Router)</h6>
<p>라우터라고 하면 일반적으로 네트워크간에 데이터를 전송하는 장치를 말합니다. 뷰에서 말하는 라우터는 쉽게 말해서 URL에 따라 어떤 페이지를 보여줄지 매핑해주는 라이브러리라고 생각하면 됩니다. <br />
예를 들어 <code class="language-plaintext highlighter-rouge">/home</code> 경로로 요청이 들어왔을 때, <code class="language-plaintext highlighter-rouge">Home.vue</code> 컴포넌트를 화면에 렌더링 하는 명령을 내리는 역할을 수행하는 라이브러리라고 생각할 수 있습니다.  <br />
이때, <code class="language-plaintext highlighter-rouge">/home</code> → <code class="language-plaintext highlighter-rouge">Home.vue</code> 이러한 매핑 정보를 라우트(Route)라고도 합니다.</p>

<h6 id="라우트란route">라우트란?(Route)</h6>
<p>어떤 URL에 대해 어떤 페이지를 표시해야 하는지에 대한 정보</p>

<h5 id="️설치">❗️설치</h5>
<div class="language-zsh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
  npm <span class="nb">install </span>vue-router

</code></pre></div></div>

<h5 id="️시작하기">❗️시작하기</h5>

<h6 id="라우트routes-정의">라우트(routes) 정의</h6>
<p>URL 요청에 대해 어떤 페이지(컴포넌트)를 보여줄지에 대한 매핑 정보를 정의합니다.</p>

<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
  <span class="c1">// src/router/index.js</span>
  <span class="k">import</span> <span class="nx">HomeView</span> <span class="k">from</span> <span class="dl">'</span><span class="s1">@/views/HomeView.vue</span><span class="dl">'</span><span class="p">;</span>
  <span class="k">import</span> <span class="nx">AboutView</span> <span class="k">from</span> <span class="dl">'</span><span class="s1">@/views/AboutView.vue</span><span class="dl">'</span><span class="p">;</span>

  <span class="kd">const</span> <span class="nx">routes</span> <span class="o">=</span> <span class="p">[</span>
    <span class="p">{</span>
      <span class="na">path</span><span class="p">:</span> <span class="dl">'</span><span class="s1">/</span><span class="dl">'</span><span class="p">,</span>
      <span class="na">name</span><span class="p">:</span> <span class="dl">'</span><span class="s1">home</span><span class="dl">'</span><span class="p">,</span>
      <span class="na">component</span><span class="p">:</span> <span class="nx">HomeView</span><span class="p">,</span>
    <span class="p">},</span>
    <span class="p">{</span>
      <span class="na">path</span><span class="p">:</span> <span class="dl">'</span><span class="s1">/about</span><span class="dl">'</span><span class="p">,</span>
      <span class="na">name</span><span class="p">:</span> <span class="dl">'</span><span class="s1">about</span><span class="dl">'</span><span class="p">,</span>
      <span class="na">component</span><span class="p">:</span> <span class="nx">AboutView</span><span class="p">,</span>
    <span class="p">},</span>
  <span class="p">];</span>

</code></pre></div></div>

<h6 id="라우터router-설정">라우터(router) 설정</h6>
<p>라우터를 설정해봅시다.</p>
<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
  <span class="c1">// src/router/index.js</span>
  <span class="k">import</span> <span class="p">{</span> <span class="nx">createRouter</span><span class="p">,</span> <span class="nx">createWebHistory</span> <span class="p">}</span> <span class="k">from</span> <span class="dl">'</span><span class="s1">vue-router</span><span class="dl">'</span><span class="p">;</span>
  <span class="k">import</span> <span class="nx">HomeView</span> <span class="k">from</span> <span class="dl">'</span><span class="s1">@/views/HomeView.vue</span><span class="dl">'</span><span class="p">;</span>
  <span class="k">import</span> <span class="nx">AboutView</span> <span class="k">from</span> <span class="dl">'</span><span class="s1">@/views/AboutView.vue</span><span class="dl">'</span><span class="p">;</span>

  <span class="kd">const</span> <span class="nx">routes</span> <span class="o">=</span> <span class="p">[</span>
    <span class="p">{</span>
      <span class="na">path</span><span class="p">:</span> <span class="dl">'</span><span class="s1">/</span><span class="dl">'</span><span class="p">,</span>
      <span class="na">name</span><span class="p">:</span> <span class="dl">'</span><span class="s1">home</span><span class="dl">'</span><span class="p">,</span>
      <span class="na">component</span><span class="p">:</span> <span class="nx">HomeView</span><span class="p">,</span>
    <span class="p">},</span>
    <span class="p">{</span>
      <span class="na">path</span><span class="p">:</span> <span class="dl">'</span><span class="s1">/about</span><span class="dl">'</span><span class="p">,</span>
      <span class="na">name</span><span class="p">:</span> <span class="dl">'</span><span class="s1">about</span><span class="dl">'</span><span class="p">,</span>
      <span class="na">component</span><span class="p">:</span> <span class="nx">AboutView</span><span class="p">,</span>
    <span class="p">},</span>
  <span class="p">];</span>
  <span class="kd">const</span> <span class="nx">router</span> <span class="o">=</span> <span class="nf">createRouter</span><span class="p">({</span>
    <span class="na">history</span><span class="p">:</span> <span class="nf">createWebHistory</span><span class="p">(</span><span class="dl">'</span><span class="s1">/</span><span class="dl">'</span><span class="p">),</span>
    <span class="nx">routes</span><span class="p">,</span>
  <span class="p">});</span>

  <span class="k">export</span> <span class="k">default</span> <span class="nx">router</span><span class="p">;</span>

</code></pre></div></div>

<p>설정한 라우터 객체를 Vue 인스턴스에 추가해봅니다.</p>

<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
  <span class="k">import</span> <span class="p">{</span> <span class="nx">createApp</span> <span class="p">}</span> <span class="k">from</span> <span class="dl">'</span><span class="s1">vue</span><span class="dl">'</span><span class="p">;</span>

  <span class="k">import</span> <span class="nx">App</span> <span class="k">from</span> <span class="dl">'</span><span class="s1">./App.vue</span><span class="dl">'</span><span class="p">;</span>
  <span class="k">import</span> <span class="nx">router</span> <span class="nx">fomr</span> <span class="dl">'</span><span class="s1">./router</span><span class="dl">'</span><span class="p">;</span>

  <span class="nf">createApp</span><span class="p">(</span><span class="nx">App</span><span class="p">).</span><span class="nf">use</span><span class="p">(</span><span class="nx">router</span><span class="p">).</span><span class="nf">mount</span><span class="p">(</span><span class="dl">'</span><span class="s1">#app</span><span class="dl">'</span><span class="p">);</span>

</code></pre></div></div>

<p><code class="language-plaintext highlighter-rouge">app.use(router)</code>를 호출하면 모든 컴포넌트 내부에서 <code class="language-plaintext highlighter-rouge">$router</code>, <code class="language-plaintext highlighter-rouge">$route</code> 객체에 접근할 수 있습니다.</p>

<h5 id="️네이게이션">❗️네이게이션</h5>
<p>뷰 라우터를 HTML과 JavaScript로 사용하는 방법에 대해 알아보도록 하겠습니다.</p>

<h6 id="html">HTML</h6>

<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
  // src/App.vue
  <span class="nt">&lt;script </span><span class="na">setup</span><span class="nt">&gt;&lt;/script&gt;</span>

  <span class="nt">&lt;template&gt;</span>
    <span class="nt">&lt;nav&gt;</span>
      <span class="nt">&lt;route-link</span> <span class="na">to=</span><span class="s">"/"</span><span class="nt">&gt;</span>Home<span class="nt">&lt;/route-link&gt;</span>
      <span class="nt">&lt;span&gt;</span> | <span class="nt">&lt;/span&gt;</span>
      <span class="nt">&lt;route-link</span> <span class="na">to=</span><span class="s">"/about"</span><span class="nt">&gt;</span>About<span class="nt">&lt;/route-link&gt;</span>
    <span class="nt">&lt;/nav&gt;</span>
    <span class="nt">&lt;main&gt;</span>
      <span class="nt">&lt;route-view&gt;&lt;/route-view&gt;</span>
    <span class="nt">&lt;/main&gt;</span>
  <span class="nt">&lt;/template&gt;</span>

</code></pre></div></div>

<ul>
  <li><code class="language-plaintext highlighter-rouge">&lt;route-link&gt;</code> : Vue Router에서는 페이지를 이동할 때에 일반 <code class="language-plaintext highlighter-rouge">a</code>태그 대신 사용하는 커스텀 컴포넌트인 <code class="language-plaintext highlighter-rouge">&lt;route-link&gt;</code>를 사용하여 다른 페이지 링크를 만들어야 합니다. 이를 통해 <strong>Vue Router는 페이지를 리로딩 하지 않고 URL에 매핑된 페이지를 렌더링</strong>할 수 있습니다. 👍</li>
  <li><code class="language-plaintext highlighter-rouge">&lt;route-view&gt;</code> : <strong>URL에 매핑된 컴포넌트를 화면에 표시</strong>합니다.</li>
</ul>

<h6 id="javascript">JavaScript</h6>
<p>위에서 <code class="language-plaintext highlighter-rouge">router</code>를 설정할 때, <code class="language-plaintext highlighter-rouge">app.use(router)</code>를 호출했습니다. 이렇게 호출 함으로써 모든 자식 컴포넌트에 <code class="language-plaintext highlighter-rouge">router</code>, <code class="language-plaintext highlighter-rouge">route</code> 같은 객체를 사용할 수 있습니다.
이러한 객체는 페이지 이동 또는 현재 활성 라우트(경로 매핑)정보에 접근하는 데 사용할 수 있습니다.</p>

<p><code class="language-plaintext highlighter-rouge">router</code> : 라우터 인스턴스로 JavaScripte에서 다른 페이지(컴포넌트)로 이동할 수 있다.</p>
<ul>
  <li>Options API: this.$router</li>
  <li>Composition API: useRouter()</li>
  <li>template: $router</li>
</ul>

<p><code class="language-plaintext highlighter-rouge">route</code> : 현재 활성 라우트 정보에 접근할 수 있다.(이 속성은 읽기 전용)</p>
<ul>
  <li>Options API: this.$route</li>
  <li>Composition API: useRoute()</li>
  <li>template: $route</li>
</ul>

<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
  <span class="c">&lt;!-- HomeView.vue --&gt;</span>
  <span class="nt">&lt;script </span><span class="na">setup</span><span class="nt">&gt;</span>
  <span class="k">import</span> <span class="p">{</span> <span class="nx">useRoute</span><span class="p">,</span> <span class="nx">useRouter</span> <span class="p">}</span> <span class="k">from</span> <span class="dl">'</span><span class="s1">vue-router</span><span class="dl">'</span><span class="p">;</span>

  <span class="kd">const</span> <span class="nx">router</span> <span class="o">=</span> <span class="nf">useRouter</span><span class="p">();</span>
  <span class="kd">const</span> <span class="nx">route</span> <span class="o">=</span> <span class="nf">useRoute</span><span class="p">();</span>
  <span class="nx">console</span><span class="p">.</span><span class="nf">log</span><span class="p">(</span><span class="dl">'</span><span class="s1">route.name: </span><span class="dl">'</span><span class="p">,</span> <span class="nx">route</span><span class="p">.</span><span class="nx">name</span><span class="p">);</span>
  <span class="nx">console</span><span class="p">.</span><span class="nf">log</span><span class="p">(</span><span class="dl">'</span><span class="s1">route.path: </span><span class="dl">'</span><span class="p">,</span> <span class="nx">route</span><span class="p">.</span><span class="nx">path</span><span class="p">);</span>
  <span class="kd">const</span> <span class="nx">goAboutPage</span> <span class="o">=</span> <span class="p">()</span> <span class="o">=&gt;</span> <span class="nx">router</span><span class="p">.</span><span class="nf">push</span><span class="p">(</span><span class="dl">'</span><span class="s1">/about</span><span class="dl">'</span><span class="p">);</span>
  <span class="nt">&lt;/script&gt;</span>
  <span class="nt">&lt;template&gt;</span>
    <span class="nt">&lt;h1&gt;</span>Home Page<span class="nt">&lt;/h1&gt;</span>
    <span class="nt">&lt;button</span> <span class="err">@</span><span class="na">click=</span><span class="s">"goAboutPage"</span><span class="nt">&gt;</span>About 페이지로 이동<span class="nt">&lt;/button&gt;</span>
  <span class="nt">&lt;/template&gt;</span>

</code></pre></div></div>

<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
  <span class="c">&lt;!-- AboutView.vue --&gt;</span>
  <span class="nt">&lt;script </span><span class="na">setup</span><span class="nt">&gt;&lt;/script&gt;</span>
  <span class="nt">&lt;template&gt;</span>
    <span class="nt">&lt;h1&gt;</span>About Page<span class="nt">&lt;/h1&gt;</span>
    <span class="nt">&lt;ul&gt;</span>
      <span class="nt">&lt;li&gt;</span>$route.name: {{ $route.name }}<span class="nt">&lt;/li&gt;</span>
      <span class="nt">&lt;li&gt;</span>$route.path: {{ $route.path }}<span class="nt">&lt;/li&gt;</span>
    <span class="nt">&lt;/ul&gt;</span>
    <span class="nt">&lt;button</span> <span class="err">@</span><span class="na">click=</span><span class="s">"$router.push('/')"</span><span class="nt">&gt;</span>Home 페이지로 이동<span class="nt">&lt;/button&gt;</span>
  <span class="nt">&lt;/template&gt;</span>
  
</code></pre></div></div>]]></content><author><name>LeeDiculous</name></author><category term="[&quot;프론트엔드&quot;]" /><category term="vue.js" /><summary type="html"><![CDATA[❗️뷰 라우터 (Vue Router) 뷰 라우터는 Vue.js를 이용하여 SPA를 구현할 때 사용하는 Vue.js 라우터입니다. 공식문서-라우터]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://leediculous.netlify.app//assets/blog/vuejs.png" /><media:content medium="image" url="https://leediculous.netlify.app//assets/blog/vuejs.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">쿠버네티스란?</title><link href="https://leediculous.netlify.app//%EC%9D%B8%ED%94%84%EB%9D%BC/2023/04/03/%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4/" rel="alternate" type="text/html" title="쿠버네티스란?" /><published>2023-04-03T00:00:00+00:00</published><updated>2023-04-03T00:00:00+00:00</updated><id>https://leediculous.netlify.app//%EC%9D%B8%ED%94%84%EB%9D%BC/2023/04/03/%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4</id><content type="html" xml:base="https://leediculous.netlify.app//%EC%9D%B8%ED%94%84%EB%9D%BC/2023/04/03/%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4/"><![CDATA[<h5 id="️컨테이너-오케스트레이션">❗️컨테이너 오케스트레이션</h5>
<p>컨테이너 오케스트레이션은 많은 수의 컨테이너를 관리 가능하도록 해주는 도구입니다. <code class="language-plaintext highlighter-rouge">k8s</code>는 컨테이너 오케스트레이션의 가장 대표적인 도구입니다. <br />
k8s는 컨테이너화된 애플리케이션을 배포, 스케일링 및 관리하기 위한 오픈소스 플랫폼입니다.</p>

<p>Kubernetes는 여러 호스트에서 컨테이너화된 애플리케이션을 배포하고, 자원 관리 및 로드 밸런싱, 스토리지 및 네트워킹과 같은 작업을 수행합니다.</p>

<p>Kubernetes는 쿠버네티스 API와 함께 작동하며 사용자가 클러스터를 제어할 수 있도록 합니다. 클러스터는 마스터 노드와 워커 노드로 구성되며, 마스터 노드는 클러스터의 제어 플레인을 관리하고, 
워커 노드는 애플리케이션을 실행합니다.</p>

<p>Kubernetes는 대규모 애플리케이션의 배포 및 관리를 단순화하여 개발자와 운영자가 보다 효율적으로 작업할 수 있도록 지원합니다.</p>

<h5 id="️yaml-문법">❗️YAML 문법</h5>
<p>쿠버네티스의 모든 설정은 <code class="language-plaintext highlighter-rouge">YAML</code> 파일을 사용해서 작성됩니다.</p>

<h6 id="들여쓰기">들여쓰기</h6>
<p>들여쓰기는 기본적으로 2칸 또는 4칸을 지원합니다.</p>

<div class="language-yml highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="na">person</span><span class="pi">:</span>
  <span class="na">name</span><span class="pi">:</span> <span class="s">LeeDiculous</span>
  <span class="na">job</span><span class="pi">:</span> <span class="s">developer</span>
  <span class="na">skills</span><span class="pi">:</span> 
    <span class="pi">-</span> <span class="s">docker</span>
    <span class="pi">-</span> <span class="s">kubernetes</span>

</code></pre></div></div>

<ul>
  <li>배열은 -로 표시합니다.</li>
  <li>Key와 value 사이에는 반드시 빈칸이 필요합니다.</li>
  <li>JSON에 익숙한 사람들을 위한 YAML 변환 사이트도 있습니다. 👉 <a href="https://www.json2yaml.com/">Json2yaml</a></li>
</ul>

<h6 id="데이터-정의map">데이터 정의(map)</h6>
<p>데이터는 key : value 형식으로 정의합니다.</p>

<div class="language-yml highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="na">apiVersion</span><span class="pi">:</span> <span class="s">v1</span>
<span class="na">kind</span><span class="pi">:</span> <span class="s">Pod</span>
<span class="na">metadata</span><span class="pi">:</span>
  <span class="na">name</span><span class="pi">:</span> <span class="s">echo</span>
  <span class="na">labels</span><span class="pi">:</span> 
  <span class="na">type</span><span class="pi">:</span> <span class="s">app</span>
  
</code></pre></div></div>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"apiVersion"</span><span class="p">:</span><span class="w"> </span><span class="s2">"v1"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"kind"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Pod"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"metadata"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"echo"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"labels"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
      </span><span class="nl">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"app"</span><span class="w">
    </span><span class="p">}</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<h5 id="️쿠버네티스-설치">❗️쿠버네티스 설치</h5>
<p>교육 실습은 windows환경에서 진행됐으므로, 따로 macOS 환경 설치법을 찾아 설치하였습니다. <br />
<a href="https://velog.io/@pinion7/macOs-m1-%ED%99%98%EA%B2%BD%EC%97%90%EC%84%9C-kubernetes-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0">macOS m1 환경에서 Kubernetes 시작하기</a></p>]]></content><author><name>LeeDiculous</name></author><category term="[&quot;인프라&quot;]" /><category term="kubernetes" /><summary type="html"><![CDATA[❗️컨테이너 오케스트레이션 컨테이너 오케스트레이션은 많은 수의 컨테이너를 관리 가능하도록 해주는 도구입니다. k8s는 컨테이너 오케스트레이션의 가장 대표적인 도구입니다. k8s는 컨테이너화된 애플리케이션을 배포, 스케일링 및 관리하기 위한 오픈소스 플랫폼입니다.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://leediculous.netlify.app//assets/blog/kubernetes.webp" /><media:content medium="image" url="https://leediculous.netlify.app//assets/blog/kubernetes.webp" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">프로젝트 요구분석</title><link href="https://leediculous.netlify.app//project/2023/04/01/%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%9A%94%EA%B5%AC%EC%82%AC%ED%95%AD/" rel="alternate" type="text/html" title="프로젝트 요구분석" /><published>2023-04-01T00:00:00+00:00</published><updated>2023-04-01T00:00:00+00:00</updated><id>https://leediculous.netlify.app//project/2023/04/01/%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%9A%94%EA%B5%AC%EC%82%AC%ED%95%AD</id><content type="html" xml:base="https://leediculous.netlify.app//project/2023/04/01/%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%9A%94%EA%B5%AC%EC%82%AC%ED%95%AD/"><![CDATA[<p><strong>이 프로젝트는 파기되었습니다.</strong></p>

<hr />
<h5 id="️새로운-프로젝트의-요구사항">❗️새로운 프로젝트의 요구사항</h5>
<h6 id="주제-세탁소">주제: 세탁소</h6>
<ul>
  <li>근처 세탁소를 찾아주고 예약을 제공하는 서비스</li>
  <li>날짜를 등록하고 수거를 선택하면 지정된 날짜에 수거해주고 완료 시, 다시 배달하는 서비스</li>
  <li>옷 종류에 따른 세탁서비스를 추천해주는 기능</li>
</ul>

<p>주어진 요구사항은 위와 같습니다. 이를 토대로 요구분석을 진행해 프로젝트의 전체적인 그림을 그려 보려 합니다.
프로젝트의 볼륨이나 구현의 깊이는 차후 팀원들과 이야기를 나눈 후, 서술하도록 하겠습니다.</p>

<h5 id="️요구사항-분석">❗️요구사항 분석</h5>
<h6 id="명사추출">명사추출</h6>
<ul>
  <li><code class="language-plaintext highlighter-rouge">근처 세탁소</code>를 찾아주고 <code class="language-plaintext highlighter-rouge">예약</code>을 제공하는 서비스</li>
  <li><code class="language-plaintext highlighter-rouge">날짜</code>를 <code class="language-plaintext highlighter-rouge">등록</code>하고 <code class="language-plaintext highlighter-rouge">수거</code>를 선택하면 지정된 날짜에 <code class="language-plaintext highlighter-rouge">수거</code>해주고 완료 시, 다시 <code class="language-plaintext highlighter-rouge">배달</code>하는 서비스</li>
  <li>옷 <code class="language-plaintext highlighter-rouge">종류</code>에 따른 세탁서비스를 <code class="language-plaintext highlighter-rouge">추천</code>해주는 기능</li>
</ul>

<p>명사: 세탁소, 날짜, 종류 <br />
동사: 예약, 등록, 수거, 배달, 추천</p>]]></content><author><name>LeeDiculous</name></author><category term="[&quot;PROJECT&quot;]" /><category term="요구분석" /><category term="세탁소 프로젝트" /><summary type="html"><![CDATA[이 프로젝트는 파기되었습니다.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://leediculous.netlify.app//assets/img/blog/project.webp" /><media:content medium="image" url="https://leediculous.netlify.app//assets/img/blog/project.webp" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">MSA</title><link href="https://leediculous.netlify.app//web/2023/03/31/msa/" rel="alternate" type="text/html" title="MSA" /><published>2023-03-31T00:00:00+00:00</published><updated>2023-03-31T00:00:00+00:00</updated><id>https://leediculous.netlify.app//web/2023/03/31/msa</id><content type="html" xml:base="https://leediculous.netlify.app//web/2023/03/31/msa/"><![CDATA[<h5 id="소프트웨어-아키텍처">소프트웨어 아키텍처</h5>
<ul>
  <li>소프트웨어 아키텍처는 소프트웨어를 구성하는 요소와 요소 간의 관계를 정의한 청사진</li>
  <li>소프트웨어의 전체적인 구성 관계인 구성요소와 구성요소간의 포함 관계, 호출 관계 등을 표현</li>
  <li>소프트웨어 구성 전체를 조망하고 이해하는 데 유용</li>
  <li>소프트웨어 설계자, 개발자, 사용자 등 관련된 이해관계자들이 기술 구조를 이해, 소통 도구 역할</li>
</ul>

<h5 id="모놀리식-아키텍처">모놀리식 아키텍처</h5>
<ul>
  <li>모든 업무 로직이 하나의 애플리케이션 형태로 패키지 되어 서비스</li>
  <li>한 곳에 모인 데이터를 참조하여 서비스하는 것이 일반적인 형태</li>
  <li>비즈니스의 변화가 빠르고 수시로 애플리케이션을 변경해서 적용해야 하는 환경에서는 유연하게 대처할 수 없음</li>
  <li>단일 애플리케이션 중 일부 프로그램만 수정하려 해도 관련 없는 기능들까지 빌드, 배포 해야함</li>
</ul>

<p>위와 같은 문제들로 새롭게 변화하는 환경에 민첩하게 대응할 수 있는 새로운 아키텍처의 필요성이 생겼습니다.</p>

<h5 id="마이크로서비스-아키텍처">마이크로서비스 아키텍처</h5>
<ul>
  <li>아주 작은 단위로 동작하는 서비스가 구동되도록 시스템 및 소프트웨어의 구성과 구성 요소 간의 관계를 정의한 아키텍처</li>
  <li><strong>서비스 중심의 아키텍처</strong>❗️
    <ul>
      <li>단위의 기준이 필요한데 그 기준을 서비스를 중심으로 나누게 된다.</li>
    </ul>
  </li>
  <li>아키텍처의 구성 요소는 서비스와 이를 실행할 수 있게 하는 여러 기술적 환경</li>
</ul>

<p>서비스 중심의 설계를 하면, 객체 중심의 설계를 하게 됩니다. 이는 곧 <code class="language-plaintext highlighter-rouge">데이터 -&gt; 서비스</code> 로 이동함을 의미하고 데이터 모델링의 중요성이 낮아지게 됩니다. 이러한 이유로
NoSQL 등의 DB로 개발을 하게 되는 것 입니다.</p>

<h5 id="서비스지향-아키텍처soa">서비스지향 아키텍처(SOA)</h5>
<ul>
  <li>대규모 시스템에서 업무 처리 단위를 각각의 서비스로 반영하여 데이터 중심이 아닌 전체 시스템을 서비스 중심으로 설계하는 아키텍처 스타일</li>
  <li>서비스의 생성과 활용을 높여서 비즈니스 환경 변화와 업무 변화에 민첩하게 대응</li>
</ul>

<h5 id="soa와-마이크로서비스-아키텍처의-차이점">SOA와 마이크로서비스 아키텍처의 차이점</h5>
<ul>
  <li>비즈니스 변화 대응을 위한 서비스 중심의 아키텍처라는 점에서 공통점</li>
  <li>SOA는 비즈니스 측면에서의 서비스의 재사용성을 강조하는 반면, 마이크로 서비스는 한 가지 작은 서비스에 집중하기를 강조</li>
  <li>SOA는 많은 서비스의 공유를 위해 서비스 채널을 이용하여 서비스를 공유하고 재사용하는데 초점을 맞춘다면, 마이크로서비스는 각각의 서비스가 독립되어 실행되는 것을 지향</li>
</ul>

<h5 id="클라우드-서비스">클라우드 서비스</h5>
<h6 id="iaasinfrastructure-as-a-service">IaaS(Infrastructure as a Service)</h6>
<ul>
  <li>서버를 운영하기 위해서 서버자원 IP, Network, Storage 등 인프라 구축을 제공</li>
  <li>기존 서버 호스팅보다 하드웨어 확장성이 좋고 탄력적이며 빠른 제공을 할 수 있는 가상화 기술</li>
</ul>

<h6 id="paasplatform-as-a-service">PaaS(Platform as a Service)</h6>
<ul>
  <li>서비스를 개발할 수 있는 안정적인 환경(Platform)과 그 환경을 이용하는 프로그램을 개발할 수 있는 API까지 제공</li>
</ul>

<h6 id="saassoftware-as-a-service">SaaS(Software as a Service)</h6>
<ul>
  <li>Cloud 환경에서 동작하는 응용프로그램을 서비스 형태로 제공</li>
  <li>메일서비스, 회원가입서비스 등</li>
</ul>

<h6 id="지속적인-통합과-배포ci-continuous-integration">지속적인 통합과 배포(CI: Continuous Integration)</h6>
<ul>
  <li>지속적인 통합은 개발 환경에서 개발중인 코드를 통합하고 필요에 따라 테스트로 병행 수행하는 일련의 프로세스를 의미</li>
  <li>지속적인 통합을 구성요소로 통합 서버(CI), 소스관리(SCM), 빌드 도구(tool), 테스트 도구</li>
  <li>가장 많이 알려진 빌드 도구로 젠킨스(Jenkins)가 있음</li>
</ul>

<h5 id="데브옵스">데브옵스</h5>
<ul>
  <li>데브옵스(DevOps)는 애플리케이션과 서비스 개발에서 배포 운영까지 빠르게 제공하기 위한 조직의 협업 문화를 의미</li>
  <li>마이크로서비스 개발하고 운영하기 위한 팀의 구성과도 매우 밀접한 관계를 가짐</li>
  <li>개발에서 운영까지를 하나의 파이프라인으로 형성하여 소스코드의 배포가 필요할 때 즉시 반영되는 게 목표</li>
  <li>가장 이상적인 팀 구성 모델은 서비스의 기획, 설계, 개발, 배포 및 운영까지 서비스 생명주기가 한 팀으로 같은 작업 공간에서 결정되고 수행</li>
</ul>

<h5 id="컨테이너">컨테이너</h5>
<ul>
  <li>컨테이너(Container) 의미는 선박에 보다 효율적으로 화물을 수송하기 위해 규격화 된 틀</li>
  <li>격리된 공간으로 잘 봉인되어 컨테이너 내 물건들이 외부의 환경에 영향을 받지 않음</li>
  <li>컨테이너 단위의 독립된 공간 단위로 서비스를 패키지 할 수 있으므로 격리된 만큼 필요한 자원을 할당하여 경량화된 서비스를 구성 할 수 있음</li>
  <li>격리된 공간은 다른 서비스에 영향을 주지 않고 자유롭게 배포할 수 있음</li>
  <li>마아크로서비스는 컨테이너 단위로 묶어서 즉시 필요한 시점에 배포할 수 있는 장점</li>
</ul>

<h5 id="쿠버네티스">쿠버네티스</h5>
<ul>
  <li>2014년 구글에서 컨테이너를 관리하는 오픈소스를 발표</li>
  <li>쿠버네티스는 컨테이너를 대규모로 조율하고 전체 애플리케이션 스택을 관리하는 역할</li>
  <li>여러 개의 컨테이너, 앤드포인트, 데이터를 애플리케이션 스택과 서비스로 묶어는 핵심 요소를 제공해 높은 차원의 오케스트레이션 관리를 제공</li>
</ul>]]></content><author><name>LeeDiculous</name></author><category term="[&quot;WEB&quot;]" /><category term="msa" /><category term="cloud" /><summary type="html"><![CDATA[소프트웨어 아키텍처 소프트웨어 아키텍처는 소프트웨어를 구성하는 요소와 요소 간의 관계를 정의한 청사진 소프트웨어의 전체적인 구성 관계인 구성요소와 구성요소간의 포함 관계, 호출 관계 등을 표현 소프트웨어 구성 전체를 조망하고 이해하는 데 유용 소프트웨어 설계자, 개발자, 사용자 등 관련된 이해관계자들이 기술 구조를 이해, 소통 도구 역할]]></summary></entry><entry><title type="html">맥OS</title><link href="https://leediculous.netlify.app//mac/2023/03/31/%EB%A7%A5%EB%B6%81%EC%84%A4%EC%A0%95/" rel="alternate" type="text/html" title="맥OS" /><published>2023-03-31T00:00:00+00:00</published><updated>2023-03-31T00:00:00+00:00</updated><id>https://leediculous.netlify.app//mac/2023/03/31/%EB%A7%A5%EB%B6%81%EC%84%A4%EC%A0%95</id><content type="html" xml:base="https://leediculous.netlify.app//mac/2023/03/31/%EB%A7%A5%EB%B6%81%EC%84%A4%EC%A0%95/"><![CDATA[<h5 id="맥os의-명령어-단축키-등을-정리해-둘-포스트입니다">맥OS의 명령어, 단축키 등을 정리해 둘 포스트입니다</h5>

<h6 id="열려-있는-포트-목록-확인">열려 있는 포트 목록 확인</h6>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>lsof -PiTCP -sTCP:LISTEN
</code></pre></div></div>

<h6 id="특정-포트-kill-방법">특정 포트 kill 방법</h6>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>#8080 포트 찾기
lsof -i :8080

위에서 조회된 PID를 이용하여 KILL 명령어 수행
kill -9 PID번호
</code></pre></div></div>]]></content><author><name>LeeDiculous</name></author><category term="[&quot;MAC&quot;]" /><category term="단축키" /><category term="명령어" /><summary type="html"><![CDATA[맥OS의 명령어, 단축키 등을 정리해 둘 포스트입니다]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://leediculous.netlify.app//assets/img/blog/mac-terminal-app.webp" /><media:content medium="image" url="https://leediculous.netlify.app//assets/img/blog/mac-terminal-app.webp" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Spring cloud</title><link href="https://leediculous.netlify.app//web/2023/03/31/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C/" rel="alternate" type="text/html" title="Spring cloud" /><published>2023-03-31T00:00:00+00:00</published><updated>2023-03-31T00:00:00+00:00</updated><id>https://leediculous.netlify.app//web/2023/03/31/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C</id><content type="html" xml:base="https://leediculous.netlify.app//web/2023/03/31/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C/"><![CDATA[<p>discoveryservice-application.yml</p>

<div class="language-yml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="na">server</span><span class="pi">:</span>
  <span class="na">port</span><span class="pi">:</span> <span class="m">8761</span>

<span class="na">spring</span><span class="pi">:</span>
  <span class="na">application</span><span class="pi">:</span>
    <span class="na">name</span><span class="pi">:</span> <span class="s">discoveryservice</span>

<span class="na">eureka</span><span class="pi">:</span>
  <span class="na">client</span><span class="pi">:</span>
    <span class="na">register-with-eureka</span><span class="pi">:</span> <span class="kc">false</span>
    <span class="na">fetch-registry</span><span class="pi">:</span> <span class="kc">false</span>
</code></pre></div></div>

<p>kafka 서버 실행하기</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># zookeeper 실행</span>
bin/zookeeper-server-start.sh <span class="nt">-daemon</span> config/zookeeper.properties

<span class="c"># kafka 실행</span>
bin/kafka-server-start.sh <span class="nt">-daemon</span> config/server.properties

<span class="c"># 확인</span>
netstat <span class="nt">-an</span> | <span class="nb">grep </span>2181

<span class="c"># 아래처럼 나오면 성공!</span>
tcp46      0      0  <span class="k">*</span>.2181                 <span class="k">*</span>.<span class="k">*</span>                    LISTEN
</code></pre></div></div>]]></content><author><name>LeeDiculous</name></author><category term="[&quot;WEB&quot;]" /><category term="spring cloud" /><category term="msa" /><summary type="html"><![CDATA[discoveryservice-application.yml]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://leediculous.netlify.app//assets/blog/spring.png" /><media:content medium="image" url="https://leediculous.netlify.app//assets/blog/spring.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">SpringBoot 프로젝트 도커 이미지로 배포하기</title><link href="https://leediculous.netlify.app//web/2023/03/30/springboot%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EB%8F%84%EC%BB%A4%EC%9D%B4%EB%AF%B8%EC%A7%80%EB%A1%9C%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0/" rel="alternate" type="text/html" title="SpringBoot 프로젝트 도커 이미지로 배포하기" /><published>2023-03-30T00:00:00+00:00</published><updated>2023-03-30T00:00:00+00:00</updated><id>https://leediculous.netlify.app//web/2023/03/30/springboot%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EB%8F%84%EC%BB%A4%EC%9D%B4%EB%AF%B8%EC%A7%80%EB%A1%9C%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0</id><content type="html" xml:base="https://leediculous.netlify.app//web/2023/03/30/springboot%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EB%8F%84%EC%BB%A4%EC%9D%B4%EB%AF%B8%EC%A7%80%EB%A1%9C%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0/"><![CDATA[<p>지난 시간에 Vue 프로젝트를 도커 이미지로 만들고 컨테이너에 올려보았습니다. 오늘은 SpringBoot 프로젝트를 이미지 -&gt; 컨테이너로 실행하는 작업을 해보겠습니다.</p>

<p>Dockerfile</p>
<div class="language-zsh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>FROM openjdk:11
COPY target/spring-docker-<span class="k">*</span>.jar app.jar
ENTRYPOINT <span class="o">[</span> <span class="s2">"java"</span>, <span class="s2">"-jar"</span>, <span class="s2">"app.jar"</span> <span class="o">]</span>
</code></pre></div></div>

<p>terminal</p>
<div class="language-zsh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># maven 프로젝트 빌드 -&gt; jar 파일 생성</span>
./mvnw package

java <span class="nt">-jar</span> ./target/spring-docker-0.0.1-APP.jar

docker build <span class="nt">-t</span> leediculous/spring-docker ./

<span class="c"># -d: detach로 실행 이후에 터미널을 계속 사용할 수 있게 해준다.</span>
docker run <span class="nt">-d</span> <span class="nt">-p</span> 8081:8081 leediculous/spring-docker

./mvnw clean package

./mvnw docker:push

docker login
</code></pre></div></div>]]></content><author><name>LeeDiculous</name></author><category term="[&quot;WEB&quot;]" /><category term="docker" /><category term="springboot" /><summary type="html"><![CDATA[지난 시간에 Vue 프로젝트를 도커 이미지로 만들고 컨테이너에 올려보았습니다. 오늘은 SpringBoot 프로젝트를 이미지 -&gt; 컨테이너로 실행하는 작업을 해보겠습니다.]]></summary></entry><entry><title type="html">Cloud Native Application</title><link href="https://leediculous.netlify.app//web/2023/03/30/%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EB%84%A4%EC%9D%B4%ED%8B%B0%EB%B8%8C-%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98/" rel="alternate" type="text/html" title="Cloud Native Application" /><published>2023-03-30T00:00:00+00:00</published><updated>2023-03-30T00:00:00+00:00</updated><id>https://leediculous.netlify.app//web/2023/03/30/%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EB%84%A4%EC%9D%B4%ED%8B%B0%EB%B8%8C-%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98</id><content type="html" xml:base="https://leediculous.netlify.app//web/2023/03/30/%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EB%84%A4%EC%9D%B4%ED%8B%B0%EB%B8%8C-%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98/"><![CDATA[<h6 id="클라우드-네이티브-애플리케이션cna-확장성-유연성-안정성을-보장하는-혁신적인-기술">클라우드 네이티브 애플리케이션(CNA): 확장성, 유연성, 안정성을 보장하는 혁신적인 기술</h6>

<p>클라우드 컴퓨팅의 발전으로 기업들은 점차 CNA를 사용하고 있습니다. CNA는 어떤 특징을 가지고 있고, 또 왜 혁신적인지 살펴보겠습니다.</p>

<h5 id="클라우드-네이티브-애플리케이션의-특징">클라우드 네이티브 애플리케이션의 특징</h5>
<ol>
  <li>마이크로서비스 아키텍처 <code class="language-plaintext highlighter-rouge">MSA</code></li>
  <li>컨테이너 기술 <code class="language-plaintext highlighter-rouge">Docker</code></li>
  <li>자동화된 관리 <code class="language-plaintext highlighter-rouge">CI/CD</code></li>
  <li>분산 데이터 관리</li>
  <li>DevOps 방법론</li>
</ol>

<h5 id="클라우드-네이티브-애플리케이션의-혁신">클라우드 네이티브 애플리케이션의 혁신</h5>
<p>클라우드 네이티브 애플리케이션은 위의 특징들로 인해 다음과 같은 혁신을 제공합니다.</p>
<ul>
  <li>확장성: 마이크로서비스 아키텍처와 컨테이너 기술, 자동화된 관리를 통해 애플리케이션을 쉽게 확장할 수 있습니다.</li>
  <li>유연성: 컨테이너 기술로 인해 애플리케이션을 다양한 환경에서 쉽게 이식할 수 있습니다.</li>
  <li>안정성: 자동화된 관리와 분산 데이터 관리를 통해 애플리케이션의 안정성을 보장할 수 있습니다.</li>
  <li>보안성: 컨테이너 기술과 DevOps 방법론을 통해 애플리케이션의 보안성을 높일 수 있습니다.</li>
</ul>

<p>클라우드 네이티브 애플리케이션은 클라우드 컴퓨팅의 발전으로 인해 중요성이 점차 높아지고 있습니다. 이 기술은 확장성, 유연성, 안정성, 보안성을 보장하며, 비즈니스의 빠른 변화에 대응하기 위한 애플리케이션을 제공합니다. 기업들은 이러한 기술을 적극적으로 활용하여 경쟁 우위를 유지하고 발전해 나가야 합니다.</p>

<h5 id="관련-영상">관련 영상</h5>

<!-- [![Watch the video](https://img.youtube.com/vi/htN2v1OjspE/hqdefault.jpg)](https://youtu.be/htN2v1OjspE) -->

<!-- [![Watch the video](https://img.youtube.com/vi/T-D1KVIuvjA/maxresdefault.jpg)](https://youtu.be/T-D1KVIuvjA) -->]]></content><author><name>LeeDiculous</name></author><category term="[&quot;WEB&quot;]" /><category term="cna" /><category term="trend" /><summary type="html"><![CDATA[클라우드 네이티브 애플리케이션(CNA): 확장성, 유연성, 안정성을 보장하는 혁신적인 기술]]></summary></entry></feed>