<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Why? What? How?</title>
    <link>https://brainbackdoor.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Thu, 12 Mar 2026 19:00:51 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>가그린민트</managingEditor>
    <image>
      <title>Why? What? How?</title>
      <url>https://tistory1.daumcdn.net/tistory/2786802/attach/5a2d454b9b514f56b3334876358753a8</url>
      <link>https://brainbackdoor.tistory.com</link>
    </image>
    <item>
      <title>AWS DNA 2기 후기</title>
      <link>https://brainbackdoor.tistory.com/147</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;오랜만에&amp;nbsp;즐거운&amp;nbsp;시간이었다.&amp;nbsp;회사생활,&amp;nbsp;교육,&amp;nbsp;스터디&amp;nbsp;등을&amp;nbsp;통해&amp;nbsp;얻는&amp;nbsp;즐거움도&amp;nbsp;상당하지만,&amp;nbsp;이건&amp;nbsp;좀&amp;nbsp;뭔가&amp;nbsp;더&amp;nbsp;자극적이다.&lt;br /&gt;얼마전&amp;nbsp;AWS&amp;nbsp;DNA&amp;nbsp;모집&amp;nbsp;공고를&amp;nbsp;보았다.&amp;nbsp;지난&amp;nbsp;해&amp;nbsp;신청을&amp;nbsp;했다가&amp;nbsp;캘린더를&amp;nbsp;보고&amp;nbsp;취소&amp;nbsp;요청을&amp;nbsp;했었던터라,&amp;nbsp;올해는&amp;nbsp;바쁘더라도&amp;nbsp;신청을&amp;nbsp;해야겠다&amp;nbsp;마음&amp;nbsp;먹었다.&amp;nbsp;경쟁률이&amp;nbsp;상당하다고&amp;nbsp;들었고,&amp;nbsp;실제로&amp;nbsp;주변&amp;nbsp;지인들이&amp;nbsp;떨어졌지만&amp;nbsp;나는&amp;nbsp;붙었다.&amp;nbsp;(왜지?!&amp;nbsp; )&lt;br /&gt;&lt;br /&gt;AWS&amp;nbsp;DNA.&amp;nbsp;Digital&amp;nbsp;Native&amp;nbsp;Architects의&amp;nbsp;줄임말로,&amp;nbsp;대략&amp;nbsp;AWS로&amp;nbsp;사고하고&amp;nbsp;문제를&amp;nbsp;해결하는&amp;nbsp;이들을&amp;nbsp;양성하기&amp;nbsp;위한&amp;nbsp;교육인듯&amp;nbsp;싶다.&amp;nbsp;AWS의&amp;nbsp;기능은&amp;nbsp;빠르게&amp;nbsp;업데이트되는데&amp;nbsp;비해&amp;nbsp;현업&amp;nbsp;엔지니어는&amp;nbsp;수동적이다.&amp;nbsp;기존의&amp;nbsp;기술들로도&amp;nbsp;현재의&amp;nbsp;문제를&amp;nbsp;잘&amp;nbsp;해결해나가고&amp;nbsp;있고,&amp;nbsp;특정&amp;nbsp;기술에&amp;nbsp;lock-in&amp;nbsp;되는&amp;nbsp;것에&amp;nbsp;거부감을&amp;nbsp;느끼기&amp;nbsp;때문이다.&amp;nbsp;하지만&amp;nbsp;Public&amp;nbsp;Cloud는&amp;nbsp;상당히&amp;nbsp;안정화되었고,&amp;nbsp;비즈니스&amp;nbsp;핵심&amp;nbsp;가치에&amp;nbsp;집중하기&amp;nbsp;위해서라도&amp;nbsp;관심사를&amp;nbsp;분리할&amp;nbsp;필요가&amp;nbsp;있다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;AWS&amp;nbsp;DNA는&amp;nbsp;AWS를&amp;nbsp;통해&amp;nbsp;해결할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;문제들을&amp;nbsp;체험하게&amp;nbsp;해준다.&amp;nbsp;기술에&amp;nbsp;대한&amp;nbsp;깊이있는&amp;nbsp;학습을&amp;nbsp;전달하기&amp;nbsp;보다,&amp;nbsp;Solutions&amp;nbsp;Architect&amp;nbsp;분들이&amp;nbsp;설계한&amp;nbsp;시나리오대로&amp;nbsp;수행해본다.&amp;nbsp;목적의식이&amp;nbsp;분명하다면,&amp;nbsp;현업에서&amp;nbsp;적용할&amp;nbsp;것들을&amp;nbsp;생각해보고&amp;nbsp;테스트해보기&amp;nbsp;좋은&amp;nbsp;구성으로&amp;nbsp;짜여져있다.&amp;nbsp;즉,&amp;nbsp;'너희는 비즈니스&amp;nbsp;로직에&amp;nbsp;집중해.&amp;nbsp;AWS&amp;nbsp;위에서'라는&amp;nbsp;메시지가&amp;nbsp;곳곳에&amp;nbsp;스며있다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;과정은&amp;nbsp;대략&amp;nbsp;2달&amp;nbsp;정도&amp;nbsp;진행했다.&amp;nbsp;7개의&amp;nbsp;세션과&amp;nbsp;2번의&amp;nbsp;jam&amp;nbsp;대회가&amp;nbsp;있다.&amp;nbsp;&lt;br /&gt;&amp;gt;&amp;nbsp;&lt;a href=&quot;https://pages.awscloud.com/kr-aws-dna-online-reg.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://pages.awscloud.com/kr-aws-dna-online-reg.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1434&quot; data-origin-height=&quot;1452&quot; data-filename=&quot;스크린샷 2021-06-18 오후 2.41.30.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dVAGQR/btq7y3Dxhrf/TaF19Pbq5PkWqECnSCSetK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dVAGQR/btq7y3Dxhrf/TaF19Pbq5PkWqECnSCSetK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dVAGQR/btq7y3Dxhrf/TaF19Pbq5PkWqECnSCSetK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdVAGQR%2Fbtq7y3Dxhrf%2FTaF19Pbq5PkWqECnSCSetK%2Fimg.png&quot; data-origin-width=&quot;1434&quot; data-origin-height=&quot;1452&quot; data-filename=&quot;스크린샷 2021-06-18 오후 2.41.30.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;개인적으로&amp;nbsp;Network에&amp;nbsp;강점이&amp;nbsp;있다고&amp;nbsp;생각했는데,&amp;nbsp;2회차&amp;nbsp;세션은&amp;nbsp;또다른&amp;nbsp;인사이트를&amp;nbsp;주었다.&amp;nbsp;TransitGateway&amp;nbsp;핵심&amp;nbsp;컨셉을&amp;nbsp;이해하고&amp;nbsp;실습해볼&amp;nbsp;수&amp;nbsp;있어서&amp;nbsp;좋았고,&amp;nbsp;GSLB,&amp;nbsp;Network&amp;nbsp;Firewall&amp;nbsp;등&amp;nbsp;서비스를&amp;nbsp;알게&amp;nbsp;되었다.&amp;nbsp;&lt;br /&gt;4회차에 진행했던 실습을 바탕으로 사이드 프로젝트 배포 환경을 구성해보았다. 이번 실습 이후에 spinnaker documents를 보고 직접 구성한 후 부하테스트를 진행하며 리소스 관리도 해보고, 운영도 해보면서 k8s에 대한 이해도 조금 깊어졌다. 다른 세션들도 깊게 몰입해보고 적용해보고 싶었지만 병행하던 스터디와 강의 일정으로 시간을 내기가 어려웠다. 그리고 sagemaker는 기본 지식이 상당히 필요하다는 것을 확인할 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1913&quot; data-origin-height=&quot;536&quot; data-filename=&quot;image.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brdDC9/btq7yhI3duz/Rs6Bj6zfmKOGibEZju9zdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brdDC9/btq7yhI3duz/Rs6Bj6zfmKOGibEZju9zdK/img.png&quot; data-alt=&quot;3팀이었다. 중간 집계에선 1등이었는데.. 허허&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brdDC9/btq7yhI3duz/Rs6Bj6zfmKOGibEZju9zdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrdDC9%2Fbtq7yhI3duz%2FRs6Bj6zfmKOGibEZju9zdK%2Fimg.png&quot; data-origin-width=&quot;1913&quot; data-origin-height=&quot;536&quot; data-filename=&quot;image.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;3팀이었다. 중간 집계에선 1등이었는데.. 허허&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;AWS DNA하면, jam 대회가 기억날 거 같다. jam 대회란 대략 10개 정도의 문제를 주고 팀이 공동으로 수행하는 방식이다. 문제상황은 네트워크, 배포, 보안 등 다양하다. 난이도에 따라 점수가 할당되어 있고, 힌트를 볼수록 차감되는 방식이다. 현황판이 있어 묘한 경쟁의식을 부추긴다. 가령, pem 키를 잃어버렸을 경우 등의 문제상황을 부여하고 각자 계정으로 접속하여 제한된 권한으로 문제가 주어진다. 문제를 해결하여 서버를 띄우면 특정 문자열을 얻을 수 있고 이를 정답으로 제출하면 점수를 얻는 방식으로 진행된다.&lt;br /&gt;2번 모두 우리팀은 2등을 했는데   첫번째는 힌트를 아에 안보고 했던 것이 아쉬웠고, 두번째는 내가 너무 못했던 것이 여운이 남는다. 3~4년 전만해도 AWS를 꽤 안다고 생각했는데, 여전히 사용하던 것들만 사용하다보니 이렇게 되었나 싶다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot; data-filename=&quot;iOS 이미지.jpg&quot; width=&quot;305&quot; height=&quot;406&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cMXxmE/btq7CG1sQ66/LdjAa2EY6M1k64WHlKi7AK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cMXxmE/btq7CG1sQ66/LdjAa2EY6M1k64WHlKi7AK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cMXxmE/btq7CG1sQ66/LdjAa2EY6M1k64WHlKi7AK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcMXxmE%2Fbtq7CG1sQ66%2FLdjAa2EY6M1k64WHlKi7AK%2Fimg.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot; data-filename=&quot;iOS 이미지.jpg&quot; width=&quot;305&quot; height=&quot;406&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;AWS&amp;nbsp;DNA는&amp;nbsp;다양한&amp;nbsp;회사의,&amp;nbsp;다양한&amp;nbsp;경험을&amp;nbsp;한,&amp;nbsp;다양한&amp;nbsp;연차의&amp;nbsp;사람들이&amp;nbsp;모여&amp;nbsp;함께&amp;nbsp;학습하고&amp;nbsp;지식을&amp;nbsp;공유하고&amp;nbsp;문제를&amp;nbsp;해결해가는&amp;nbsp;과정이다.&lt;br /&gt;전반적으로 구성이 참 알차다. 과정 중간중간 이벤트들도 재미있었고, 수강생들의 피드백을 받고 개선하는 모습들도 너무 좋다. 끝나고 받은 후드티도 고퀄이었다!  &amp;zwj;♂️ 몰입하지 못해서 너무 아쉬웠지만, 덕분에 무엇이 부족한지도 생각해볼 수 있는 시간이었다. AWS의 다양한 기술들을 실무 관점에서 생각하고 경험해보고 싶은 분들이라면 적극 추천한다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <author>가그린민트</author>
      <guid isPermaLink="true">https://brainbackdoor.tistory.com/147</guid>
      <comments>https://brainbackdoor.tistory.com/147#entry147comment</comments>
      <pubDate>Fri, 18 Jun 2021 15:11:58 +0900</pubDate>
    </item>
    <item>
      <title>2021년 상반기 회고</title>
      <link>https://brainbackdoor.tistory.com/146</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이제는&amp;nbsp;멈춰버린&amp;nbsp;블로그.&amp;nbsp;회고를&amp;nbsp;통해&amp;nbsp;생존신고를&amp;nbsp;남겨본다.&lt;br /&gt;2021년&amp;nbsp;상반기.&amp;nbsp;여전히&amp;nbsp;글또를&amp;nbsp;시작하지&amp;nbsp;않고&amp;nbsp;있다.&amp;nbsp;&lt;br /&gt;그리고&amp;nbsp;하반기에도&amp;nbsp;시작하지&amp;nbsp;않을&amp;nbsp;계획이다.&lt;br /&gt;2주에&amp;nbsp;한번씩&amp;nbsp;글을&amp;nbsp;쓰기엔&amp;nbsp;시간이&amp;nbsp;부족하다.&lt;br /&gt;이번&amp;nbsp;상반기엔&amp;nbsp;무얼&amp;nbsp;했던걸까&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1.&amp;nbsp;외부&amp;nbsp;강의&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://edu.nextstep.camp/c/VI4PhjPA&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://edu.nextstep.camp/c/VI4PhjPA&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1623646776243&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;인프라 공방&quot; data-og-description=&quot;&quot; data-og-host=&quot;edu.nextstep.camp&quot; data-og-source-url=&quot;https://edu.nextstep.camp/c/VI4PhjPA&quot; data-og-url=&quot;https://edu.nextstep.camp/c/VI4PhjPA&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/4GUlq/hyKyZ8R3vU/0jtXSKpRVajgUirKHeAXtK/img.jpg?width=968&amp;amp;height=565&amp;amp;face=366_356_458_448,https://scrap.kakaocdn.net/dn/bfyixK/hyKy3KbvAu/JevlTcGfxaGitBiii0fjl0/img.jpg?width=968&amp;amp;height=565&amp;amp;face=366_356_458_448&quot;&gt;&lt;a href=&quot;https://edu.nextstep.camp/c/VI4PhjPA&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://edu.nextstep.camp/c/VI4PhjPA&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/4GUlq/hyKyZ8R3vU/0jtXSKpRVajgUirKHeAXtK/img.jpg?width=968&amp;amp;height=565&amp;amp;face=366_356_458_448,https://scrap.kakaocdn.net/dn/bfyixK/hyKy3KbvAu/JevlTcGfxaGitBiii0fjl0/img.jpg?width=968&amp;amp;height=565&amp;amp;face=366_356_458_448');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;인프라 공방&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;edu.nextstep.camp&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인프라공방이&amp;nbsp;1기에&amp;nbsp;이어&amp;nbsp;2기도&amp;nbsp;순항&amp;nbsp;중이다.&amp;nbsp;1기&amp;nbsp;10명으로&amp;nbsp;시작하여&amp;nbsp;2분만에&amp;nbsp;마감되었다.&amp;nbsp;그리고&amp;nbsp;2기는&amp;nbsp;15명에&amp;nbsp;리뷰어&amp;nbsp;한명과&amp;nbsp;함께&amp;nbsp;하고&amp;nbsp;있다.&amp;nbsp;3기는&amp;nbsp;20명으로&amp;nbsp;진행할&amp;nbsp;계획이다.&amp;nbsp;과정을&amp;nbsp;진행하면서&amp;nbsp;강의도&amp;nbsp;다듬어지고&amp;nbsp;미션,&amp;nbsp;리뷰로&amp;nbsp;소통하며&amp;nbsp;내용도&amp;nbsp;풍부해진다.&amp;nbsp;&lt;a href=&quot;https://woowabros.github.io/techcourse/2021/03/15/wootecamp-pro.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;우테캠&amp;nbsp;Pro도&amp;nbsp;1기&lt;/a&gt;에&amp;nbsp;이어&amp;nbsp;2기를&amp;nbsp;진행하고&amp;nbsp;있다.&amp;nbsp;올해&amp;nbsp;3기까지&amp;nbsp;할&amp;nbsp;계획인데&amp;nbsp;3기에는&amp;nbsp;프로젝트&amp;nbsp;미션도&amp;nbsp;추가할&amp;nbsp;계획이다.&amp;nbsp;우형의&amp;nbsp;기대치에&amp;nbsp;맞는&amp;nbsp;인재들이&amp;nbsp;영입되길&amp;nbsp;기대해본다.&amp;nbsp;그&amp;nbsp;외로&amp;nbsp;&lt;a href=&quot;https://edu.nextstep.camp/c/DANlbea1&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;카카오&amp;nbsp;신입사원&amp;nbsp;교육&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;https://www.catch.co.kr/CatchCafe/ProgramView/1027&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;캐치&amp;nbsp;토크&amp;nbsp;콘서트&lt;/a&gt;&amp;nbsp;등을&amp;nbsp;진행했다.&amp;nbsp;이제&amp;nbsp;조금&amp;nbsp;외부&amp;nbsp;강의가&amp;nbsp;익숙해졌다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2.&amp;nbsp;우아한테크코스&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://woowacourse.github.io/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://woowacourse.github.io/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1623646914818&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;우아한테크코스&quot; data-og-description=&quot;우아한테크코스에서 개발자들을 위해 디자인된 강의를 수강해보세요.&quot; data-og-host=&quot;woowacourse.github.io&quot; data-og-source-url=&quot;https://woowacourse.github.io/&quot; data-og-url=&quot;https://woowacourse.github.io/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/QnQaO/hyKy34ukeA/HXrqc3Zd2yasqP9v1HJ4K1/img.jpg?width=270&amp;amp;height=270&amp;amp;face=0_0_270_270&quot;&gt;&lt;a href=&quot;https://woowacourse.github.io/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://woowacourse.github.io/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/QnQaO/hyKy34ukeA/HXrqc3Zd2yasqP9v1HJ4K1/img.jpg?width=270&amp;amp;height=270&amp;amp;face=0_0_270_270');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;우아한테크코스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;우아한테크코스에서 개발자들을 위해 디자인된 강의를 수강해보세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;woowacourse.github.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1)&amp;nbsp;운영&lt;br /&gt;우아한테크코스도&amp;nbsp;이제&amp;nbsp;3기다.&amp;nbsp;올해는&amp;nbsp;프론트엔드&amp;nbsp;과정을&amp;nbsp;오픈했다.&amp;nbsp;인원은&amp;nbsp;총&amp;nbsp;78명으로&amp;nbsp;늘어났고&amp;nbsp;코치와&amp;nbsp;리뷰어들도&amp;nbsp;늘어났다.&amp;nbsp;점진적으로&amp;nbsp;사업이&amp;nbsp;확장되어감에&amp;nbsp;따라&amp;nbsp;소통비용들이&amp;nbsp;발생했고,&amp;nbsp;상반기는&amp;nbsp;이를&amp;nbsp;조정하는&amp;nbsp;시간들이&amp;nbsp;필요했다.&amp;nbsp;과정&amp;nbsp;내에서&amp;nbsp;학습로그,&amp;nbsp;모의&amp;nbsp;면접&amp;nbsp;등의&amp;nbsp;활동을&amp;nbsp;추가했고&amp;nbsp;K-Digital&amp;nbsp;Training&amp;nbsp;사업을&amp;nbsp;운영했다.&amp;nbsp;전자의&amp;nbsp;경우,&amp;nbsp;크루들이&amp;nbsp;본인의&amp;nbsp;현재&amp;nbsp;수준을&amp;nbsp;파악하고&amp;nbsp;알고&amp;nbsp;있는&amp;nbsp;것을&amp;nbsp;자신의&amp;nbsp;용어로&amp;nbsp;표현하여&amp;nbsp;유의미했다는&amp;nbsp;피드백이&amp;nbsp;있었다.&amp;nbsp;후자의&amp;nbsp;경우,&amp;nbsp;우아한형제들로부터&amp;nbsp;경제적&amp;nbsp;자립을&amp;nbsp;일구고&amp;nbsp;크루들의&amp;nbsp;생활비&amp;nbsp;지원에&amp;nbsp;보탬이&amp;nbsp;되었다는데서&amp;nbsp;의미가&amp;nbsp;있다.&amp;nbsp;KDT를&amp;nbsp;주도적으로&amp;nbsp;진행하면서&amp;nbsp;여러&amp;nbsp;협력부서,&amp;nbsp;정부기관들과의&amp;nbsp;소통비용이&amp;nbsp;컸지만&amp;nbsp;결과물을&amp;nbsp;만들어내서&amp;nbsp;개인적으로도&amp;nbsp;나름&amp;nbsp;의미가&amp;nbsp;있었다.&amp;nbsp;앞으로&amp;nbsp;우테코&amp;nbsp;사업을&amp;nbsp;확장하면서&amp;nbsp;여러가지&amp;nbsp;시도도&amp;nbsp;해볼&amp;nbsp;수&amp;nbsp;있으리라.&lt;br /&gt;&lt;a href=&quot;https://v.kakao.com/v/20210514110453693&quot;&gt;https://v.kakao.com/v/20210514110453693&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1623646935136&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;우아한테크코스 방문한 이억원 차관&quot; data-og-description=&quot;[서울=뉴시스]이억원 기획재정부 차관이 14일 청년인력양성과 관련해 서울 송파구 우아한테크코스를 방문, 간담회에서 발언하고 있다. (사진=기획재정부 제공) 2021.05.14. photo@newsis.com *재판매 및 D&quot; data-og-host=&quot;v.kakao.com&quot; data-og-source-url=&quot;https://v.kakao.com/v/20210514110453693&quot; data-og-url=&quot;https://v.kakao.com/v/cZnA8JVDRc&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/rvfyp/hyKy7FPZEH/DwCwYimvpDJukpg9zLNq30/img.jpg?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/bFNDnr/hyKy2kdfQk/ghW3nCNrnXah0gv2bt3SkK/img.jpg?width=640&amp;amp;height=426&amp;amp;face=0_0_640_426&quot;&gt;&lt;a href=&quot;https://v.kakao.com/v/20210514110453693&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://v.kakao.com/v/20210514110453693&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/rvfyp/hyKy7FPZEH/DwCwYimvpDJukpg9zLNq30/img.jpg?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/bFNDnr/hyKy2kdfQk/ghW3nCNrnXah0gv2bt3SkK/img.jpg?width=640&amp;amp;height=426&amp;amp;face=0_0_640_426');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;우아한테크코스 방문한 이억원 차관&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;[서울=뉴시스]이억원 기획재정부 차관이 14일 청년인력양성과 관련해 서울 송파구 우아한테크코스를 방문, 간담회에서 발언하고 있다. (사진=기획재정부 제공) 2021.05.14. photo@newsis.com *재판매 및 D&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;v.kakao.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2)&amp;nbsp;강의&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=_DgpFbcGuAc&quot;&gt;https://www.youtube.com/watch?v=_DgpFbcGuAc&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignLeft&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=_DgpFbcGuAc&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bkC8lz/hyKy0NsriP/Turh01qKYGvwCk7FKsyGr0/img.jpg?width=480&amp;amp;height=360&amp;amp;face=0_0_480_360&quot; data-video-width=&quot;480&quot; data-video-height=&quot;360&quot; data-video-origin-width=&quot;480&quot; data-video-origin-height=&quot;360&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/_DgpFbcGuAc&quot; width=&quot;480&quot; height=&quot;360&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;올해는 레벨1에 SQL 강의 영상을 제공하여 프론트엔드, 백엔드 크루 중 SQL이 약한 크루들이 스스로 학습할 수 있도록 가이드했다. 고마움을 적극적으로 표현했던 크루들과 우형 내 타 팀원분들 덕분에 나름 의미있었던 활동이었다. 레벨2에는 네트워크/인프라 강의 및 배포/협업 미션을 진행헀다. 백엔드 커리큘럼의 변화를 최소화하면서 자연스레 인프라 주제를 경험하여 프로젝트를 진행할 역량을 키우도록 구성했다. 하지만 여전히 강의 내용이 어렵다는 피드백이 있어 좀 더 개선해야겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;3)&amp;nbsp;멘토링&lt;br /&gt;지난&amp;nbsp;해에&amp;nbsp;개인적인&amp;nbsp;일들로&amp;nbsp;크루들에게&amp;nbsp;몰입하지&amp;nbsp;못했다고&amp;nbsp;생각하여&amp;nbsp;올해는&amp;nbsp;데일리미팅부터&amp;nbsp;몇가지&amp;nbsp;시도를&amp;nbsp;했다.&amp;nbsp;그&amp;nbsp;외로도&amp;nbsp;오프라인으로&amp;nbsp;자주&amp;nbsp;마주하고&amp;nbsp;멘토링을&amp;nbsp;진행했고,&amp;nbsp;스터디도&amp;nbsp;몇개&amp;nbsp;참여하여&amp;nbsp;유대관계를&amp;nbsp;형성했다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;3.&amp;nbsp;학습&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://brunch.co.kr/@sunghyunlim/29&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AWS&amp;nbsp;DNA&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;https://github.com/woowacourse-moltudy/elegant-object-study&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;엘레강트&amp;nbsp;오브젝트&amp;nbsp;스터디&lt;/a&gt;를&amp;nbsp;했고&amp;nbsp;둘다&amp;nbsp;유의미한&amp;nbsp;성장을&amp;nbsp;이뤄내지는&amp;nbsp;못했다.&amp;nbsp;뭐,&amp;nbsp;오랜만에&amp;nbsp;스트레칭한&amp;nbsp;정도랄까.&amp;nbsp;인프라공방을&amp;nbsp;준비하며&amp;nbsp;k8s&amp;nbsp;이해는&amp;nbsp;조금&amp;nbsp;깊어졌다.&amp;nbsp;프로그래밍&amp;nbsp;역량을&amp;nbsp;키워보고자&amp;nbsp;했으나,&amp;nbsp;NEXTSTEP&amp;nbsp;개발도&amp;nbsp;의미있는&amp;nbsp;PR은&amp;nbsp;몇개&amp;nbsp;안되고&amp;nbsp;플젝을&amp;nbsp;진행했던&amp;nbsp;것도&amp;nbsp;없다.&amp;nbsp;그래서&amp;nbsp;하반기에&amp;nbsp;플젝을&amp;nbsp;하기위해&amp;nbsp;팀빌딩을&amp;nbsp;했고&amp;nbsp;현재까지는&amp;nbsp;순항중이다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;4.&amp;nbsp;성당&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://pf.kakao.com/_rtxjxjK&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://pf.kakao.com/_rtxjxjK&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1623647598745&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;profile&quot; data-og-title=&quot;송파동성당 청년 연합회&quot; data-og-description=&quot;송파동성당 청년연합회 카카오톡채널입니다.&quot; data-og-host=&quot;pf.kakao.com&quot; data-og-source-url=&quot;https://pf.kakao.com/_rtxjxjK&quot; data-og-url=&quot;http://pf.kakao.com/_rtxjxjK&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cHpNGs/hyKxN94iBS/xQhlKiuc92EsWF202PWwB1/img.jpg?width=296&amp;amp;height=302&amp;amp;face=0_0_296_302,https://scrap.kakaocdn.net/dn/Cs7oL/hyKy4bgxA3/oCbEpAMF19v8LAdlJK2ed0/img.jpg?width=296&amp;amp;height=302&amp;amp;face=0_0_296_302&quot;&gt;&lt;a href=&quot;https://pf.kakao.com/_rtxjxjK&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://pf.kakao.com/_rtxjxjK&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cHpNGs/hyKxN94iBS/xQhlKiuc92EsWF202PWwB1/img.jpg?width=296&amp;amp;height=302&amp;amp;face=0_0_296_302,https://scrap.kakaocdn.net/dn/Cs7oL/hyKy4bgxA3/oCbEpAMF19v8LAdlJK2ed0/img.jpg?width=296&amp;amp;height=302&amp;amp;face=0_0_296_302');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;송파동성당 청년 연합회&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;송파동성당 청년연합회 카카오톡채널입니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;pf.kakao.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;회장이 되었다. 코로나19로 활동하지 않는 청년들에 변화를 주기 위해 몇가지 시도를 하였다. 우선 매주 전례상 의미있는 영상, 메시지 등을 카카오 채널 메시지로 보내고 미사를 중계하고 있다. 말씀나눔, 회의 등을 비대면으로 진행했다. 수녀님이 오시고 부제님이 생기고 학사님도 두분 생겨서 축하식을 진행했다. 단톡방을 만들어 청년들과 코로나19 봉사를 함께 하고 있다. 사순시기에 매주 여러가지 활동들을 진행했고, 십자가의 길, 함께 기도문 만들기도 했다. 성삼일에 미사 복사 및 수난감실 성체조배를 했고 부활시기엔 성경쓰기를 하여 성당에 비치했다. 성가대 모임을 재개했고, 성서모임도 시작하여 매주 진행중이다. 청년 전례학교 초급을 안내하고, 성모성월 편지를 작성하여 성모의밤 행사에 참여했다. 서울대교구 본당임원 연수, 10지구 청년회의 등에 참여하여 우리가 진행하고 있는것들을 공유하고 하반기 일정을 계획했다. 어버이날 행사와 연합회 홍보겸 말씀캔디를 나누었다. (적다보니 많네;)&lt;br /&gt;변화하지&amp;nbsp;않는&amp;nbsp;조직에&amp;nbsp;변화를&amp;nbsp;주기&amp;nbsp;위해서는&amp;nbsp;우선&amp;nbsp;나&amp;nbsp;혼자라도&amp;nbsp;시도해보고&amp;nbsp;관심있는&amp;nbsp;사람이&amp;nbsp;있으면&amp;nbsp;점진적으로&amp;nbsp;방안을&amp;nbsp;제시한다.&lt;br /&gt;이&amp;nbsp;방법은&amp;nbsp;어디서든&amp;nbsp;효과가&amp;nbsp;있는듯하다.&amp;nbsp;아직&amp;nbsp;큰&amp;nbsp;변화가&amp;nbsp;있지는&amp;nbsp;않지만&amp;nbsp;지난해완&amp;nbsp;공기가&amp;nbsp;달라졌음을&amp;nbsp;느낀다.&amp;nbsp;상반기엔&amp;nbsp;기존&amp;nbsp;멤버들의&amp;nbsp;신앙&amp;nbsp;활동의&amp;nbsp;근력을&amp;nbsp;만들었다면&amp;nbsp;하반기엔&amp;nbsp;멤버를&amp;nbsp;늘리기&amp;nbsp;위해&amp;nbsp;몇가지&amp;nbsp;시도를&amp;nbsp;해볼&amp;nbsp;계획이다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;5.&amp;nbsp;결혼생활&amp;nbsp;그리고&amp;nbsp;일상&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;행복하다.&amp;nbsp;일상에&amp;nbsp;평화가&amp;nbsp;찾아왔고,&amp;nbsp;매우&amp;nbsp;안정적이다.&amp;nbsp;우리는&amp;nbsp;여러가지&amp;nbsp;면에서&amp;nbsp;건설적인&amp;nbsp;계획들을&amp;nbsp;세우고&amp;nbsp;실천&amp;nbsp;중이다.&amp;nbsp;함께&amp;nbsp;자라고&amp;nbsp;나아가고&amp;nbsp;있고&amp;nbsp;합리적인&amp;nbsp;결정들을&amp;nbsp;하고&amp;nbsp;있다.&amp;nbsp;이&amp;nbsp;소중한&amp;nbsp;시간들을&amp;nbsp;잘&amp;nbsp;키워가야겠다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;* 정리하면&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1558&quot; data-origin-height=&quot;360&quot; data-filename=&quot;스크린샷 2021-06-14 오후 2.46.07.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ytYLG/btq7gWDIjZO/gOJRiUcqe2c5lu6kctLjO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ytYLG/btq7gWDIjZO/gOJRiUcqe2c5lu6kctLjO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ytYLG/btq7gWDIjZO/gOJRiUcqe2c5lu6kctLjO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FytYLG%2Fbtq7gWDIjZO%2FgOJRiUcqe2c5lu6kctLjO1%2Fimg.png&quot; data-origin-width=&quot;1558&quot; data-origin-height=&quot;360&quot; data-filename=&quot;스크린샷 2021-06-14 오후 2.46.07.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;올해&amp;nbsp;상반기도&amp;nbsp;교양,&amp;nbsp;운동,&amp;nbsp;프로그래밍은&amp;nbsp;역시나&amp;nbsp;뒷전이다.&amp;nbsp;&lt;br /&gt;Social&amp;nbsp;Life는&amp;nbsp;오픈소스&amp;nbsp;활동과&amp;nbsp;커뮤니티&amp;nbsp;활동,&amp;nbsp;블로그&amp;nbsp;포스팅을&amp;nbsp;제외하곤&amp;nbsp;목표치를&amp;nbsp;달성했다.&amp;nbsp;&lt;br /&gt;Business도&amp;nbsp;대출상환이&amp;nbsp;힘들기는&amp;nbsp;했으나&amp;nbsp;그&amp;nbsp;외의&amp;nbsp;항목에서&amp;nbsp;의미있는&amp;nbsp;결정들을&amp;nbsp;할&amp;nbsp;수&amp;nbsp;있었다.&lt;br /&gt;DevOps는&amp;nbsp;강의를&amp;nbsp;준비하며&amp;nbsp;역량을&amp;nbsp;약간&amp;nbsp;올렸으나,&amp;nbsp;우테코&amp;nbsp;서비스에&amp;nbsp;반영하지&amp;nbsp;않은&amp;nbsp;점은&amp;nbsp;다소&amp;nbsp;아쉽다.&amp;nbsp;쿠버네티스&amp;nbsp;환경으로&amp;nbsp;배포시&amp;nbsp;다른&amp;nbsp;팀원들이&amp;nbsp;트러블슈팅하기&amp;nbsp;어려울거란&amp;nbsp;판단이&amp;nbsp;서&amp;nbsp;도입하지&amp;nbsp;않았다.&amp;nbsp;다만&amp;nbsp;레벨2&amp;nbsp;제작근로를&amp;nbsp;통해&amp;nbsp;프론트엔드&amp;nbsp;크루들이&amp;nbsp;사용할&amp;nbsp;미션을&amp;nbsp;배포/운영해보았고,&amp;nbsp;크루들이&amp;nbsp;스크립트&amp;nbsp;등을&amp;nbsp;돌려가며&amp;nbsp;부하를&amp;nbsp;주었지만&amp;nbsp;안정적으로&amp;nbsp;운영하였다.&amp;nbsp;역시&amp;nbsp;사전&amp;nbsp;부하테스트는&amp;nbsp;운영자에게&amp;nbsp;심리적&amp;nbsp;안정감을&amp;nbsp;준다.&lt;br /&gt;Health는 지난해와 비슷한 양상을 보인다. 의미가 있는 활동이라면, 지난해 술을 끊었고 올해 커피를 끊었다. 그리고 의도한 것은 아니지만 라면을 먹지 않고 있다. 하지만 그리고 역시나 운동이 필요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서&amp;nbsp;하반기에는&amp;nbsp;&lt;b&gt;Programming과&amp;nbsp;Backend&lt;/b&gt;에 리소스를 집중할 계획이다.&lt;br /&gt;1.&amp;nbsp;사이드&amp;nbsp;프로젝트를&amp;nbsp;진행할&amp;nbsp;계획이다.&amp;nbsp;얼마전&amp;nbsp;다시&amp;nbsp;&lt;a href=&quot;https://www.mensakorea.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;멘사&amp;nbsp;홈페이지&lt;/a&gt; 위원장을&amp;nbsp;맡았다.&amp;nbsp;이번에는&amp;nbsp;리뉴얼을&amp;nbsp;감행해볼&amp;nbsp;계획이다.&amp;nbsp;&lt;br /&gt;2. NEXTSTEP 플랫폼의 테스트 커버리지를 다시 높이고, 몇몇 packages를 리팩토링할 계획이다.&lt;br /&gt;3. 하반기엔 Javascript를 다시 학습해볼 계획이다.&lt;br /&gt;4. 인프라공방을 꾸준히 오픈할 계획이고 우테캠Pro 3기의 프로젝트 과정을 설계할 계획이다.&lt;br /&gt;5.&amp;nbsp;와이프와&amp;nbsp;필라테스를&amp;nbsp;신청했고&amp;nbsp;꾸준히&amp;nbsp;할&amp;nbsp;계획이다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;상반기에&amp;nbsp;고생&amp;nbsp;많았고,&amp;nbsp;하반기에&amp;nbsp;다시&amp;nbsp;재밌는&amp;nbsp;것들&amp;nbsp;좀&amp;nbsp;해보자&lt;/p&gt;</description>
      <category>Log/.daily</category>
      <author>가그린민트</author>
      <guid isPermaLink="true">https://brainbackdoor.tistory.com/146</guid>
      <comments>https://brainbackdoor.tistory.com/146#entry146comment</comments>
      <pubDate>Mon, 14 Jun 2021 15:02:03 +0900</pubDate>
    </item>
    <item>
      <title>2020년 회고</title>
      <link>https://brainbackdoor.tistory.com/144</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;2154&quot; data-origin-height=&quot;1248&quot; data-filename=&quot;스크린샷 2021-01-04 오후 12.44.33.png&quot; width=&quot;603&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rdgUv/btqSDvsS7hY/D8dHSyjTEkiojNlE5moKe1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rdgUv/btqSDvsS7hY/D8dHSyjTEkiojNlE5moKe1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rdgUv/btqSDvsS7hY/D8dHSyjTEkiojNlE5moKe1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrdgUv%2FbtqSDvsS7hY%2FD8dHSyjTEkiojNlE5moKe1%2Fimg.png&quot; data-origin-width=&quot;2154&quot; data-origin-height=&quot;1248&quot; data-filename=&quot;스크린샷 2021-01-04 오후 12.44.33.png&quot; width=&quot;603&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2020년은 안식년이었다. 참 오랜만에 일상을 살아본 것 같다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;얼마전 회사에서는 하반기 본인 평가를, DevC에서 원격회고, 그리고 와이프와 새해 다짐 등을 하고 나서 이 내용을 바탕으로 2020년 회고를 작성해본다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1632&quot; data-origin-height=&quot;872&quot; data-filename=&quot;스크린샷 2021-01-04 오후 1.17.22.png&quot; width=&quot;600&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AqJWy/btqSbaY8VaC/l4hLBLLGC6MRtBdvKxElo1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AqJWy/btqSbaY8VaC/l4hLBLLGC6MRtBdvKxElo1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AqJWy/btqSbaY8VaC/l4hLBLLGC6MRtBdvKxElo1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAqJWy%2FbtqSbaY8VaC%2Fl4hLBLLGC6MRtBdvKxElo1%2Fimg.png&quot; data-origin-width=&quot;1632&quot; data-origin-height=&quot;872&quot; data-filename=&quot;스크린샷 2021-01-04 오후 1.17.22.png&quot; width=&quot;600&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 결혼&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;자세한 내용은 &lt;a href=&quot;https://www.notion.so/brainbackdoor/d1b5e57f715e433ea5bba3ca8bd1f216&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;링크&lt;/a&gt;를 참고해보시길&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;사랑하는 사람을 만나&amp;nbsp;&lt;/span&gt;3월에 연애를 시작하여 199일 째인 2020.10.10에 결혼을 했다. 결혼을 준비해가는 과정에서 158개의 Task를 수행했고, 그 과정에서 스드메 / 가전 / 가구 / 예단 / 예물 / 예복 / 청첩장 / 결혼식 등 지금까지 경험해보지 못했던 다양한 부분에서 결정을 해야 하는 순간들이 있었다. 덕분에 일상을 살아보는 계기가 되었고, 가족에 대해 생각해볼 수 있었다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;와이프를 만나고 가장 변화된 점이 &lt;b&gt;건강에 대한 시각&lt;/b&gt;이다. 그동안에도 먹는 것을 소홀히하지는 않았지만 가족 구성원 모두가 영양소를 이해하고 따져가며 먹는터라, 덕분에 이해의 폭이 넓어졌다. 수면시간의 경우, 20대 이후로 평균 5시간 내외였는데 최근들어 7시간까지 늘어났다. 그리고 연애를 시작한 이후로 술을 끊었다. 때때로 거절하기 어려운 시점들도 있었지만, 아직까지는 일관되게 의사표시를 하고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두번째로 변화된 점은 &lt;b&gt;소비 패턴&lt;/b&gt;이다. 기존에는 불필요한 물건을 하나 안사는 것이 10가지 혜택을 받는 것보다 낫다는 생각을 했었다. 물론 &lt;s&gt;(그 생각에는 지금도 크게 변함은 없다.)&lt;/s&gt; 그러다보니 엔간하면 물건을 사지 않았는데, 생활하는데 필요한 가전이나 도구가 삶의 질과 생산성을 높인다는 것을 경험하는 한 해였던 거 같다. 추가적으로 전세집을 장만하고 나서 자산에 대한 시각이 바뀐 점도 꽤 유의미하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로 &lt;b&gt;삶에 대한 시각&lt;/b&gt;이다. 어떻게 살아가야 하고, 어떻게 관계지어가야 할지, 좋은 영향을 주고 받았다. 덕분에 한동안 불안정했던 심리상태도 정리하는 한해가 되었고, 사회 초년생으로서의 5년을 정리해보는 시간을 가질 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;techcourse.jpeg&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1080&quot; width=&quot;735&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cXDaps/btqSASWkw88/Ip4lW4cUzZCCZYt37vtYn1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cXDaps/btqSASWkw88/Ip4lW4cUzZCCZYt37vtYn1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cXDaps/btqSASWkw88/Ip4lW4cUzZCCZYt37vtYn1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcXDaps%2FbtqSASWkw88%2FIp4lW4cUzZCCZYt37vtYn1%2Fimg.jpg&quot; data-filename=&quot;techcourse.jpeg&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1080&quot; width=&quot;735&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 우아한테크코스&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2019년도에 이어 우아한테크코스 2기를 진행했다. 개인적으로는 프로젝트, 정규직 전환, 온라인 강의, 외부 강의, K-Digital Training 등이 기억에 남는다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;강의 컨텐츠의 경우, Java8, SQL, 네트워크 등의 강의 컨텐츠 품질을 개선하였고, 유저 스토리 &amp;amp; 사용성, 서비스 구성하기, 배포 강의 및 프로젝트 미션 설계 등을 통해 올해 &lt;b&gt;변화된 커리큘럼에서도 크루들이 프로젝트를 원활히 수행하도록 고민했던 점&lt;/b&gt;이 기억에 남는다. 그리고 안정적인 서비스를 구성하며 필요한 지식들(무중단 배포, 화면 응답 개선, 조회 성능 개선 등)을 정리하며 스터디와 강의를 진행했고, 이런 부분들이&amp;nbsp;&lt;b&gt;&lt;a href=&quot;https://edu.nextstep.camp/s/fNiKB5IE&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;우아한테크캠프 Pro 강의&lt;/a&gt;&lt;/b&gt;를 만드는데 많은 도움이 되었던거 같다. 추가적으로 소프트웨어&amp;nbsp;교육자&amp;nbsp;공개&amp;nbsp;설명회,&amp;nbsp;테크코스&amp;nbsp;강의,&amp;nbsp;사내&amp;nbsp;비개발자&amp;nbsp;대상&amp;nbsp;SQL&amp;nbsp;&amp;amp;&amp;nbsp;제플린&amp;nbsp;강의,&amp;nbsp;SSAFY&amp;nbsp;특강&amp;nbsp;및&amp;nbsp;인터뷰&amp;nbsp;등을&amp;nbsp;&lt;b&gt;온라인&amp;nbsp;강의로&amp;nbsp;진행하고&amp;nbsp;면담을&amp;nbsp;진행하여&amp;nbsp;코로나19에&amp;nbsp;대응한&amp;nbsp;점&lt;/b&gt;이 유의미했다. 그리고 지난&amp;nbsp;1기의&amp;nbsp;공통적인&amp;nbsp;고민이었던&amp;nbsp;'현재&amp;nbsp;학습&amp;nbsp;수준&amp;nbsp;파악',&amp;nbsp;'본인이&amp;nbsp;설계한&amp;nbsp;학습전략에&amp;nbsp;대한&amp;nbsp;불안감'&amp;nbsp;등을&amp;nbsp;해소하고자&amp;nbsp;&lt;a href=&quot;https://github.com/woowacourse/roadmap&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;로드맵&lt;/a&gt;을 작성하였고, 이를 토대로 멘토링을 진행한 결과 보다 직관적인 메시지를 줄 수 있었다고 생각한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2020년엔 ssafy 채용박람회 참여(상/하반기), 사내 SQL 강의, 우테캠 Pro, 카카오 신입사원 교육 및 그 외 몇가지 외부 강의가 있었다. 올해 미뤄뒀던 개인 강의도 오픈할 계획이고 몇몇 강의 컨텐츠도 만들어둘 계획이다. 올해는 지난해 아쉬웠던 온라인 강의에 좀 더 익숙해지는 한해가 되길 바래본다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=rtSN3yZzFYE&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;K-Digital Training&lt;/a&gt;&lt;/b&gt;은 고용노동부와 진행하는 사업이다. 우형이 언제까지 교육에 투자할까, 교육을 확대하기 위한 예산을 얼마나 확보할 수 있을까 고민하기보다 우리가 먼저 안정적인 상황을 만들어보자는 생각에 시작했다. 생각보다 이것저것 해야할 일들이 많았지만, 나름 재미요소도 있다. 앞으로 확대되어 NHN Next와 같은 사례로 남지 않길 바래본다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1500&quot; data-origin-height=&quot;2004&quot; data-filename=&quot;스크린샷 2021-01-04 오후 2.38.35.png&quot; width=&quot;279&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IQVBF/btqSjACSEIV/dzCzMOh5XCHkTstnkGhYJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IQVBF/btqSjACSEIV/dzCzMOh5XCHkTstnkGhYJ0/img.png&quot; data-alt=&quot;크리스마스별이 뜨던 날, 물의 정원에서&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IQVBF/btqSjACSEIV/dzCzMOh5XCHkTstnkGhYJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIQVBF%2FbtqSjACSEIV%2FdzCzMOh5XCHkTstnkGhYJ0%2Fimg.png&quot; data-origin-width=&quot;1500&quot; data-origin-height=&quot;2004&quot; data-filename=&quot;스크린샷 2021-01-04 오후 2.38.35.png&quot; width=&quot;279&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;크리스마스별이 뜨던 날, 물의 정원에서&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2021년에는..&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 올 한해는 Nextstep 플랫폼 개선, 팀 내에서 사용할 몇가지 도구 개발 등 프로그래밍에 집중할 계획이다. 최근 SwiftUI를 시작했는데, 올해 와이프와 함께 앱 런칭도 해보려고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 강의는 개인 강의 (&lt;b&gt;&lt;a href=&quot;https://edu.nextstep.camp/s/GFZBhP49&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Service TMT&lt;/a&gt;&lt;/b&gt;)를 3번정도 오픈할 계획이고 그 외로 &lt;b&gt;&lt;a href=&quot;https://edu.nextstep.camp/s/flT2oSrP&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;사내 SQL 강의&lt;/a&gt;&lt;/b&gt;와 네트워크/CS 관련 영상을 만들어볼 계획이다. 그 외로 테크세미나, 기술 블로그 포스팅 등의 지식 공유도 욕심내보고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 결혼 준비를 하면서 체중이 많이 늘었다. 70kg까지 다이어트를 하는 것이 목표이고, 작년에 이어 올해도 요가를 틈틈히 하려고 한다. 먹는 것은 지금과 같이 유지해가도 좋을 듯하고, 피부관리에 좀 더 신경을 쓸 계획이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;4. 성당에서 전례단장을 시작으로 2021년엔 청년회장까지 하게 되었다. 코로나19로 종교의 위치가 더욱 어려워진 시기에 선한 영향력이 미치도록 올 한해도 노력해보려고 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Log/.daily</category>
      <author>가그린민트</author>
      <guid isPermaLink="true">https://brainbackdoor.tistory.com/144</guid>
      <comments>https://brainbackdoor.tistory.com/144#entry144comment</comments>
      <pubDate>Mon, 4 Jan 2021 14:40:40 +0900</pubDate>
    </item>
    <item>
      <title>2020년 상반기 회고</title>
      <link>https://brainbackdoor.tistory.com/143</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot; data-filename=&quot;50B0ECB7-FA3C-4F72-953F-74CFC94EA2BF.JPG&quot; width=&quot;273&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c44jo3/btqFnEkk4zz/g7wauasZVldgrkbjoUezE1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c44jo3/btqFnEkk4zz/g7wauasZVldgrkbjoUezE1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c44jo3/btqFnEkk4zz/g7wauasZVldgrkbjoUezE1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc44jo3%2FbtqFnEkk4zz%2Fg7wauasZVldgrkbjoUezE1%2Fimg.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot; data-filename=&quot;50B0ECB7-FA3C-4F72-953F-74CFC94EA2BF.JPG&quot; width=&quot;273&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이번&amp;nbsp;상반기&amp;nbsp;회고는&amp;nbsp;하지&amp;nbsp;말까하다가&amp;nbsp;그래도&amp;nbsp;기록으로&amp;nbsp;남겨두는&amp;nbsp;것이&amp;nbsp;좋을&amp;nbsp;거&amp;nbsp;같아&amp;nbsp;작성해본다.&lt;br /&gt;&lt;br /&gt;총평을&amp;nbsp;하자면,&amp;nbsp;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;하나의&amp;nbsp;큰&amp;nbsp;변화가&amp;nbsp;있었고&amp;nbsp;그&amp;nbsp;외&amp;nbsp;대체적으로&lt;span style=&quot;color: #ee2323;&quot;&gt;&amp;nbsp;망했다&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;행복하고&amp;nbsp;뜻&amp;nbsp;깊은&amp;nbsp;시간은&amp;nbsp;분명했으나,&amp;nbsp;이렇게&amp;nbsp;오래&amp;nbsp;지속되기는&amp;nbsp;힘들거라&amp;nbsp;생각한다.&amp;nbsp;그&amp;nbsp;이유에&amp;nbsp;대해서&amp;nbsp;이야기해본다.&lt;br /&gt;&lt;br /&gt;우선&amp;nbsp;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://brainbackdoor.tistory.com/138&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;상반기&amp;nbsp;나의&amp;nbsp;목표&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;는,&amp;nbsp;MySQL&amp;nbsp;내실을&amp;nbsp;다지고&amp;nbsp;컨텐츠로&amp;nbsp;만들어&amp;nbsp;외부&amp;nbsp;강의를&amp;nbsp;하는&amp;nbsp;것이었다.&lt;br /&gt;그렇게&amp;nbsp;시스템&amp;nbsp;아키텍처의&amp;nbsp;한&amp;nbsp;부분씩&amp;nbsp;준비를&amp;nbsp;하여&amp;nbsp;자신이&amp;nbsp;원하는&amp;nbsp;시스템&amp;nbsp;디자인에&amp;nbsp;필요한&amp;nbsp;부분들을&amp;nbsp;취합해서&amp;nbsp;들을&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;커리큘럼을&amp;nbsp;만들고&amp;nbsp;싶었다.&amp;nbsp;하지만&amp;nbsp;공부도&amp;nbsp;안했고,&amp;nbsp;강의&amp;nbsp;준비도&amp;nbsp;안했다.&amp;nbsp;놀았기&amp;nbsp;때문이다.&amp;nbsp;놀아도&amp;nbsp;너무&amp;nbsp;놀았다&amp;nbsp; &lt;br /&gt;1월에&amp;nbsp;시작했던&amp;nbsp;안식월이&amp;nbsp;지금까지&amp;nbsp;계속&amp;nbsp;될&amp;nbsp;줄이야..&amp;nbsp;&lt;br /&gt;&lt;br /&gt;4기에&amp;nbsp;작성했던&amp;nbsp;글또&amp;nbsp;글도&amp;nbsp;보면,&amp;nbsp;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://brainbackdoor.tistory.com/139&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;쿠버네티스&amp;nbsp;네트워킹&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;은&amp;nbsp;이미&amp;nbsp;어느정도&amp;nbsp;정리해뒀던&amp;nbsp;주제였고&amp;nbsp;이마저도&amp;nbsp;쓰다&amp;nbsp;말았다.&amp;nbsp;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://brainbackdoor.tistory.com/140&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;일급컬렉션&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;과&amp;nbsp;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://brainbackdoor.tistory.com/141&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;불변객체&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&amp;nbsp;관련&amp;nbsp;주제는&amp;nbsp;의미가&amp;nbsp;있는&amp;nbsp;주제들이기는&amp;nbsp;하나,&amp;nbsp;이미&amp;nbsp;알고&amp;nbsp;있는&amp;nbsp;내용들을&amp;nbsp;정리한&amp;nbsp;것으로&amp;nbsp;작성하는데&amp;nbsp;20분도&amp;nbsp;안걸렸다.&amp;nbsp;(개인적인&amp;nbsp;성장에는&amp;nbsp;별&amp;nbsp;도움이&amp;nbsp;되지&amp;nbsp;않았다)&amp;nbsp;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://brainbackdoor.tistory.com/142&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;User&amp;nbsp;Story와&amp;nbsp;Usability&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;는&amp;nbsp;강의&amp;nbsp;준비하는&amp;nbsp;과정에서&amp;nbsp;개발자&amp;nbsp;외의&amp;nbsp;시각을&amp;nbsp;엿볼&amp;nbsp;수&amp;nbsp;있어서&amp;nbsp;나름&amp;nbsp;의미있는&amp;nbsp;시간이기는&amp;nbsp;했다.&amp;nbsp;하지만&amp;nbsp;전반적으로&amp;nbsp;글또&amp;nbsp;매&amp;nbsp;기수마다&amp;nbsp;하나의&amp;nbsp;주제를&amp;nbsp;시리즈로&amp;nbsp;작성했던&amp;nbsp;것을&amp;nbsp;반추해보면,&amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;이번&amp;nbsp;4기에는&amp;nbsp;학습이&amp;nbsp;제대로&amp;nbsp;이루어지지&amp;nbsp;않았음&lt;/b&gt;&lt;/span&gt;을&amp;nbsp;반증한다.&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;상반기에&amp;nbsp;나름&amp;nbsp;목표로&amp;nbsp;두었던&amp;nbsp;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://github.com/woowacourse/roadmap&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;로드맵&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;도&amp;nbsp;야심차게&amp;nbsp;망했다.&amp;nbsp;테크코스&amp;nbsp;1기&amp;nbsp;크루&amp;nbsp;2명과&amp;nbsp;함께&amp;nbsp;사이드&amp;nbsp;프로젝트로&amp;nbsp;진행했고&amp;nbsp;반복주기를&amp;nbsp;나누어서도&amp;nbsp;해보고&amp;nbsp;오프라인&amp;nbsp;미팅을&amp;nbsp;가져보기도&amp;nbsp;하고,&amp;nbsp;이슈&amp;nbsp;관리나&amp;nbsp;리뷰&amp;nbsp;등도&amp;nbsp;진행해보았지만,&amp;nbsp;동기부여를&amp;nbsp;주지&amp;nbsp;못했고&amp;nbsp;몇차례&amp;nbsp;싸이클을&amp;nbsp;돌다&amp;nbsp;멈춰버렸다.&amp;nbsp;무엇보다도&amp;nbsp;내가&amp;nbsp;몰입하지&amp;nbsp;못했던&amp;nbsp;것이&amp;nbsp;가장&amp;nbsp;큰&amp;nbsp;이유겠다.&amp;nbsp;우선은&amp;nbsp;전반의&amp;nbsp;컨셉을&amp;nbsp;정리하고&amp;nbsp;앞으로&amp;nbsp;컨텐츠를&amp;nbsp;어떤&amp;nbsp;방식으로&amp;nbsp;채워갈지&amp;nbsp;가이드라인을&amp;nbsp;잡은&amp;nbsp;정도에서&amp;nbsp;첫번째&amp;nbsp;반복주기를&amp;nbsp;마무리짓기로&amp;nbsp;했다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;5E40F3B7-78B8-4E82-B3DC-FF5512DDD4FC 2.JPG&quot; data-origin-width=&quot;3840&quot; data-origin-height=&quot;2160&quot; width=&quot;551&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m8mXG/btqFnOfVLRE/we9PZCKrQQefqA6hHskZm1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m8mXG/btqFnOfVLRE/we9PZCKrQQefqA6hHskZm1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m8mXG/btqFnOfVLRE/we9PZCKrQQefqA6hHskZm1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm8mXG%2FbtqFnOfVLRE%2Fwe9PZCKrQQefqA6hHskZm1%2Fimg.jpg&quot; data-filename=&quot;5E40F3B7-78B8-4E82-B3DC-FF5512DDD4FC 2.JPG&quot; data-origin-width=&quot;3840&quot; data-origin-height=&quot;2160&quot; width=&quot;551&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;테크코스&amp;nbsp;역시&amp;nbsp;아쉬움이&amp;nbsp;많이&amp;nbsp;남는다.&amp;nbsp;레벨1,&amp;nbsp;레벨2&amp;nbsp;조별&amp;nbsp;크루들과의&amp;nbsp;관계도&amp;nbsp;아쉬움이&amp;nbsp;많았고&amp;nbsp;무엇보다&amp;nbsp;코드리뷰를&amp;nbsp;진행하지&amp;nbsp;않으니&amp;nbsp;크루들의&amp;nbsp;상태가&amp;nbsp;어떤지&amp;nbsp;알기가&amp;nbsp;어려웠다.&amp;nbsp;물론&amp;nbsp;개개인&amp;nbsp;면담을&amp;nbsp;통해서&amp;nbsp;관계를&amp;nbsp;형성해간&amp;nbsp;크루들도&amp;nbsp;있었으나,&amp;nbsp;코로나&amp;nbsp;등의&amp;nbsp;이슈로&amp;nbsp;작년과는&amp;nbsp;다른&amp;nbsp;분위기가&amp;nbsp;뭇내&amp;nbsp;아쉽다.&amp;nbsp;내부&amp;nbsp;강의는&amp;nbsp;그런대로&amp;nbsp;만족스럽다.&amp;nbsp;java8&amp;nbsp;lambda,&amp;nbsp;SQL,&amp;nbsp;배포,&amp;nbsp;유저스토리&amp;nbsp;등의&amp;nbsp;강의를&amp;nbsp;하였는데,&amp;nbsp;강의&amp;nbsp;컨텐츠는&amp;nbsp;지난해보다&amp;nbsp;다소 개선되었다고&amp;nbsp;생각한다.&amp;nbsp;그&amp;nbsp;외로도&amp;nbsp;내부&amp;nbsp;채용을&amp;nbsp;위해 진행한 교육자&amp;nbsp;경험기를&amp;nbsp;시작으로&amp;nbsp;유저스토리&amp;nbsp;강의와&amp;nbsp;SSAFY&amp;nbsp;특강까지&amp;nbsp;유튜브&amp;nbsp;실시간&amp;nbsp;스트리밍으로&amp;nbsp;진행해보았는데,&amp;nbsp;SSAFY에서&amp;nbsp;좋은&amp;nbsp;피드백을&amp;nbsp;받아&amp;nbsp;나름&amp;nbsp;유의미한&amp;nbsp;시간이었다.&amp;nbsp;그런 여러가지 이유들로 외부&amp;nbsp;강의를&amp;nbsp;처음부터&amp;nbsp;온라인으로&amp;nbsp;여는&amp;nbsp;것을&amp;nbsp;고려중이다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;플랫폼&amp;nbsp;개발&amp;nbsp;역시&amp;nbsp;너무&amp;nbsp;아쉬운&amp;nbsp;부분이&amp;nbsp;많다.&amp;nbsp;상반기에&amp;nbsp;내가&amp;nbsp;작업한&amp;nbsp;부분은&amp;nbsp;경악할만한&amp;nbsp;수준이라,&amp;nbsp;갑자기&amp;nbsp;현타가..&amp;nbsp; &lt;br /&gt;&lt;br /&gt;상반기에&amp;nbsp;유의미한&amp;nbsp;결과로는,&amp;nbsp;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;정규직&amp;nbsp;전환&lt;/b&gt;&lt;/span&gt;(우형은&amp;nbsp;전환&amp;nbsp;개념이&amp;nbsp;없어서&amp;nbsp;다시&amp;nbsp;채용프로세스를&amp;nbsp;밟아야&amp;nbsp;했다.),&amp;nbsp;&lt;b&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;강의&amp;nbsp;컨텐츠의&amp;nbsp;품질을&amp;nbsp;높인&amp;nbsp;것,&amp;nbsp;유튜브&amp;nbsp;강의를&amp;nbsp;경험&lt;/span&gt;&lt;/b&gt;해본&amp;nbsp;것&amp;nbsp;정도이고&amp;nbsp;추가적으로&amp;nbsp;소규모의&amp;nbsp;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://github.com/woowacourse/service-issues/projects/1&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;개발팀&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;을&amp;nbsp;운영해본&amp;nbsp;부분(근로장학생)과&amp;nbsp;어쨋든&amp;nbsp;로드맵을&amp;nbsp;작성해본&amp;nbsp;것&amp;nbsp;정도겠다.&amp;nbsp;특히&amp;nbsp;근로장학생들에게&amp;nbsp;처음에&amp;nbsp;어떤&amp;nbsp;프로젝트를&amp;nbsp;맡길지&amp;nbsp;애매했었는데,&amp;nbsp;내가&amp;nbsp;만든&amp;nbsp;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://github.com/woowacourse/archive&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;토이프로젝트(슬랙&amp;nbsp;채널&amp;nbsp;아카이빙&amp;nbsp;서비스)&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;를&amp;nbsp;기반으로&amp;nbsp;크루들이&amp;nbsp;작업을&amp;nbsp;점진적으로&amp;nbsp;진행하며&amp;nbsp;소통하는&amp;nbsp;것을&amp;nbsp;보고&amp;nbsp;이런&amp;nbsp;형태의&amp;nbsp;교육도&amp;nbsp;좀&amp;nbsp;더&amp;nbsp;세밀하게&amp;nbsp;설계해보아야겠다는&amp;nbsp;생각을&amp;nbsp;하게&amp;nbsp;되었다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;DA5278A3-4FC1-4DE6-9B6B-78E39584AC3C.JPG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;541&quot; width=&quot;523&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbAjNd/btqFoRCON1o/Kcrv5ZLIG2vkx5otWT0P70/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbAjNd/btqFoRCON1o/Kcrv5ZLIG2vkx5otWT0P70/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbAjNd/btqFoRCON1o/Kcrv5ZLIG2vkx5otWT0P70/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbAjNd%2FbtqFoRCON1o%2FKcrv5ZLIG2vkx5otWT0P70%2Fimg.jpg&quot; data-filename=&quot;DA5278A3-4FC1-4DE6-9B6B-78E39584AC3C.JPG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;541&quot; width=&quot;523&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;사실 이번 상반기가 이렇게 부진한 것은, 연애를 시작했기 때문이다. 처음 하는 연애라 모든 것이 도전거리였고, 이제 100일이 지난 시점에 프로포즈를 하기까지 많은 일들이 있었다. 99일 뒤 결혼을 앞둔 시점에 청첩장과 예복, 이사를 제외한 대부분의 준비가 이루어질 수 있었던 것도, 그리고 이렇게 복에 겨운 시간을 보낼 수 있었던 것도 정말 여러모로 감사할 일이다. 그리고 연인과 함께 하면서 그동안 소홀히했던 일상이라던가 건강 등을 돌아보는 계기가 되었다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;스크린샷 2020-07-09 오후 1.42.47.png&quot; data-origin-width=&quot;1214&quot; data-origin-height=&quot;374&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9AKiT/btqFveSXfs8/phuTh6FArKK9fKEpVYxGxK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9AKiT/btqFveSXfs8/phuTh6FArKK9fKEpVYxGxK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9AKiT/btqFveSXfs8/phuTh6FArKK9fKEpVYxGxK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9AKiT%2FbtqFveSXfs8%2FphuTh6FArKK9fKEpVYxGxK%2Fimg.png&quot; data-filename=&quot;스크린샷 2020-07-09 오후 1.42.47.png&quot; data-origin-width=&quot;1214&quot; data-origin-height=&quot;374&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;하지만 지속가능한 건강한 삶을 위해서는 균형감있는 성장이 필요하다고 생각한다. 결혼 준비가 막바지에 다른 시점이라, 7월 중으로는 외부 강의에 박차를 가해 마무리 짓고(개인 연차도 이 기회에 많이 소진할 계획이다), 8월에 5명 정도를 대상으로 스터디를 진행해볼까 한다. (10월에 결혼이라) 11 ~ 12월 경에 외부 강의를 여는 것을 목표로 하고 있다.&amp;nbsp;이래저래 아쉬운 점이 많은 상반기지만, 앞으로 더 길고 멀리가기 위한 전환점이라 생각하고 Nextstep을 준비하고자 한다.&lt;/p&gt;</description>
      <category>Log/.daily</category>
      <author>가그린민트</author>
      <guid isPermaLink="true">https://brainbackdoor.tistory.com/143</guid>
      <comments>https://brainbackdoor.tistory.com/143#entry143comment</comments>
      <pubDate>Sun, 5 Jul 2020 15:46:29 +0900</pubDate>
    </item>
    <item>
      <title>User Story와 Usability</title>
      <link>https://brainbackdoor.tistory.com/142</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;768&quot; data-filename=&quot;userstory1.png&quot; width=&quot;473&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b2v8OD/btqEGgRduzC/yEKfi3pkwqANlDMQE21og1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b2v8OD/btqEGgRduzC/yEKfi3pkwqANlDMQE21og1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b2v8OD/btqEGgRduzC/yEKfi3pkwqANlDMQE21og1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2v8OD%2FbtqEGgRduzC%2FyEKfi3pkwqANlDMQE21og1%2Fimg.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;768&quot; data-filename=&quot;userstory1.png&quot; width=&quot;473&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;우아한 테크코스 레벨3와 레벨4의 커리큘럼을 바꾸면서, 크루들에게 프로젝트 준비를 위한 시간이 주어졌다. 기획서를 작성하고 프로젝트를 준비하는데에 앞서 어떤 메시지를 주면 좋을지 고민이 시작되었다. 그러다 문득 User Story를 작성해보는 것도 좋겠다는 생각이 들어 강의와 실습 컨텐츠를 만들어보았다. 이 자료는 &lt;a href=&quot;http://www.yes24.com/Product/Goods/8607547&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;인간중심 UX 디자인&lt;/a&gt;과 &lt;a href=&quot;http://www.yes24.com/Product/Goods/15238736&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;사용자를 생각하게 하지마&lt;/a&gt;를 참고하여 만들었다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;User Story는 사용자 상을 제작하고, 사용자의 시나리오를 작성한 후 요구사항으로 도출된다. 아래에서는 &lt;a href=&quot;http://edu.nextstep.camp/&quot;&gt;http://edu.nextstep.camp/&lt;/a&gt; 을 가상으로 작성해보았다. 요구사항을 도출하기까지 사용되는 In-Depth Interview와 사용성을 위해 진행하는 Usability Test를 비교해 보는 것도 좋을거라 생각한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt; &amp;zwj; &amp;zwj; &amp;zwj;  &lt;b&gt;1. 사용자&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;실용주의가 없는 장인정신은 장인정신이 아니다. 장인이 가장 중요하게 초점을 맞추는 것은 &lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;고객의 만족&lt;/b&gt;&lt;/span&gt;이다. 품질은 물론이고 시간과 비용도 고객 만족을 위한 구성요소다. 고객에게 가치를 전달할 수 없다면 잘 작성된 코드라고 할 수 없다.&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;&lt;b&gt;by 소프트웨어 장인&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://ppss.kr/archives/219094&quot;&gt;기사&lt;/a&gt;에서 시사하듯, 소프트웨어(혹은 서비스)는 사용자를 중심에 두어야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;1) 잠재 사용자 파악하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;(1) 사용자 리서치&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;사용자가 이미 경험한 것들(어떤 인식/태도를 가지고 있는지)를 파악하면 사용자 스토리가 도출된다.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;유사한 서비스를 사용하는 사용자를 대상으로 리서치를 한다.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;a. 그럴듯한 사용자 역할 찾기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; width: 31.5116%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #ffffff;&quot;&gt;&lt;b&gt;제품&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 68.3721%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #ffffff;&quot;&gt;&lt;b&gt;예상 역할&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 31.5116%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;교육 서비스&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 68.3721%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;강사, 학생, 강의 컨텐츠를 관리하는 사람, 시스템 관리자 등&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 31.5116%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;구매 서비스&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 68.3721%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;판매자, 구매자, 주문 요청을 처리하는 사람, 배송받는 사람, 시스템 관리자 등&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 31.5116%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;이메일 서비스&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 68.3721%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;이메일 계정 소유자, 외부 이메일 수취인, 시스템 관리자 등&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;b. 인터뷰 주제&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;* 작업을 이해하는 것도 중요하지만, 왜 그 작업이 존재하는지 이해해야 한다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;- 작업 빈도와 우선순위&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;일반적으로 어떤 일을 가장 먼저 합니까? 그 이유는?&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;어떤 일을 가능한 미룹니까?&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;어떤 일들이 시간을 낭비하게 만듭니까?&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;단지 한두가지 일을 할 수 있는 시간이 더 생긴다면, 무엇을 하겠습니까?&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;왜 그 업무에 더 많은 시간을 투자합니까?&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;- 현재 제품의 역할&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;제품을 얼마나 자주 이용합니까?&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;현재의 제품을 어디에 가장 많이 이용합니까?&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;어떻게 이용하는지 보여주실 수 있을까요?&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;이 도구를 사용하기 전에 어떤 다른 도구들을 이용합니까?&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;어떤 도구와 함께 제품을 사용합니까?&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;이 제품을 사용한 후에 어떤 도구를 사용합니까?&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;동일 작업에서 사용한 다른 도구와 이 제 품을 어떻게 비교할 수 있을까요?&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;c. 인터뷰하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;참가자들에게 보여달라고 요청하라&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;유도 질문을 하지 마라&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;인터뷰 참가자에게 해결책에 대해 묻지 마라&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;인터뷰 도중 문제를 해결하려고 하지 마라&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;무엇이 좋은 경험을 만들까요? (목적에 대해 직접적으로 질문하면, 유용한 답변을 얻지 못한다.)&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;* 멘탈 모델 객체와 속성&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;멘탈모델은 사용자의 기존 경험, 인식 등으로 형성되며, 시스템의 개념구조와 동작이 사용자의 멘탈모델과 일치하면, 대개 시스템은 사용하기 쉽다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 36.4406%; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #ffffff;&quot;&gt;&lt;b&gt;멘탈모델&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 63.4383%; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #ffffff;&quot;&gt;&lt;b&gt;객체속성&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 36.4406%; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;이메일 메시지&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 63.4383%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 누가 보냈는지&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 누가 메시지를 받는지&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 언제 보냈는지&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 무엇에 관한 것인지&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 어떤 첨부물이 있는지&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 상대방이 어떤 행동을 하였는지(전달, 답장 등)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 얼마나 급한 행동인지&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 36.4406%; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;연락처&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 63.4383%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 어떻게 그들에게 연락할 수 있는지&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 어디서 일하는지&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;d. 다른 자료들 활용하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;기존 설문조사를 활용하거나 기존 서비스를 벤치마킹하는 것도 좋다. 추가적으로, 웹 로그 등의 데이터는 어디에 문제가 있을 수 있는지 파악하는데 유용하지만 왜 그 문제가 발생하는지 설명하지 못한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;(2) 데이터 이해하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;모델링의 요점은 데이터를 이해할 수 있게 다듬어서 리서치 내용을 충분히 이해한 상태에서 의사결정을 내릴 수 있게 돕는 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 113px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px; width: 70.2326%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #ffffff;&quot;&gt;&lt;b&gt;개별 데이터&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px; width: 29.6511%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #ffffff;&quot;&gt;&lt;b&gt;아이디어&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 38px;&quot;&gt;
&lt;td style=&quot;height: 38px; width: 70.2326%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 씨유는 일주일에 최소 한 번 수강생들에게 독려 메일을 보낸다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 포비는 수업 대기신청한 사람들에게 이메일을 보낸다.&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 38px; width: 29.6511%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;이메일 보내기&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;height: 18px; width: 70.2326%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 준은 수강생들이 프론트엔드 미션을 잘 소화하도록 며칠에 한번씩 강의 컨텐츠를 올린다&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 18px; width: 29.6511%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;웹 사이트에 교육 컨텐츠 올리기&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; width: 70.2326%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 제이슨은 DDD 교육 컨텐츠를 판매한다.&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 29.6511%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;웹 사이트에 상품 컨텐츠 올리기&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; width: 70.2326%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 소니는 2일에 한번은 리뷰 요청을 한다&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 29.6511%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;웹 사이트를 통해 코드리뷰 요청하기&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;2) Persona 작성하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;Persona&lt;/b&gt;란, 잠재 사용자들의 다양한 목적과 관찰된 행동 패턴을 응집시켜 놓은 원형이다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;따라서, Persona를 통해 제품을 정의, 디자인할 수 있다. Persona를 통해 형성된 공통된 '사용자'를 생각하면서 작업을 진행한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;(1) 패턴 분석하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/boPgSE/btqEF5WHpjp/l2PeUpKVdrdf0xX5bCIT70/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/boPgSE/btqEF5WHpjp/l2PeUpKVdrdf0xX5bCIT70/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/boPgSE/btqEF5WHpjp/l2PeUpKVdrdf0xX5bCIT70/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FboPgSE%2FbtqEF5WHpjp%2Fl2PeUpKVdrdf0xX5bCIT70%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;행동 변수란 인터뷰 참가자들간 차이가 있는 행동 및 사고방식들을 의미한다.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;모집단이라고 믿는 대상과 비교하지 말고 각 인터뷰 참가자들끼리 비교하면서 배치한다.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;자주 함께 보이는 사람들을 동그라미 쳐둔다.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; width: 27.2093%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #ffffff;&quot;&gt;&lt;b&gt;강의 경험이 많은 강사&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 29.1859%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #ffffff;&quot;&gt;&lt;b&gt;강의 경험이 적은 강사&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 28.3722%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #ffffff;&quot;&gt;&lt;b&gt;수강생&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 15.1163%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #ffffff;&quot;&gt;&lt;b&gt;리뷰어&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 27.2093%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 기존 교육 컨텐츠를 판매&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 빈번하지 않은 독려 메일&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 수강생과 자주 이야기 하지 않음&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;...&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 29.1859%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 교육 컨텐츠 작성에 많은 시간 할애&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 수강생과의 관계에 집중&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 리뷰어와 어느 정도 자주 이야기함&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;...&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 28.3722%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 프로그래밍 학습에 많은 시간 할애&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;...&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 15.1163%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;...&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;(2) 목적 정의하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;각 목적은 동사로 작성한다.&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 76px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #ffffff;&quot;&gt;&lt;b&gt;강사&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #ffffff;&quot;&gt;&lt;b&gt;수강생&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #ffffff;&quot;&gt;&lt;b&gt;리뷰어&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 57px;&quot;&gt;
&lt;td style=&quot;height: 57px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 자기 브랜딩을 하고 싶다&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 강의를 판매하고 싶다&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 리뷰어 품질관리를 하고 싶다&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 57px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 프로그래밍 실력을 높이고 싶다&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- CS를 학습하고 싶다&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 나의 학습 상태를 확인하고 싶다&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 57px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 수강생들과 소통하고 싶다&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 코드리뷰 품질을 높이고 싶다&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;특이점을 명확히 한다.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;Persona간 우선순위를 정한다.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;(3) 개별 Persona 설명하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 55.1163%; height: 443px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;height: 18px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #ffffff;&quot;&gt;&lt;b&gt;러너&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 399px;&quot;&gt;
&lt;td style=&quot;height: 399px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 28세&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 3년차 백엔드 개발자&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- SI업체&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 비전공&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- Mac 사용&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;현재 수강중인 수업: ATDD&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 수강한 이유 : 인수테스트 역량을 키우기 위해&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 이전에 들었던 수업 : Clean Code&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 이전 수업의 미션 완료율 : 100%&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 리뷰 요청 주기 : 평균 2일에 한번&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 평균 수업료: 77만원&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 수강대기 신청 이유 : 다음 강의를 바로 신청하고 싶었음&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 신청 전 방문 횟수 : 3회&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;Needs&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 프로그래밍 역량을 키우고 싶다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 수강 후 이직 멘토링을 받고 싶다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;Customer Job&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 프로그래밍 역량을 키워서 원하는 곳으로 이직을 할 수 있다&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;  &lt;b&gt;2. 유저 스토리 도출하기&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;1) 시나리오 제작하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;시나리오는 Persona 관점에서 기술한다. Persona에 의한 행동의 결과로서 Persona와 시스템 사이의 인터렉션을 묘사한다.&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 154px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 22px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #ffffff;&quot;&gt;&lt;b&gt;제품&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 22px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #ffffff;&quot;&gt;&lt;b&gt;페르소나&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 22px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #ffffff;&quot;&gt;&lt;b&gt;시나리오&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 44px;&quot;&gt;
&lt;td style=&quot;height: 44px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;이메일 시스템&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 44px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;강사&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 44px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 개강 알림 메일 보내기&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 독려 메일 보내기&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 66px;&quot;&gt;
&lt;td style=&quot;height: 66px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;이메일 시스템&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 66px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;수강생&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 66px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 질문 메일 보내기&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 수료증 요청하기&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 멘토링 신청하기&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;구매 플랫폼&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;구매자&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 구매요청&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;정황 시나리오는 버스를 타기 위해 현금을 인출해야 하는&amp;nbsp;&lt;b&gt;'맥락&lt;/b&gt;', 카메라 메모리가 가득 찼기 때문에 업로드해야 하는&amp;nbsp;&lt;b&gt;'니즈'&lt;/b&gt;, 구매 요청 접수증 등&amp;nbsp;&lt;b&gt;'특정 계기'&lt;/b&gt;로 시작한다. 정황 시나리오에서 해결안을 미리 제공하지 않아야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;러너는 다음 주에 모집 예정인 ATDD와 DDD 수업들의 알림 메시지를 받았다. 반복적인 유지보수 업무에 지친 그는 이직 준비를 위해 Nextstep에 접속했다. 홈페이지에서 각 과정에 대한 정보들을 확인한 후 수료생들의 미션에 대한 코드리뷰를 확인했다. 그는 브라운 강사에게 이번 ATDD 과정을 수강하려면 어느정도 역량이 필요한지 메시지를 보냈다. 얼마후 워니 강사에게 이전에 요청했던 이력서 피드백을 받았다.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;2) 시나리오에서 요구사항 도출하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #ffffff;&quot;&gt;&lt;b&gt;시나리오&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #ffffff;&quot;&gt;&lt;b&gt;요구사항&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;러너는 다음 주에 모집 예정인 ATDD와 DDD 수업들의 알림 메시지를 받았다. 반복적인 유지보수 업무에 지친 그는 이직 준비를 위해 Nextstep에 접속했다.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 개강 알림 메시지를 보낼 수 있어야 한다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 메일에서 과정페이지로 접속할 수 있어야 한다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;홈페이지에서 각 과정에 대한 정보들을 확인한 후 수료생들의 미션에 대한 코드리뷰를 확인했다.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 과정 목표, 커리큘럼, 수강생 리뷰 등을 한 화면에 보여줄 수 있어야 한다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 코드 리뷰를 볼 수 있어야 한다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;그는 브라운 강사에게 이번 ATDD 과정을 수강하려면 어느정도 역량이 필요한지 메시지를 보냈다.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 강사에게 메시지를 보낼 수 있어야 한다&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 강사는 메시지에 대한 알림을 받을 수 있어야 한다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;얼마후 워니 강사에게 이전에 요청했던 이력서 피드백을 받았다.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 강사는 이력서 피드백을 등록할 수 있어야 한다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 수강생은 피드백이 완료되면 알림을 받을 수 있어야 한다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;  3. 사용자를 고민에 빠뜨리지 마라&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;누구나(평범한 능력과 경험을 가진 사람)이 어려움없이 사용법을 알 수 있어야 하며, 투입한 수고에 비해 얻은 가치가 커야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;1) 아래 질문에 답해보자&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;유용성 : 사람들이 필요로 하는 일을 하는가?&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;학습 용이성 : 사람들이 사용법을 알아볼 수 있는가?&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;기억 용이성 : 사용할 때마다 사용법을 다시 익혀야 하는가?&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;유효성 : 맡은 임무를 완수하는가?&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;효율성 : 작업을 수행하는데 드는 시간과 노력의 양은 합리적인 수준인가?&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;호감도 : 사람들이 이것을 갖고 싶어하겠는가?&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;재미 : 사용할 때 즐겁거나 재미있다고 느끼는가?&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;2) 우리가 실제로 웹을 사용하는 방법&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qmFLL/btqEGDyFjJz/ddmFIZDjWOYgw4ZaEkRjKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qmFLL/btqEGDyFjJz/ddmFIZDjWOYgw4ZaEkRjKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qmFLL/btqEGDyFjJz/ddmFIZDjWOYgw4ZaEkRjKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqmFLL%2FbtqEGDyFjJz%2FddmFIZDjWOYgw4ZaEkRjKk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;사용자는 웹 페이지를 읽지 않는다. 훑어본다. 한번에 여러 개를 만들어서 잘 보여주고 싶다는 욕망을 버려라.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;사용자는 최선의 선택을 하지 않는다. 최소 조건만 충족되면 만족한다.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;사용자는 보통 시간에 쫓긴다.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;추측이 틀렸을 때 발생하는 불이익이 별로 없다.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;선택지를 비교하더라도 결과가 나아지리라는 보장이 없다.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;사용자는 작동방식까지 이해하려 하지 않는다. 적당히 임기응변한다.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;3) 심각한 문제&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blppfi/btqEHxxJpTO/ejxpEFbL9idThD5hJeHtp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blppfi/btqEHxxJpTO/ejxpEFbL9idThD5hJeHtp1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blppfi/btqEHxxJpTO/ejxpEFbL9idThD5hJeHtp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fblppfi%2FbtqEHxxJpTO%2FejxpEFbL9idThD5hJeHtp1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;여러번 생각을 하게 되면 피로도가 쌓여서 이탈하게 된다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;a. Usability Test&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;사용성 테스트란, 고객이 우리가 제공하고자 하는 서비스의 구조와 기능을 의도한 대로&amp;nbsp;&lt;b&gt;인지, 이해, 예측, 실행&lt;/b&gt;&amp;nbsp;할 수 있는가를 확인하기 위한 리서치 방법론 중 하나이다. 참여자에게 특정 과제를 부여한 뒤&amp;nbsp;&lt;b&gt;관찰&lt;/b&gt;을 통해 사용성의 문제점을 발견하는 방법이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;즉, 사용성 테스트는 사람에 대해 알아보는 것이 아니라, 인터페이스에 대해 문제없이 사용할 수 있는지를 확인하는 것으로 의견이나 과거 사용 경험 등을 묻지 않는다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;* 얼마나 진행해야 할까&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cxXNKh/btqEGB8FmUl/IcohAmHPmHyWeMGP7L9Qb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cxXNKh/btqEGB8FmUl/IcohAmHPmHyWeMGP7L9Qb1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cxXNKh/btqEGB8FmUl/IcohAmHPmHyWeMGP7L9Qb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcxXNKh%2FbtqEGB8FmUl%2FIcohAmHPmHyWeMGP7L9Qb1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;* UT를 통해 알 수 있는 것&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;이 기능을 발견할 수 있는지&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;이 기능은 사용할 수 있는지&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;이 Task를 쉽게 완료할 수 있는지&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;정보를 쉽게 이해할 수 있는지&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;사용자가 필요한 모든 정보를 얻을 수 있는지&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;* UT를 통해 알 수 없는 것&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;사용자에게 앱이 유용한지&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;어떤 다른 기능을 추가하면 좋은지&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;유용성 조사에서 선호도를 요구하는 것은 함정이 될 수 있다. (한 사람에게 A/B테스트하지 마라)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;4) 호감에 영향을 주는 요인들&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;a. 부정적인 요인&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;사용자가 원하는 정보 숨겨두기&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;사용자를 귀찮게 하기. 전화번호 사이에 (-), 카드번호 공백 등을 사용자에게 넣으라고 강요하지마라&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;필요하지도 않은 정보 물어보기&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;가식적인 표현으로 사용자 기만하기&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;홍보용 장치로 작업 방해하기&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;아마추어 수준의 사이트 제작&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;b. 긍정적인 요인&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;사용자가 가장 많이 하는 활동을 찾아 명확하게 드러내줘라&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;사용자가 알고자 하는 정보를 공개하라&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;궁금해할 만한 내용을 예측하고 미리 답을 제시해라&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;오류가 발생했을 때 쉽게 회복할 수 있게 하라&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;해결하지 못한 문제가 있을 때는 사과하라&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Programming/.common</category>
      <author>가그린민트</author>
      <guid isPermaLink="true">https://brainbackdoor.tistory.com/142</guid>
      <comments>https://brainbackdoor.tistory.com/142#entry142comment</comments>
      <pubDate>Sun, 7 Jun 2020 16:17:35 +0900</pubDate>
    </item>
    <item>
      <title>불변객체란</title>
      <link>https://brainbackdoor.tistory.com/141</link>
      <description>&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&lt;a style=&quot;color: #333333;&quot; href=&quot;https://edu.nextstep.camp/c/8fWRxNWU/&quot;&gt;&amp;nbsp;https://edu.nextstep.camp/c/8fWRxNWU/&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1586694589525&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;클린코드를 위한 TDD, 리팩토링 with Java&quot; data-og-description=&quot;&quot; data-og-host=&quot;edu.nextstep.camp&quot; data-og-source-url=&quot;https://edu.nextstep.camp/c/8fWRxNWU/&quot; data-og-url=&quot;https://edu.nextstep.camp/c/8fWRxNWU&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/uRkbr/hyFDz2vQOM/pIo7y4FLLQaMoZ1ebodD00/img.jpg?width=968&amp;amp;height=565&amp;amp;face=0_0_968_565,https://scrap.kakaocdn.net/dn/VNHR4/hyFFq3WcFQ/wriuKl9YGG0sIqNzFEnFx1/img.jpg?width=968&amp;amp;height=565&amp;amp;face=0_0_968_565&quot;&gt;&lt;a href=&quot;https://edu.nextstep.camp/c/8fWRxNWU/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://edu.nextstep.camp/c/8fWRxNWU/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/uRkbr/hyFDz2vQOM/pIo7y4FLLQaMoZ1ebodD00/img.jpg?width=968&amp;amp;height=565&amp;amp;face=0_0_968_565,https://scrap.kakaocdn.net/dn/VNHR4/hyFFq3WcFQ/wriuKl9YGG0sIqNzFEnFx1/img.jpg?width=968&amp;amp;height=565&amp;amp;face=0_0_968_565');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;클린코드를 위한 TDD, 리팩토링 with Java&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;edu.nextstep.camp&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #1a5490;&quot; href=&quot;https://brainbackdoor.tistory.com/140&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;일급컬렉션&lt;/a&gt; &lt;/b&gt;&lt;/span&gt;피드백에 이어, 많이 하는 피드백이 불변객체를 작성하라는 것이다. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;Effective Java에서는 '&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;변경 가능성을 최소화하라&lt;/b&gt;&lt;/span&gt;'는 챕터를 통해 불변 객체를 소개한다. '&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;불변 객체'는 인스턴스 생성 이후 내부 인스턴스 변수들을 수정할 수 없어야 한다.&lt;/b&gt;&lt;/span&gt; 이에 근본적으로 Thread-safe하므로 동기화 작업을 할 필요 없어 오류 가능성이 적고 &lt;a style=&quot;color: #333333;&quot; href=&quot;https://madplay.github.io/post/strive-for-failure-atomicity&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;실패 원자성&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;을 제공한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333; font-family: 'Noto Sans Light';&quot;&gt;불변 객체를 작성하기 위해 Effective Java에서는 아래의 규칙을 소개한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333; font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;- 객체의 상태를 변경하는 메서드를 제공하지 않는다.&lt;/b&gt;&lt;/span&gt; 즉, setter 메서드 등을 통해 인스턴스 변수의 값을 변경하는 메서드를 작성하지 않아야 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333; font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;- 클래스를 확장할 수 없도록 한다. &lt;/b&gt;&lt;/span&gt;그리하여 하위 클래스에서 의도치 않게 인스턴스 변수를 변경하는 것을 막아야 한다. 정적 팩토리 메서드를 작성한다면 생성자를 private으로 작성하기에 다른 패키지에서 이 클래스를 확장하는 것이 불가능해진다. 그 외에도 final class로 선언하고 모든 멤버 필드를 final로 적옹하여 상속을 막을 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;- 모든 필드를 final로 선언한다.&lt;/b&gt; &lt;/span&gt;java에서 final 예약어는&amp;nbsp;해당 객체를 가리키는 포인터를 바꿀 수 없게하는 의미를 까지지만,&amp;nbsp; 코드 작성자의 의도를 명확히 드러내는 것만으로도 유의미하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;- 모든 필드를 private으로 선언&lt;/b&gt;&lt;/span&gt;하여 직접 멤버 필드에 접근하는 것을 막을 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;- 자신 외에는 내부의 가변 컴포넌트에 접근할 수 없도록 한다.&lt;/b&gt;&lt;/span&gt; 즉, 외부에 인스턴스 변수를 반환할 경우 (getter 등에서) 방어적 복사본을 만들어야 한다. - &lt;b&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;a style=&quot;color: #1a5490;&quot; href=&quot;https://madplay.github.io/post/make-defensive-copies-when-needed&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;관련 링크&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;이 포스팅은, Collections 라이브러리의 &lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;unmodifiableList API를 어떻게 활용하는 것이 좋을지 피드백하다 작성하게 되었다. &lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;unmodifiableList 는 List에 read-only 상태로 접근 가능하도록 하며, List에 수정을 가하려고 할 경우 &lt;/span&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;UnsupportedOperationException를 반환하도록 한다. - &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;a style=&quot;color: #1a5490;&quot; href=&quot;https://docs.oracle.com/javase/1.5.0/docs/api/java/util/Collections.html#unmodifiableList(java.util.List)&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;관련 링크&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1586696332080&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;final class ImmutableCart&amp;lt;T&amp;gt; {
    private final List&amp;lt;T&amp;gt; items;
    public ImmutableCart(final List&amp;lt;T&amp;gt; items) {
        this.items = Collections.unmodifiableList(items);
    }
    public List&amp;lt;T&amp;gt; getItems() {
        return new ArrayList(items);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333; font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;unmodifiableList를 생성자에서 사용하여 전달받은 값을 방어적 복사하고, getter에서 객체를 생성해서 반환&lt;/b&gt;&lt;/span&gt;하는 것도 좋은 전략이라고 생각한다. final 예약어를 사용하였으므로 값을 재할당할 수 없으며, unmodifiableList는 값을 수정할 시에 예외를 발생시키므로 Item을 교체하지 못한다는 의미가 분명해질 수 있다. 이에 내부에서 값을 재정의하는 메서드를 작성하는 것을 방지하는 효과를 가져온다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333; font-family: 'Nanum Gothic';&quot;&gt;getter에서도 unmodifiableList를 사용할 경우 Deep Copy가 되지 않는다는 점이&lt;span style=&quot;color: #1a5490;&quot;&gt; &lt;b&gt;&lt;a style=&quot;color: #1a5490;&quot; href=&quot;https://os94.tistory.com/153&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;우려&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;가 있지만, Item이 &lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #1a5490;&quot; href=&quot;https://martinfowler.com/bliki/ValueObject.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Value Object&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;로 작성하여 불변성을 보장할 경우 속성을 변경할 수 없고 Collection에 직접 Item을 교체하는 api를 제공하지 않으므로 불변을 보장할 수는 있다. 다만, 이 경우 외부 사용자 측면에서는 기대하지 않은 예외 (unsupportedoperationexception)에 직면하여 좋지 못한 경험을 준다는 단점이 있으며, unmodifiableList은 비즈니스 로직을 읽어내는데 저해된다는 주장도 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333; font-family: 'Nanum Gothic';&quot;&gt;추가적으로, &lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #1a5490;&quot; href=&quot;https://ko.wikipedia.org/wiki/%EB%B6%88%EB%B3%80%EA%B0%9D%EC%B2%B4&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;위키&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;에서는 불변객체 작성시에 생성자에서는 방어적 복사 후 Collection 요소들의 타입 검사까지 진행하며, getter에서는 내부 필드의 방어적 복사를 수행하도록 가이드 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333; font-family: 'Nanum Gothic';&quot;&gt;결국, 불변객체를 어떻게 작성할 지는 답이 있는 영역이라기보다는, 팀 컨벤션으로 조율해갈 문제라고 생각한다. Effective Java에서 가이드하는&amp;nbsp;불변성을 보장하는 범위에서 어떻게 구현할지 합당한 논리만 견지하시면 좋다고 생각한다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>Programming/.java</category>
      <author>가그린민트</author>
      <guid isPermaLink="true">https://brainbackdoor.tistory.com/141</guid>
      <comments>https://brainbackdoor.tistory.com/141#entry141comment</comments>
      <pubDate>Sun, 12 Apr 2020 11:07:30 +0900</pubDate>
    </item>
    <item>
      <title>일급컬렉션에 대하여</title>
      <link>https://brainbackdoor.tistory.com/140</link>
      <description>&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;a href=&quot;https://edu.nextstep.camp/c/8fWRxNWU/&quot;&gt;https://edu.nextstep.camp/c/8fWRxNWU/&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1585505003694&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;클린코드를 위한 TDD, 리팩토링 with Java&quot; data-og-description=&quot;&quot; data-og-host=&quot;edu.nextstep.camp&quot; data-og-source-url=&quot;https://edu.nextstep.camp/c/8fWRxNWU/&quot; data-og-url=&quot;https://edu.nextstep.camp/c/8fWRxNWU&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/M5ZcD/hyFtuzh28e/7KJrLSiGdXrWzIINIuRKQk/img.jpg?width=968&amp;amp;height=565&amp;amp;face=0_0_968_565,https://scrap.kakaocdn.net/dn/bft4QP/hyFrZHGYsw/JR6SRRdqY6dPyvq8SdqkxK/img.jpg?width=968&amp;amp;height=565&amp;amp;face=0_0_968_565&quot;&gt;&lt;a href=&quot;https://edu.nextstep.camp/c/8fWRxNWU/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://edu.nextstep.camp/c/8fWRxNWU/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/M5ZcD/hyFtuzh28e/7KJrLSiGdXrWzIINIuRKQk/img.jpg?width=968&amp;amp;height=565&amp;amp;face=0_0_968_565,https://scrap.kakaocdn.net/dn/bft4QP/hyFrZHGYsw/JR6SRRdqY6dPyvq8SdqkxK/img.jpg?width=968&amp;amp;height=565&amp;amp;face=0_0_968_565');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;클린코드를 위한 TDD, 리팩토링 with Java&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;edu.nextstep.camp&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;TDD,&amp;nbsp;클린코드&amp;nbsp;코드리뷰를&amp;nbsp;하다보면&amp;nbsp;&lt;b&gt;'원시값과&amp;nbsp;문자열을&amp;nbsp;포장하라',&amp;nbsp;'일급콜렉션을&amp;nbsp;쓴다'&lt;/b&gt;와&amp;nbsp;같은&amp;nbsp;피드백을&amp;nbsp;주곤한다.&amp;nbsp;Wrapper&amp;nbsp;Class를&amp;nbsp;작성하는&amp;nbsp;데에는&amp;nbsp;어려움이&amp;nbsp;없지만,&amp;nbsp;일급콜렉션을&amp;nbsp;학습하는&amp;nbsp;과정에서&amp;nbsp;보통&amp;nbsp;&lt;b&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;a style=&quot;color: #1a5490;&quot; href=&quot;https://jojoldu.tistory.com/412&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;동욱님의&amp;nbsp;블로그&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;를&amp;nbsp;접하는데&amp;nbsp;두번째&amp;nbsp;특징인&amp;nbsp;&lt;b&gt;'불변성'&lt;/b&gt;으로&amp;nbsp;인해&amp;nbsp;혼란을&amp;nbsp;겪는다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;a href=&quot;https://developerfarm.wordpress.com/2012/02/01/object_calisthenics_/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;b&gt;객체지향 생활체조에 제시된 일급콜렉션(First Class Collection)&lt;/b&gt;&lt;/a&gt;은 일급 시민(First Class Citizen)을 연상시킨다. 그리고 일급시민은 함수형 프로그래밍과 더불어 불변객체를 연상시킨다. 우선 일급시민은 무엇이고, 불변객체는 무엇일까?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;일급시민&lt;/b&gt;은&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;&amp;nbsp;1&lt;/b&gt;&lt;b&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;)&amp;nbsp;&lt;/span&gt;변수나&amp;nbsp;데이타에&amp;nbsp;할당&amp;nbsp;할&amp;nbsp;수&amp;nbsp;있고,&amp;nbsp;2)&amp;nbsp;객체의&amp;nbsp;인자로&amp;nbsp;넘길&amp;nbsp;수&amp;nbsp;있으며,&amp;nbsp;3)&amp;nbsp;객체의&amp;nbsp;리턴값으로&amp;nbsp;리턴&amp;nbsp;할수&amp;nbsp;있어야&amp;nbsp;한다.&lt;/b&gt;&lt;/span&gt; 자바는 1.8부터 동작을 파라미터화하여 전달할 수 있게 되었다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0; padding: 0; border: none; background-color: #272727; border-radius: 4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;getNumber(elm);&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;Function&amp;nbsp;result&amp;nbsp;=&amp;nbsp;getResult();&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;List&amp;nbsp;list&amp;nbsp;=&amp;nbsp;Arrays.asList(elm,&amp;nbsp;result);&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;그렇다면,&amp;nbsp;&lt;b&gt;불변객체&lt;/b&gt;는&amp;nbsp;무엇일까?&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1)&amp;nbsp;객체를&amp;nbsp;변경하는&amp;nbsp;메소드를&amp;nbsp;제공하지&amp;nbsp;않는다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;2)&amp;nbsp;재정의할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;메소드를&amp;nbsp;제공하지&amp;nbsp;않는다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;3)&amp;nbsp;모든&amp;nbsp;필드를&amp;nbsp;final로&amp;nbsp;만든다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;4)&amp;nbsp;모든&amp;nbsp;필드를&amp;nbsp;private으로&amp;nbsp;만든다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;5)&amp;nbsp;가변&amp;nbsp;객체를&amp;nbsp;참조하는&amp;nbsp;필드는&amp;nbsp;배타적으로&amp;nbsp;접근해야&amp;nbsp;한다&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;즉,&amp;nbsp;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;객체의&amp;nbsp;상태를&amp;nbsp;바꿀&amp;nbsp;수는&amp;nbsp;없으므로&amp;nbsp;새로운&amp;nbsp;상태로&amp;nbsp;변경해야&amp;nbsp;할&amp;nbsp;경우&amp;nbsp;새로운&amp;nbsp;불변&amp;nbsp;객체를&amp;nbsp;만들어&amp;nbsp;기존의&amp;nbsp;불변&amp;nbsp;객체를&amp;nbsp;대체&amp;nbsp;시켜야&amp;nbsp;한다.&lt;/b&gt;&lt;/span&gt;&amp;nbsp;이를&amp;nbsp;통해&amp;nbsp;불변객체는&amp;nbsp;Side-effect&amp;nbsp;및&amp;nbsp;동시성&amp;nbsp;이슈에&amp;nbsp;노출되지&amp;nbsp;않는다.&amp;nbsp;따라서&amp;nbsp;함수형&amp;nbsp;프로그래밍에서&amp;nbsp;Side-effect를&amp;nbsp;발생시키지&amp;nbsp;않기&amp;nbsp;위해&amp;nbsp;불변객체를&amp;nbsp;사용하는&amp;nbsp;것이지,&amp;nbsp;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;일급시민의&amp;nbsp;특징이&amp;nbsp;불변성을&amp;nbsp;보장하는&amp;nbsp;것은&amp;nbsp;아니다.&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;그렇다면,&amp;nbsp;&lt;b&gt;일급콜렉션&lt;/b&gt;은&amp;nbsp;무엇일까?&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #1a5490;&quot; href=&quot;https://developerfarm.wordpress.com/2012/02/01/object_calisthenics_/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;소트웍스 앤솔리지&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&amp;nbsp;설명을&amp;nbsp;토대로&amp;nbsp;보면,&amp;nbsp;우선&amp;nbsp;동욱님&amp;nbsp;블로그에서&amp;nbsp;설명하듯&amp;nbsp;&lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;'비지니스에&amp;nbsp;종속적인&amp;nbsp;자료구조',&amp;nbsp;'상태와&amp;nbsp;행위를&amp;nbsp;한&amp;nbsp;곳에서&amp;nbsp;관리',&amp;nbsp;'이름이&amp;nbsp;있는&amp;nbsp;컬렉션'&lt;/b&gt;&lt;/span&gt;의 특성을 가지고 있다. 이에 '원시값과 문자열을 포장하라'의 연장선상에서 자신만의 자료구조를 만들라는 의미에서 가이드를 한다고 이해하고 있다. 따라서 &lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;불변성을 반드시 보장해야 하는지는 알 수 없다.&lt;/b&gt;&lt;/span&gt; 물론 불변성을 지향할 경우 Side-effect는 발생하지 않겠지만, Collection 요소가 추가될 때마다 Collection을 새로 생성하는 등의 비효율성이 발생한다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;추가적으로,&amp;nbsp;Collection이&amp;nbsp;불변성을&amp;nbsp;가질&amp;nbsp;수&amp;nbsp;있기&amp;nbsp;위해서는&amp;nbsp;어떻게&amp;nbsp;구현해야할까?&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;java에서 final 예약어는 &lt;span style=&quot;color: #781b33;&quot;&gt;&lt;b&gt;해당 객체를 가리키는 포인터를 바꿀 수 없게하는 의미&lt;/b&gt;&lt;/span&gt;이다. 따라서 1) primitive type의 경우 불변이다. 2) reference type의 경우 값의 재할당은 안되지만, 속성을 변경하는 것은 가능하다. 이에 reference type을 불변으로 구현하기 위해서는 새로운 객체를 생성하여 반환하여야 한다. - &lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #1a5490;&quot; href=&quot;http://aeternum.egloos.com/v/1111257&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[참고링크]&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;보통&amp;nbsp;일급컬렉션을&amp;nbsp;구현할&amp;nbsp;때&amp;nbsp;Collections.unmodifiableList를&amp;nbsp;활용한다.&amp;nbsp;이&amp;nbsp;경우&amp;nbsp;일급컬렉션이&amp;nbsp;속성으로&amp;nbsp;가지고&amp;nbsp;있는&amp;nbsp;Collection&amp;nbsp;값이&amp;nbsp;외부에&amp;nbsp;노출될&amp;nbsp;경우&amp;nbsp;값의&amp;nbsp;변경/추가/삭제는&amp;nbsp;불가하기에&amp;nbsp;불변성을&amp;nbsp;띄는&amp;nbsp;것으로&amp;nbsp;오해할&amp;nbsp;수&amp;nbsp;있다.&amp;nbsp;하지만&amp;nbsp;&lt;b&gt;Collection에&amp;nbsp;담겨있는&amp;nbsp;Item의&amp;nbsp;속성은&amp;nbsp;변경이&amp;nbsp;가능&lt;/b&gt;하다.&amp;nbsp;따라서&amp;nbsp;&lt;b&gt;Collections.unmodifiableList(new&amp;nbsp;ArrayList&amp;lt;&amp;gt;(값))으로&amp;nbsp;한번&amp;nbsp;더&amp;nbsp;감싸&amp;nbsp;불변객체를&amp;nbsp;작성하거나,&amp;nbsp;값.stream().map(값의아이템::Clone).collect(toList())&amp;nbsp;등과&amp;nbsp;같이&amp;nbsp;깊은&amp;nbsp;복사를&amp;nbsp;하여야&amp;nbsp;한다.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Programming/.java</category>
      <author>가그린민트</author>
      <guid isPermaLink="true">https://brainbackdoor.tistory.com/140</guid>
      <comments>https://brainbackdoor.tistory.com/140#entry140comment</comments>
      <pubDate>Mon, 30 Mar 2020 03:03:39 +0900</pubDate>
    </item>
    <item>
      <title>Kubernetes Networking #1</title>
      <link>https://brainbackdoor.tistory.com/139</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;kubernetes_in_action.jpeg&quot; data-origin-width=&quot;200&quot; data-origin-height=&quot;251&quot; width=&quot;165&quot; height=&quot;207&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bglwAi/btqCID15ulA/cgPJSMOZrXBiUnR6tjlrj0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bglwAi/btqCID15ulA/cgPJSMOZrXBiUnR6tjlrj0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bglwAi/btqCID15ulA/cgPJSMOZrXBiUnR6tjlrj0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbglwAi%2FbtqCID15ulA%2FcgPJSMOZrXBiUnR6tjlrj0%2Fimg.jpg&quot; data-filename=&quot;kubernetes_in_action.jpeg&quot; data-origin-width=&quot;200&quot; data-origin-height=&quot;251&quot; width=&quot;165&quot; height=&quot;207&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 0.81em; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Noto Sans Light';&quot;&gt;이번 포스팅에서는 &lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;a style=&quot;color: #1a5490;&quot; href=&quot;http://acornpub.co.kr/book/k8s-in-action&quot;&gt;&lt;b&gt;Kubernetes in Action&lt;/b&gt;&lt;/a&gt;, &lt;b&gt;&lt;a style=&quot;color: #1a5490;&quot; href=&quot;http://www.yes24.com/Product/Goods/73416815&quot;&gt;매니징 쿠버네티스&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&amp;nbsp;을 활용하였습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 포스팅과 더불어 &lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #1a5490;&quot; href=&quot;https://woohhan.github.io/study/k8s_networking_deep_diving/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;한우형님의 블로그&lt;/a&gt;&lt;/b&gt;, &lt;/span&gt;&lt;b&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://gokube.io/media/Diving-Deep-Into-Kubernetes-Networking.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;Rancher Labs&lt;/span&gt;&lt;/a&gt;&lt;/b&gt; 자료 등을 함께 보시면 더 좋습니다.&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;1. 기본적인 특징&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;&lt;b&gt;* 네트워크 구성방식과 관계없이 파드간의 통신&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 모든 Pods는 다른 Pod와 NAT(Network Address Translation)을 사용하지 않고 통신할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;- 모든 Nodes는 NAT를 사용하지 않고 모든 Pods와 통신할 수 있다.&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;2. Container-to-Container Networking&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;font-size: 1.12em;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;* NET namespace가 외부와 통신하는 방식&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;veth interface를 이용하여 두 개의 interface가 Pair를 맺은 후, 한쪽 Interface에 패킷이 들어오면 자신에게 연결된 다른 네트워크 인터페이스로 패킷을 보내주는 식으로 동작한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;즉, &amp;nbsp;container가 생성되면, 이 pair interface 의 한 쪽은 container 내부 namespace에 할당(eth0)되며, 나머지 하나는 vethXXXX 라는 이름으로 docker0 bridge에 binding된다. docker0는 docker 실행시 자동으로 생성되는 가상 브릿지로 Container는 외부와 통신할 때 docker0 브릿지를 거쳐 통신을 하며, docker0 브릿지에 할당된 IP 대역에 맞춰 컨테이너 IP가 할당된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;스크린샷 2019-11-28 오후 9.09.12.png&quot; data-origin-width=&quot;1224&quot; data-origin-height=&quot;798&quot; width=&quot;533&quot; height=&quot;348&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbz2B1/btqCF734kDK/E4w8EeBj3vZ1UHmNq1TdY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbz2B1/btqCF734kDK/E4w8EeBj3vZ1UHmNq1TdY1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbz2B1/btqCF734kDK/E4w8EeBj3vZ1UHmNq1TdY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbbz2B1%2FbtqCF734kDK%2FE4w8EeBj3vZ1UHmNq1TdY1%2Fimg.png&quot; data-filename=&quot;스크린샷 2019-11-28 오후 9.09.12.png&quot; data-origin-width=&quot;1224&quot; data-origin-height=&quot;798&quot; width=&quot;533&quot; height=&quot;348&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0; padding: 0; border: none; background-color: #272727; border-radius: 4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;2&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;3&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;4&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;5&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;6&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;7&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;8&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;9&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;10&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;11&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;12&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;13&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;14&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;15&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;16&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;17&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;18&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;19&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;20&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;21&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;22&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;23&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;24&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;25&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;26&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;27&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;28&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;29&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;30&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;31&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;32&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;33&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;34&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;35&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;36&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;37&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;38&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;39&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;40&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;41&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;42&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;43&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;44&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;45&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;46&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;47&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;48&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;49&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;50&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;51&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;52&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;53&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;54&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;55&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;56&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;57&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;58&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;59&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;60&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;61&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;62&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;63&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;64&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;65&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;66&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;$&amp;nbsp;brctl&amp;nbsp;show&amp;nbsp;docker0&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;bridge&amp;nbsp;name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bridge&amp;nbsp;id&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;STP&amp;nbsp;enabled&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;interfaces&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;docker0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #c10aff;&quot;&gt;8000.&lt;/span&gt;02422a674d39&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;no&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;veth6bb114e&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;veth9517b99&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;vetha06291d&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;vethaf42c95&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;$&amp;nbsp;ip&amp;nbsp;link&amp;nbsp;ls&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;color: #c10aff;&quot;&gt;1&lt;/span&gt;:&amp;nbsp;lo:&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;LOOPBACK,UP,LOWER_UP&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;mtu&amp;nbsp;&lt;span style=&quot;color: #c10aff;&quot;&gt;65536&lt;/span&gt;&amp;nbsp;qdisc&amp;nbsp;noqueue&amp;nbsp;state&amp;nbsp;UNKNOWN&amp;nbsp;mode&amp;nbsp;DEFAULT&amp;nbsp;group&amp;nbsp;default&amp;nbsp;qlen&amp;nbsp;&lt;span style=&quot;color: #c10aff;&quot;&gt;1000&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;link&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;/&lt;/span&gt;loopback&amp;nbsp;&lt;span style=&quot;color: #c10aff;&quot;&gt;00&lt;/span&gt;:&lt;span style=&quot;color: #c10aff;&quot;&gt;00&lt;/span&gt;:&lt;span style=&quot;color: #c10aff;&quot;&gt;00&lt;/span&gt;:&lt;span style=&quot;color: #c10aff;&quot;&gt;00&lt;/span&gt;:&lt;span style=&quot;color: #c10aff;&quot;&gt;00&lt;/span&gt;:&lt;span style=&quot;color: #c10aff;&quot;&gt;00&lt;/span&gt;&amp;nbsp;brd&amp;nbsp;&lt;span style=&quot;color: #c10aff;&quot;&gt;00&lt;/span&gt;:&lt;span style=&quot;color: #c10aff;&quot;&gt;00&lt;/span&gt;:&lt;span style=&quot;color: #c10aff;&quot;&gt;00&lt;/span&gt;:&lt;span style=&quot;color: #c10aff;&quot;&gt;00&lt;/span&gt;:&lt;span style=&quot;color: #c10aff;&quot;&gt;00&lt;/span&gt;:&lt;span style=&quot;color: #c10aff;&quot;&gt;00&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;color: #c10aff;&quot;&gt;2&lt;/span&gt;:&amp;nbsp;ens3:&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;BROADCAST,MULTICAST,UP,LOWER_UP&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;mtu&amp;nbsp;&lt;span style=&quot;color: #c10aff;&quot;&gt;1500&lt;/span&gt;&amp;nbsp;qdisc&amp;nbsp;fq_codel&amp;nbsp;state&amp;nbsp;UP&amp;nbsp;mode&amp;nbsp;DEFAULT&amp;nbsp;group&amp;nbsp;default&amp;nbsp;qlen&amp;nbsp;&lt;span style=&quot;color: #c10aff;&quot;&gt;1000&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;link&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;/&lt;/span&gt;ether&amp;nbsp;&lt;span style=&quot;color: #c10aff;&quot;&gt;02&lt;/span&gt;:&lt;span style=&quot;color: #c10aff;&quot;&gt;42&lt;/span&gt;:ac:&lt;span style=&quot;color: #c10aff;&quot;&gt;11&lt;/span&gt;:&lt;span style=&quot;color: #c10aff;&quot;&gt;00&lt;/span&gt;:0f&amp;nbsp;brd&amp;nbsp;ff:ff:ff:ff:ff:ff&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;color: #c10aff;&quot;&gt;3&lt;/span&gt;:&amp;nbsp;docker0:&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;BROADCAST,MULTICAST,UP,LOWER_UP&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;mtu&amp;nbsp;&lt;span style=&quot;color: #c10aff;&quot;&gt;1500&lt;/span&gt;&amp;nbsp;qdisc&amp;nbsp;noqueue&amp;nbsp;state&amp;nbsp;UP&amp;nbsp;mode&amp;nbsp;DEFAULT&amp;nbsp;group&amp;nbsp;default&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;link&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;/&lt;/span&gt;ether&amp;nbsp;&lt;span style=&quot;color: #c10aff;&quot;&gt;02&lt;/span&gt;:&lt;span style=&quot;color: #c10aff;&quot;&gt;42&lt;/span&gt;:2a:&lt;span style=&quot;color: #c10aff;&quot;&gt;67&lt;/span&gt;:4d:&lt;span style=&quot;color: #c10aff;&quot;&gt;39&lt;/span&gt;&amp;nbsp;brd&amp;nbsp;ff:ff:ff:ff:ff:ff&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;color: #c10aff;&quot;&gt;7&lt;/span&gt;:&amp;nbsp;vetha06291d@if6:&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;BROADCAST,MULTICAST,UP,LOWER_UP&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;mtu&amp;nbsp;&lt;span style=&quot;color: #c10aff;&quot;&gt;1500&lt;/span&gt;&amp;nbsp;qdisc&amp;nbsp;noqueue&amp;nbsp;master&amp;nbsp;docker0&amp;nbsp;state&amp;nbsp;UP&amp;nbsp;mode&amp;nbsp;DEFAULT&amp;nbsp;group&amp;nbsp;default&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;link&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;/&lt;/span&gt;ether&amp;nbsp;5a:0d:&lt;span style=&quot;color: #c10aff;&quot;&gt;71&lt;/span&gt;:6c:7d:2f&amp;nbsp;brd&amp;nbsp;ff:ff:ff:ff:ff:ff&amp;nbsp;link&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;-&lt;/span&gt;netnsid&amp;nbsp;&lt;span style=&quot;color: #c10aff;&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;$&amp;nbsp;ethtool&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;-&lt;/span&gt;S&amp;nbsp;vetha06291d&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;NIC&amp;nbsp;statistics:&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;peer_ifindex:&amp;nbsp;&lt;span style=&quot;color: #c10aff;&quot;&gt;6&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;$&amp;nbsp;docker&amp;nbsp;network&amp;nbsp;ls&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;NETWORK&amp;nbsp;ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DRIVER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SCOPE&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;11f19f488ad3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bridge&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bridge&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;local&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;0e4b12c5d30e&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;host&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;host&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;local&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;f2d26841d49a&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;none&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;null&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;local&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;$&amp;nbsp;docker&amp;nbsp;network&amp;nbsp;inspect&amp;nbsp;bridge&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;[&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;Name&quot;&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;bridge&quot;&lt;/span&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;Id&quot;&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;11f19f488ad3e93c199ceb1e9b22b9541a4777fe4916f1c7b379e93773ce26cf&quot;&lt;/span&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;Created&quot;&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;2019-11-28T06:15:22.406695801Z&quot;&lt;/span&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;Scope&quot;&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;local&quot;&lt;/span&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;Driver&quot;&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;bridge&quot;&lt;/span&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;EnableIPv6&quot;&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color: #c10aff;&quot;&gt;false&lt;/span&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;IPAM&quot;&lt;/span&gt;:&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;Driver&quot;&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;default&quot;&lt;/span&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;Options&quot;&lt;/span&gt;:&amp;nbsp;null,&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;Config&quot;&lt;/span&gt;:&amp;nbsp;[&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;Subnet&quot;&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;172.18.0.1/24&quot;&lt;/span&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;Gateway&quot;&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;172.18.0.1&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;]&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;Internal&quot;&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color: #c10aff;&quot;&gt;false&lt;/span&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;Attachable&quot;&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color: #c10aff;&quot;&gt;false&lt;/span&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;Ingress&quot;&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color: #c10aff;&quot;&gt;false&lt;/span&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;ConfigFrom&quot;&lt;/span&gt;:&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;Network&quot;&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;ConfigOnly&quot;&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color: #c10aff;&quot;&gt;false&lt;/span&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;Containers&quot;&lt;/span&gt;:&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;09e556688ac65de82dbc4b08fe442853bbd3d2a2418e6564d9feb1677edf712e&quot;&lt;/span&gt;:&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;Name&quot;&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;k8s_POD_kubernetes-bootcamp-5b48cfdcbd-qzcsm_default_00dbb354-dc17-469c-a586-d5bd4d8158a9_0&quot;&lt;/span&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;EndpointID&quot;&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;7b8a3c0f47db0c39673fc1e5a82610cd094f3669d4b210f2c76796dfa2525222&quot;&lt;/span&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;MacAddress&quot;&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;02:42:ac:12:00:04&quot;&lt;/span&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;IPv4Address&quot;&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;172.18.0.4/24&quot;&lt;/span&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;IPv6Address&quot;&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;$&amp;nbsp;docker&amp;nbsp;ps&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;-&lt;/span&gt;a&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;CONTAINER&amp;nbsp;ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IMAGE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;COMMAND&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CREATED&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;STATUS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PORTS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NAMES&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;09e556688ac6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s.gcr.io&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;/&lt;/span&gt;pause:&lt;span style=&quot;color: #c10aff;&quot;&gt;3.&lt;/span&gt;&lt;span style=&quot;color: #c10aff;&quot;&gt;1&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;/pause&quot;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;About&amp;nbsp;an&amp;nbsp;hour&amp;nbsp;ago&amp;nbsp;&amp;nbsp;&amp;nbsp;Up&amp;nbsp;About&amp;nbsp;an&amp;nbsp;hour&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s_POD_kubernetes&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;-&lt;/span&gt;bootcamp&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;-&lt;/span&gt;5b48cfdcbd&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;-&lt;/span&gt;qzcsm_default_00dbb354&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;-&lt;/span&gt;dc17&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;-&lt;/span&gt;469c&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;-&lt;/span&gt;a586&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;-&lt;/span&gt;d5bd4d8158a9_0&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;Kubernetes의 경우 실제 동작하는 컨테이너 외에도 pause 컨테이너가 생성되는 것을 확인할 수 있다. pause 명령으로 실행된 Container는 실제로도 쿠버네티스가 SIGTERM 명령을 내리기 전까지는 아무것도 하지 않고 Sleep 상태로 존재한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;pause container의 역할을 파악하기 위해서는, 우선 Container network 방식 중 container 방식을 이해할 필요가 있다.&lt;/span&gt; &lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #1a5490;&quot; href=&quot;https://bluese05.tistory.com/38&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[자세한건 여기]&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;스크린샷 2019-11-28 오후 4.43.12.png&quot; data-origin-width=&quot;1686&quot; data-origin-height=&quot;728&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1S9gw/btqCIDA4678/yWUPICkkBaVX66TPJe4RaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1S9gw/btqCIDA4678/yWUPICkkBaVX66TPJe4RaK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1S9gw/btqCIDA4678/yWUPICkkBaVX66TPJe4RaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1S9gw%2FbtqCIDA4678%2FyWUPICkkBaVX66TPJe4RaK%2Fimg.png&quot; data-filename=&quot;스크린샷 2019-11-28 오후 4.43.12.png&quot; data-origin-width=&quot;1686&quot; data-origin-height=&quot;728&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;Kubernetes는 Pod 내에서 컨테이너 생성시 Bridge 모드가 아닌 Container모드로 띄우는데, Container 모드는 아래와 같이 다른 컨테이너를 지정하여 띄울 수 있어 지정한 Container간 네트워크를 공유하는 형태로 생성할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0; padding: 0; border: none; background-color: #272727; border-radius: 4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;$&amp;nbsp;docker&amp;nbsp;run&amp;nbsp;--net=container:{container_id}&amp;nbsp;-d&amp;nbsp;{image_name}&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;즉, 각 Container의 IP가 같으므로 외부에서 같은 IP로 접근하며, Container들은 서로 같은 port를 사용하는 것은 불가능하다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;pause 컨테이너는 pod의 컨테이너들이 namespace를 공유하여&amp;nbsp;컨테이너 간에는 localhost로 통신할 수 있게 한다. (IPC 통신도 가능)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그리고 Pod에서 init process 역할을 하여 좀비 프로세스를 거둬들이는 기능도 수행한다.&amp;nbsp;&lt;/span&gt; &lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #1a5490;&quot; href=&quot;https://blog.naver.com/PostView.nhn?blogId=alice_k106&amp;amp;logNo=221495126401&amp;amp;parentCategoryNo=&amp;amp;categoryNo=20&amp;amp;viewDate=&amp;amp;isShowPopularPosts=false&amp;amp;from=postView&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[자세한건 여기]&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;3. Pod-to-Pod Networking&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;CNI(Container Network Interface) plug in은 Virtual device (switch, router, tunnel 등)을 생성하는 등 Kubernetes의 가상 네트워크를 구성한다. 구체적으로는, 1) veth pair를 만들어 pod와 가상 네트워크를 연결, 2) pod의 routing table을 설정(IPAM), 3) Proxy ARP 기능 등을 수행한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;1) intra node&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;font-size: 0.81em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;intra_pod.gif&quot; data-origin-width=&quot;1100&quot; data-origin-height=&quot;619&quot; width=&quot;530&quot; height=&quot;298&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UCqk4/btqCIDA46cQ/EsHOgJUGwLtTkGsu8Tbki1/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UCqk4/btqCIDA46cQ/EsHOgJUGwLtTkGsu8Tbki1/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UCqk4/btqCIDA46cQ/EsHOgJUGwLtTkGsu8Tbki1/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/UCqk4/btqCIDA46cQ/EsHOgJUGwLtTkGsu8Tbki1/img.gif&quot; data-filename=&quot;intra_pod.gif&quot; data-origin-width=&quot;1100&quot; data-origin-height=&quot;619&quot; width=&quot;530&quot; height=&quot;298&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 0.81em;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Pod에서 실행되는 컨테이너는 Pod의 네트워크 네임스페이스를 사용한다. Container 관점에서 Pod는 하나의 네트워크 인터페이스를 가지고 있는 물리 머신으로 보인다. 각 Container의 localhost는 Pod를 통해 노드의 물리적 네트워크 인터페이스(예: root의 eth0)에 연결된다. 하나의 Node안에서 Pod간의 통신은 동일 네트워크 대역대에 있으므로 ARP을 사용하여 이루어진다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 1.12em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;2) inter node&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;font-size: 0.81em;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다른 Node간의 통신의 경우, 다른 네트워크 대역대(IPAM에 의해 네트워크 대역을 나누므로 Pod들은 고유의 IP를 가질 수 있게 되는 것이다.&lt;/span&gt; &lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #1a5490;&quot; href=&quot;https://docs.projectcalico.org/v3.9/networking/assigning-ip-addresses-topology&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[Calito의 IP할당]&lt;/a&gt;&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: #000000;&quot;&gt;그렇지 않을 경우 아래와 같이 docker0 IP가 중복일 수 있다.)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이므로 Default Gateway인 root의 eth0을 통해 외부로 패킷을 송신한다. (즉, OSI 7 Layer상 3계층 이상의 통신이 이루어진다)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;스크린샷 2019-11-28 오후 7.00.16.png&quot; data-origin-width=&quot;1698&quot; data-origin-height=&quot;2388&quot; width=&quot;801&quot; height=&quot;1126&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xUz1m/btqCIE07o0x/O6U20UQPyIQkZjTFXK3nG1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xUz1m/btqCIE07o0x/O6U20UQPyIQkZjTFXK3nG1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xUz1m/btqCIE07o0x/O6U20UQPyIQkZjTFXK3nG1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxUz1m%2FbtqCIE07o0x%2FO6U20UQPyIQkZjTFXK3nG1%2Fimg.png&quot; data-filename=&quot;스크린샷 2019-11-28 오후 7.00.16.png&quot; data-origin-width=&quot;1698&quot; data-origin-height=&quot;2388&quot; width=&quot;801&quot; height=&quot;1126&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;Kubernetes는 이처럼 각 Node의 Bridge가 서로 겹치지 않게 주소 대역을 할당한 수 routing table을 작성한다. 이렇게 Virtual Network Interface와 Bridge, Routing Rule의 조합을 일컬어 overlay network라 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;서브넷 마스크 표 .JPG&quot; data-origin-width=&quot;1486&quot; data-origin-height=&quot;654&quot; width=&quot;660&quot; height=&quot;290&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjXSj4/btqCFy8Aj8I/KQpp2SC6qmq5OMqPokuqL1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjXSj4/btqCFy8Aj8I/KQpp2SC6qmq5OMqPokuqL1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjXSj4/btqCFy8Aj8I/KQpp2SC6qmq5OMqPokuqL1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcjXSj4%2FbtqCFy8Aj8I%2FKQpp2SC6qmq5OMqPokuqL1%2Fimg.jpg&quot; data-filename=&quot;서브넷 마스크 표 .JPG&quot; data-origin-width=&quot;1486&quot; data-origin-height=&quot;654&quot; width=&quot;660&quot; height=&quot;290&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&lt;span style=&quot;color: #000000;&quot;&gt;/24 범위의 노드에서는 256개가 아닌 최대 110개의 Pod를 실행할 수 있다. 이렇게 하면 여유가 생겨서 지정된 노드의 Pod IP 범위에 일시적으로 IP 주소가 없어서 Pod를 예약하지 못하는 상황이 발생하지 않는다. /24보다 작은 범위의 경우 약 절반의 Pod를 해당 범위의 IP 주소로 예약할 수 있다. 물론 노드당 CIDR 범위를 줄여 IP 주소할당을 최적화하여 더 많은 클러스터를 생성할 수도 있다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;스크린샷 2019-11-28 오후 6.08.52.png&quot; data-origin-width=&quot;4808&quot; data-origin-height=&quot;2506&quot; width=&quot;601&quot; height=&quot;313&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cj01Gl/btqCKhqLr5D/yCwpptJNolpo2Wv9BX2NVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cj01Gl/btqCKhqLr5D/yCwpptJNolpo2Wv9BX2NVk/img.png&quot; data-alt=&quot;오리뎅이님의 쿠버네티스 네트워킹 장표 중 일부&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cj01Gl/btqCKhqLr5D/yCwpptJNolpo2Wv9BX2NVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcj01Gl%2FbtqCKhqLr5D%2FyCwpptJNolpo2Wv9BX2NVk%2Fimg.png&quot; data-filename=&quot;스크린샷 2019-11-28 오후 6.08.52.png&quot; data-origin-width=&quot;4808&quot; data-origin-height=&quot;2506&quot; width=&quot;601&quot; height=&quot;313&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;오리뎅이님의 쿠버네티스 네트워킹 장표 중 일부&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size14&quot;&gt;2편에서 'Pod-to-Service', 'Internet-to-Service' Networking이 이어집니다&lt;/p&gt;</description>
      <category>Infra Structure/.system</category>
      <author>가그린민트</author>
      <guid isPermaLink="true">https://brainbackdoor.tistory.com/139</guid>
      <comments>https://brainbackdoor.tistory.com/139#entry139comment</comments>
      <pubDate>Sun, 15 Mar 2020 16:23:30 +0900</pubDate>
    </item>
    <item>
      <title>글또 4기 다짐글</title>
      <link>https://brainbackdoor.tistory.com/138</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;440&quot; data-origin-height=&quot;444&quot; width=&quot;127&quot; height=&quot;128&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c7VQqV/btqClx9tqYJ/0BI0skjOtTDwD7kOopcLgK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c7VQqV/btqClx9tqYJ/0BI0skjOtTDwD7kOopcLgK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c7VQqV/btqClx9tqYJ/0BI0skjOtTDwD7kOopcLgK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc7VQqV%2FbtqClx9tqYJ%2F0BI0skjOtTDwD7kOopcLgK%2Fimg.png&quot; data-origin-width=&quot;440&quot; data-origin-height=&quot;444&quot; width=&quot;127&quot; height=&quot;128&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;font-size: 1.25em;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;벌써 2기, 3기에 이어 4기이다.&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;이제 1년이 지났다고 생각할 수도 있지만 상황이 많이도 변했다. &lt;a href=&quot;https://brainbackdoor.tistory.com/100&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2기 시작할 무렵&lt;/a&gt;에는 다른 회사에 있었고, 백엔드 개발자 내지 데이터 엔지니어로 반년 정도 일을 한 상태였고, 개발자 행사나 모임에 이제 막 발을 들이는 시기. 모든 게 아직은 많이 낯설던 때였던 거 같다. &lt;a href=&quot;https://brainbackdoor.tistory.com/118&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;3기를 시작할 무렵&lt;/a&gt;에는 테크코스며 이런저런 행사며 스터디들로 정신이 없다가 그렇게 &lt;a href=&quot;https://brainbackdoor.tistory.com/135&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;한 해를 마무리&lt;/a&gt;하고 4기를 시작할 즈음이 되었다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;사실 올해 1월부터는 계속 쉬고 있다. 굳이 갭이어를 두지 않아도 되겠다고 느낄 정도로 1월에는 팀 전체가 안식월을 보냈고, 2월에 어떻게 일을 시작하나 싶더니 코로나 이슈로 모든 일정이 미루어졌다. 그렇게 나태해질 즈음 글또가 적절한 균형감을 줄 수 있게 된 거 같아 다행이다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1500&quot; data-origin-height=&quot;2000&quot; width=&quot;271&quot; height=&quot;361&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GZPyd/btqCkQg8HyU/POwjiqqeQCasuDKX4wkV10/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GZPyd/btqCkQg8HyU/POwjiqqeQCasuDKX4wkV10/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GZPyd/btqCkQg8HyU/POwjiqqeQCasuDKX4wkV10/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGZPyd%2FbtqCkQg8HyU%2FPOwjiqqeQCasuDKX4wkV10%2Fimg.png&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1500&quot; data-origin-height=&quot;2000&quot; width=&quot;271&quot; height=&quot;361&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;나름의 다짐이라면,&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;이번 글또에서의 목표는 꾸준하게 글을 포스팅하는 것이다. (언제는 아니었겠느냐마는..) 이번 상반기에는 많은 욕심을 내지 않기로 하였다. &lt;span&gt;우선 작년에 작성하다만 쿠버네티스 네트워크를 포스팅한 후, &lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #1a5490;&quot; href=&quot;https://brainbackdoor.tistory.com/133&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;MySQL 다시 공부하기&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;를 주제로 장애 시 응급처치 방법 및 성능 개선 대상 식별, 인덱싱 + 실행계획, SQL 성능 개선, 캐시와 배치 처리, 트랜잭션, 백업 및 복구 전략 등의 목차로 포스팅할 계획이다. 그 외의 주제는 학습하다 인사이트를 얻을 경우 정리해서 포스팅하는 정도로 마무리할까 한다. &lt;s&gt;(글또는 경험상 하나의 스터디 주제를 메인으로 글을 쓸 때 효과가 가장 좋았던 거 같다.)&lt;/s&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;지속성장하기 위해서 글또는 너무 매력적인,&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;늘 하는 이야기이지만, &lt;span&gt;&lt;b&gt;학습&lt;/b&gt;이란, 배우고 익힌다는 의미로 생각하고 있고, &lt;b&gt;교육&lt;/b&gt;은 지식 및 기술을 가르치고 길러낸다는 맥락으로 이해하고 있다. 익히는 과정에서 일정 산출물을 내는 작업은 분명한 목표를 산정함으로써 동기부여를 일으키는 한편, 인출 과정을 거치면서 장기기억으로 변환되기도 한다. 그리고 그것을 교육하면서, 교육한 대상과 공동학습을 하게 되고 한 단계 더 성장한다고 생각한다. 무엇보다 산출물을 공유하면서 개개인은 학습한 내용을 정제하는 &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;한편 공유문화를 확산하여 지식의 선순환 구조를 가져갈 수 있다고 생각한다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;그런 맥락에서&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;올 상반기에는 글또 외에 몇 가지 목표가 있다. 우선은, 백엔드 개발자를 위한 로드맵의 완성도를 높여가는 것이다. 1기 크루들, 그리고 더 나아가 다양한 개발자들과 함께 만들어가려면 어떤 단계로 진행해갈지 고민 중이다. 많은 형태로 개발자 로드맵들이 제시되지만, 너무 추상화된 부분도 많고 범위도 넓어서 로드맵이 정작 필요한 주니어 개발자들에게는 다소 접근하기 어렵다는 느낌을 많이 받았다. 그런&amp;nbsp; 맥락에서 지난 테크코스 1기를 돌아보며 뼈대를 작성해보았다. 앞으로 어떤 형태로 발전해나갈지 기대하는 부분이다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;a href=&quot;https://github.com/woowacourse/roadmap&quot;&gt;https://github.com/woowacourse/roadmap&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1583075601763&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;object&quot; data-og-title=&quot;woowacourse/roadmap&quot; data-og-description=&quot;Contribute to woowacourse/roadmap development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/woowacourse/roadmap&quot; data-og-url=&quot;https://github.com/woowacourse/roadmap&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/boKvdN/hyE7NsP4EB/1NLEwdRVLvan3gvLgMfpIK/img.png?width=300&amp;amp;height=300&amp;amp;face=0_0_300_300,https://scrap.kakaocdn.net/dn/b7dH4O/hyE7PRJJPX/KorUgNEUdEoIKMxLzQzgY1/img.png?width=1189&amp;amp;height=462&amp;amp;face=0_0_1189_462&quot;&gt;&lt;a href=&quot;https://github.com/woowacourse/roadmap&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/woowacourse/roadmap&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/boKvdN/hyE7NsP4EB/1NLEwdRVLvan3gvLgMfpIK/img.png?width=300&amp;amp;height=300&amp;amp;face=0_0_300_300,https://scrap.kakaocdn.net/dn/b7dH4O/hyE7PRJJPX/KorUgNEUdEoIKMxLzQzgY1/img.png?width=1189&amp;amp;height=462&amp;amp;face=0_0_1189_462');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;woowacourse/roadmap&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;Contribute to woowacourse/roadmap development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;둘째로는 외부 강의이다. 이번에 사내 비 개발자들을 대상으로 SQL 강의를 하게 되었다. 그리고 같은 주제로 외부로도 오픈하려 한다. 이전 회사에서도 느꼈었는데, 자신이 하는 일에 Ownership을 강하게 가진 사람일수록 성장 욕구가 강한 경향이 있는 것 같다. 개발 문화를 개발자에 국한한 것이 아닌 조직문화의 관점에서 바라볼 때, 이번 상반기 나의 활동으로 비 개발자와 개발자 간의 소통에 개선이 된다면, 좋은 개발 문화에 나름의 형태로 Contribution 하는 것이지 않을까 하는 생각이다.&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;a href=&quot;https://edu.nextstep.camp/c/VulQIb2a&quot;&gt;https://edu.nextstep.camp/c/VulQIb2a&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1583075748997&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;SQL 넘어 제플린으로&quot; data-og-description=&quot;${lecture.title} ${lesson.title} 현재 수업이 준비중입니다.&quot; data-og-host=&quot;edu.nextstep.camp&quot; data-og-source-url=&quot;https://edu.nextstep.camp/c/VulQIb2a&quot; data-og-url=&quot;https://edu.nextstep.camp/c/VulQIb2a&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ta0tP/hyE7QpzLNI/mMc91TuKyNaGkNWhnJXfFk/img.png?width=1608&amp;amp;height=970&amp;amp;face=0_0_1608_970,https://scrap.kakaocdn.net/dn/pfAjm/hyE7RWh0vz/OHpQ2eBpYNSk585pEjYEwK/img.png?width=1608&amp;amp;height=970&amp;amp;face=0_0_1608_970,https://scrap.kakaocdn.net/dn/QnUkQ/hyE7XIYUSG/1fYut7jWc3t72MConH0qk1/img.png?width=598&amp;amp;height=535&amp;amp;face=0_0_598_535&quot;&gt;&lt;a href=&quot;https://edu.nextstep.camp/c/VulQIb2a&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://edu.nextstep.camp/c/VulQIb2a&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ta0tP/hyE7QpzLNI/mMc91TuKyNaGkNWhnJXfFk/img.png?width=1608&amp;amp;height=970&amp;amp;face=0_0_1608_970,https://scrap.kakaocdn.net/dn/pfAjm/hyE7RWh0vz/OHpQ2eBpYNSk585pEjYEwK/img.png?width=1608&amp;amp;height=970&amp;amp;face=0_0_1608_970,https://scrap.kakaocdn.net/dn/QnUkQ/hyE7XIYUSG/1fYut7jWc3t72MConH0qk1/img.png?width=598&amp;amp;height=535&amp;amp;face=0_0_598_535');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;SQL 넘어 제플린으로&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;${lecture.title} ${lesson.title} 현재 수업이 준비중입니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;edu.nextstep.camp&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;최근의 나태해진 나 자신을 다시 가다듬고 주기적으로 글을 써가며 올해도 조금은 성장해보길 고대해본다. 그리고 역시나, 글또를 통해 새롭게 알아가게 될 사람들과 그들에게서 받을 영감이 너무나 기대된다. &lt;span style=&quot;color: #333333;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Log/.daily</category>
      <author>가그린민트</author>
      <guid isPermaLink="true">https://brainbackdoor.tistory.com/138</guid>
      <comments>https://brainbackdoor.tistory.com/138#entry138comment</comments>
      <pubDate>Sun, 1 Mar 2020 23:56:36 +0900</pubDate>
    </item>
    <item>
      <title>200 vs 404</title>
      <link>https://brainbackdoor.tistory.com/137</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;스크린샷 2020-02-12 오전 2.46.57.png&quot; data-origin-width=&quot;588&quot; data-origin-height=&quot;548&quot; width=&quot;182&quot; height=&quot;170&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/trEZo/btqBS5FQGkU/7N43dgUP5WpRKE3K3IBNwK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/trEZo/btqBS5FQGkU/7N43dgUP5WpRKE3K3IBNwK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/trEZo/btqBS5FQGkU/7N43dgUP5WpRKE3K3IBNwK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtrEZo%2FbtqBS5FQGkU%2F7N43dgUP5WpRKE3K3IBNwK%2Fimg.png&quot; data-filename=&quot;스크린샷 2020-02-12 오전 2.46.57.png&quot; data-origin-width=&quot;588&quot; data-origin-height=&quot;548&quot; width=&quot;182&quot; height=&quot;170&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;584&quot; height=&quot;150&quot; data-origin-width=&quot;1222&quot; data-origin-height=&quot;314&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDTDHj/btqBUSTinYV/frnwz715K9jj7zyztzJSl0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDTDHj/btqBUSTinYV/frnwz715K9jj7zyztzJSl0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDTDHj/btqBUSTinYV/frnwz715K9jj7zyztzJSl0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDTDHj%2FbtqBUSTinYV%2Ffrnwz715K9jj7zyztzJSl0%2Fimg.png&quot; width=&quot;584&quot; height=&quot;150&quot; data-origin-width=&quot;1222&quot; data-origin-height=&quot;314&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://edu.nextstep.camp/c/R89PYi5H/&quot;&gt;ATDD 강의&lt;/a&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;코드리뷰 중 이런 질문을 받았다. &lt;span style=&quot;color: #333333;&quot;&gt;질문의 요지는,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #000000; color: #ffffff;&quot;&gt;&amp;nbsp;/stations/{id}&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;혹은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #ffffff; background-color: #000000;&quot;&gt;&amp;nbsp;/stations?name={name}&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;등과 같은 요청에 해당하는 데이터가 없을 경우, 어떤 응답코드가 적절한가이다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;H&lt;/span&gt;TTP Status Code에 대해서는 나름대로 &lt;a href=&quot;https://brainbackdoor.tistory.com/123&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;기준&lt;/a&gt;을 세웠던지라 별다른 고민은 없었는데, 팀원과 이야기 중에 생각이 다른 부분이 있어 다른 리뷰어들과도 이야기를 나누어보았다. 이 내용을 정리하고 공유하고 또 다른 의견들을 듣는 것도 좋을 거 같아 포스팅해본다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;&lt;span&gt;우선, 200이 적절하다는 주장을 살펴보자.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;HTTP에서 이야기하는 resource 라는 개념을 서버 데이터와 엮지 않고 온전히 URI 라고 보아야 한다. 즉, &lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;서버의 데이터 없음을 HTTP resource와 엮지 않아야 한다&lt;/b&gt;는 것으로, 위의 경우에는 &lt;b&gt;빈값의 200 응답&lt;/b&gt;을 해야 한다는 것이다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;다만, &lt;b&gt;DELETE 메서드에서 없는 데이터를 삭제하려고 했을 때 이 요청은 400 에러로 처리&lt;/b&gt;하여야 하는데, 이는 서버에서 요청이 수용되었으나 클라이언트의 요청이 잘못되었음을 의미하기 때문이다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;이렇게 리소스와 데이터 자원을 분리하는 이유는 &lt;b&gt;명확함을 강조&lt;/b&gt;하기 위함이다. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;그리고 REST를 지향하는 API에서도, &lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;삭제를 실행 했을 때 그 데이터가 삭제 가능한 상황을 단순하게 데이터가 존재한다고 판단하지 않는다. 그 데이터에 얽혀있는 비지니스적인 요소에 따라 요청 클라이언트에게 데이터가 없다고 밝혀야 할 수도 있고, 삭제가 불가능하다고 밝혀야 할 때도 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;가령, &lt;/span&gt;&lt;span&gt;주문을 실행한다고 했을 때 주문이 실행 불가능한 여러가지 경우가 있다. 재고가 떨어져서, 혹은 판매자가 폐업한 경우 등의 상황에서 404, 400, 500 에러는 적절치 않다. 리소스 수용이 정상적으로 이루어졌고, 요청한 데이터에도 이상이 없고(클라이언트에게 책임이 없고), 서버에서 비정상적이고 식별 불가한 에러를 발생한 것도 아니므로 200 응답을 주는 것이 적절해 보인다. 다만 클라이언트에서 식별에 대한 응답을 하기 위해 요청은 성공했지만 주문에는 실패했다는 의미로 내부적으로 관리되는 상태 코드를 응답 body 에 명시하도록 한다. &lt;/span&gt;&lt;span&gt;이러한 사용은 실제 서버에 이상이 있는지, 클라이언트가 잘못된 요청을 하는지에 대한 구분을 명확히 함으로써 장애시 트래킹 포인트를 좁히는데에도 큰 역할을 한다.&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;즉, &lt;b&gt;조회시 없을 때는 200, PUT/DELETE의 경우 상황에 따라 (데이터가 있어야하는데 없는 경우) 4xx, 아니면 200에 응답 body에 별도로 메시지나 정책적으로 만든 상태코드를 담아서 보내는 것이 적절하다&lt;/b&gt;는 주장이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;위의 주장은 현재 국내 몇 군데 규모있는 회사 개발자들의 의견이었고, 나 역시 그렇게 생각하고 있었다. 그래서 확인차 몇군데 둘러보니 실제로 그렇게 운영되고 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;gt; 쿠팡 404 페이지 : &lt;/span&gt;&lt;a href=&quot;https://www.coupang.com/vp/productsasdsasd&quot;&gt;https://www.coupang.com/vp/productsasdsasd&lt;/a&gt;&lt;br /&gt;&lt;span&gt;&amp;gt; 쿠팡 200 페이지 : &lt;/span&gt;&lt;a href=&quot;https://www.coupang.com/vp/products/1229153213123123124124&quot;&gt;https://www.coupang.com/vp/products/1229153213123123124124&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;a href=&quot;https://luckyyowu.tistory.com/377&quot;&gt;https://luckyyowu.tistory.com/377&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1581442527348&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;HTTP 404 Status Code 에 대한 고찰&quot; data-og-description=&quot;뭐가 문제였나 필자는 현재 HMR(가정간편식) 커머스를 다루는 모 스타트업에서 백엔드 개발자로 재직 중이다. 말이 백엔드지 최근 변화되고 있는 트렌드에 맞춰 열심히 API 작성 셔틀을 하고 있다. API 개발에 주..&quot; data-og-host=&quot;luckyyowu.tistory.com&quot; data-og-source-url=&quot;https://luckyyowu.tistory.com/377&quot; data-og-url=&quot;https://luckyyowu.tistory.com/377&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/I6Pc5/hyET42BNqC/ZX52JZ1o1mCMyNIm649Bgk/img.png?width=638&amp;amp;height=479&amp;amp;face=0_0_638_479,https://scrap.kakaocdn.net/dn/vQjAY/hyEUbOcTXu/A8bvhyk4htdVxO3GdoDSK0/img.png?width=638&amp;amp;height=479&amp;amp;face=0_0_638_479,https://scrap.kakaocdn.net/dn/e6gvp/hyEUhU97kr/Kj1knmRxIkoKMtD9kWjCTK/img.jpg?width=720&amp;amp;height=719&amp;amp;face=0_0_720_719&quot;&gt;&lt;a href=&quot;https://luckyyowu.tistory.com/377&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://luckyyowu.tistory.com/377&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/I6Pc5/hyET42BNqC/ZX52JZ1o1mCMyNIm649Bgk/img.png?width=638&amp;amp;height=479&amp;amp;face=0_0_638_479,https://scrap.kakaocdn.net/dn/vQjAY/hyEUbOcTXu/A8bvhyk4htdVxO3GdoDSK0/img.png?width=638&amp;amp;height=479&amp;amp;face=0_0_638_479,https://scrap.kakaocdn.net/dn/e6gvp/hyEUhU97kr/Kj1knmRxIkoKMtD9kWjCTK/img.jpg?width=720&amp;amp;height=719&amp;amp;face=0_0_720_719');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;HTTP 404 Status Code 에 대한 고찰&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;뭐가 문제였나 필자는 현재 HMR(가정간편식) 커머스를 다루는 모 스타트업에서 백엔드 개발자로 재직 중이다. 말이 백엔드지 최근 변화되고 있는 트렌드에 맞춰 열심히 API 작성 셔틀을 하고 있다. API 개발에 주..&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;luckyyowu.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;위의 내용만 보면 200이 타당한 듯 보인다. 하지만 404 의견을 듣고 자료를 찾아보니 이거 역시 만만치가 않다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;우선, 404 NOT FOUND가 적절하다는 입장은, &lt;a href=&quot;https://tools.ietf.org/html/rfc7231&quot;&gt;https://tools.ietf.org/html/rfc7231&lt;/a&gt; 에 근거를 두었다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;## 200 status code&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #010101; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0; padding: 0; border: none; background-color: #fafafa; border-radius: 4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #e5e5e5;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #666; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #010101; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;The&amp;nbsp;200&amp;nbsp;(OK)&amp;nbsp;status&amp;nbsp;code&amp;nbsp;indicates&amp;nbsp;that&amp;nbsp;the&amp;nbsp;request&amp;nbsp;has&amp;nbsp;succeeded.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;The&amp;nbsp;payload&amp;nbsp;sent&amp;nbsp;in&amp;nbsp;a&amp;nbsp;200&amp;nbsp;response&amp;nbsp;depends&amp;nbsp;on&amp;nbsp;the&amp;nbsp;request&amp;nbsp;method.&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;GET&amp;nbsp;a&amp;nbsp;representation&amp;nbsp;of&amp;nbsp;the&amp;nbsp;target&amp;nbsp;resource;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;200은 요청이 성공했음을 나타내며 페이로드로 해당 resouce의 representation이 응답된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #010101; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0; padding: 0; border: none; background-color: #fafafa; border-radius: 4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #e5e5e5;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #666; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #010101; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;Aside&amp;nbsp;from&amp;nbsp;responses&amp;nbsp;to&amp;nbsp;CONNECT,&amp;nbsp;a&amp;nbsp;200&amp;nbsp;response&amp;nbsp;always&amp;nbsp;has&amp;nbsp;a&amp;nbsp;payload,&amp;nbsp;though&amp;nbsp;an&amp;nbsp;origin&amp;nbsp;server&amp;nbsp;MAY&amp;nbsp;generate&amp;nbsp;a&amp;nbsp;payload&amp;nbsp;body&amp;nbsp;of&amp;nbsp;zero&amp;nbsp;length.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;If&amp;nbsp;no&amp;nbsp;payload&amp;nbsp;is&amp;nbsp;desired,&amp;nbsp;an&amp;nbsp;origin&amp;nbsp;server&amp;nbsp;ought&amp;nbsp;to&amp;nbsp;send&amp;nbsp;204&amp;nbsp;(No&amp;nbsp;Content)&amp;nbsp;instead.&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;200은 항상 payload를 가지고 있어야 하고 응답이 없는 경우 204를 보내주어야 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;## 204 status code&lt;/b&gt;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #010101; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0; padding: 0; border: none; background-color: #fafafa; border-radius: 4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #e5e5e5;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #666; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #010101; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;The&amp;nbsp;204&amp;nbsp;(No&amp;nbsp;Content)&amp;nbsp;status&amp;nbsp;code&amp;nbsp;indicates&amp;nbsp;that&amp;nbsp;the&amp;nbsp;server&amp;nbsp;has&amp;nbsp;successfully&amp;nbsp;fulfilled&amp;nbsp;the&amp;nbsp;request&amp;nbsp;and&amp;nbsp;that&amp;nbsp;there&amp;nbsp;is&amp;nbsp;no&amp;nbsp;additional&amp;nbsp;content&amp;nbsp;to&amp;nbsp;send&amp;nbsp;in&amp;nbsp;the&amp;nbsp;response&amp;nbsp;payload&amp;nbsp;body.&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0 2px 4px 0;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;204는 요청을 성공적으로 이행하고 응답 페이로드에 추가적으로 보낼 컨텐츠가 없는 경우를 나타낸다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #010101; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0; padding: 0; border: none; background-color: #fafafa; border-radius: 4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #e5e5e5;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #666; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #010101; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;For&amp;nbsp;example,&amp;nbsp;if&amp;nbsp;a&amp;nbsp;204&amp;nbsp;status&amp;nbsp;code&amp;nbsp;is&amp;nbsp;received&amp;nbsp;in&amp;nbsp;response&amp;nbsp;to&amp;nbsp;a&amp;nbsp;PUT&amp;nbsp;request&amp;nbsp;and&amp;nbsp;the&amp;nbsp;response&amp;nbsp;contains&amp;nbsp;an&amp;nbsp;ETag&amp;nbsp;header&amp;nbsp;field,&amp;nbsp;then&amp;nbsp;the&amp;nbsp;PUT&amp;nbsp;was&amp;nbsp;successful&amp;nbsp;and&amp;nbsp;the&amp;nbsp;ETag&amp;nbsp;field-value&amp;nbsp;contains&amp;nbsp;the&amp;nbsp;entity-tag&amp;nbsp;for&amp;nbsp;the&amp;nbsp;new&amp;nbsp;representation&amp;nbsp;of&amp;nbsp;that&amp;nbsp;target&amp;nbsp;resource.&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0 2px 4px 0;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;예를 들면, 추가적으로 보낼 컨텐츠가 없는 경우란 PUT 요청을 받고, ETag Header 필드를 포함하여 contents에 보낼 필요가 없을 때를 말한다. 즉, 204 응답은 타겟 리소스에 성공적으로 적용되었음을 나타내며, 암시적으로 useragent가 횡단(접근)할 필요가 없음을 나타낸다.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;b&gt;## 404 status code&lt;/b&gt;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #010101; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0; padding: 0; border: none; background-color: #fafafa; border-radius: 4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #e5e5e5;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #666; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #010101; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;The&amp;nbsp;404&amp;nbsp;(Not&amp;nbsp;Found)&amp;nbsp;status&amp;nbsp;code&amp;nbsp;indicates&amp;nbsp;that&amp;nbsp;the&amp;nbsp;origin&amp;nbsp;server&amp;nbsp;did&amp;nbsp;not&amp;nbsp;find&amp;nbsp;a&amp;nbsp;current&amp;nbsp;representation&amp;nbsp;for&amp;nbsp;the&amp;nbsp;target&amp;nbsp;resource&amp;nbsp;or&amp;nbsp;is&amp;nbsp;not&amp;nbsp;willing&amp;nbsp;to&amp;nbsp;disclose&amp;nbsp;that&amp;nbsp;one&amp;nbsp;exists.&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0 2px 4px 0;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;404 응답은 서버가 타겟 리소스의 representation을 찾지 못하였거나 존재한다는 것을 드러내려고 하지 않음을 나타낸다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;즉, &lt;/b&gt;HTTP 요청의 대상이 리소스임을 생각해 본다면&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;The target of an HTTP request is called a &quot;resource&quot;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;서버가 정상적으로 동작함의 여부가 아니라 요청한 리소스가 정상적으로 응답이 오는가에 따라서 응답 코드를 판단해야 한다고 생각하다는 것으로, rfc7231문서에 정의된 Response Status Code 중 200과 204 두 상태 코드 모두 &lt;b&gt;uri가 가리키는 resource가 존재하지 않는 경우&lt;/b&gt;의 상태를 나타내기는 어렵다는 주장이며, 404 상태 코드가 보다 명확하다는 입장이었다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;추가적으로, ResponseEntity 구현체를 보면 Body에 null을 넘겨줄 경우 notFound()를 리턴하도록 정적 팩토리 메서드를 작성했음을 확인할 수 있다.&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0; padding: 0; border: none; background-color: #272727; border-radius: 4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;ResponseEntity&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;of(Optional&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;T&lt;span style=&quot;color: #0086b3;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;body)&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Assert.notNull(body,&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;Body&amp;nbsp;must&amp;nbsp;not&amp;nbsp;be&amp;nbsp;null&quot;&lt;/span&gt;);&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;return&lt;/span&gt;&amp;nbsp;body.map(ResponseEntity::ok).orElse(notFound().build());&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그리고 HTTP 완벽가이드를 보면, &lt;span&gt;Not Found에 대해 이런 설명이 있다. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;i&gt;&lt;span&gt;&quot;서버가 요청한 URL을 찾을 수 없음을 알려주기 위해 사용한다. 종종, 클라이언트 애플리케이션이 사용자에게 보여주기 위한 엔터티가 포함된다.&quot;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그리고 트위터의 status code 정의를 보면, &lt;b&gt;&quot;&lt;/b&gt;&lt;span&gt;&lt;b&gt;The URI requested is invalid or the resource requested, such as a user, does not exist.&quot;&lt;/b&gt; 라고 가이드 하고 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;a href=&quot;https://developer.twitter.com/en/docs/basics/response-codes&quot;&gt;https://developer.twitter.com/en/docs/basics/response-codes&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1581441352115&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Response codes&quot; data-og-description=&quot;The standard Twitter API returns HTTP status codes in addition to JSON-based error codes and messages.&quot; data-og-host=&quot;developer.twitter.com&quot; data-og-source-url=&quot;https://developer.twitter.com/en/docs/basics/response-codes&quot; data-og-url=&quot;https://developer.twitter.com/en/docs/basics/response-codes&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/5SzZX/hyEUfiKS0B/zu3uXrGTUmmrXZLD6SzzJk/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200&quot;&gt;&lt;a href=&quot;https://developer.twitter.com/en/docs/basics/response-codes&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developer.twitter.com/en/docs/basics/response-codes&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/5SzZX/hyEUfiKS0B/zu3uXrGTUmmrXZLD6SzzJk/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Response codes&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;The standard Twitter API returns HTTP status codes in addition to JSON-based error codes and messages.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;developer.twitter.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;아래의 링크도 같이 확인해보자.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://softwareengineering.stackexchange.com/questions/203492/when-to-use-http-status-code-404-in-an-api&quot;&gt;https://softwareengineering.stackexchange.com/questions/203492/when-to-use-http-status-code-404-in-an-api&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1581441011676&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;When to use HTTP status code 404 in an API&quot; data-og-description=&quot;I am working on a project and after arguing with people at work for about more than a hour. I decided to know what people on stack-exchange might say. We're writing an API for a system, there is a...&quot; data-og-host=&quot;softwareengineering.stackexchange.com&quot; data-og-source-url=&quot;https://softwareengineering.stackexchange.com/questions/203492/when-to-use-http-status-code-404-in-an-api&quot; data-og-url=&quot;https://softwareengineering.stackexchange.com/questions/203492/when-to-use-http-status-code-404-in-an-api&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/catpmZ/hyET8qoOA5/yJkrv3kk9tdZBpEykyjL7k/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316&quot;&gt;&lt;a href=&quot;https://softwareengineering.stackexchange.com/questions/203492/when-to-use-http-status-code-404-in-an-api&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://softwareengineering.stackexchange.com/questions/203492/when-to-use-http-status-code-404-in-an-api&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/catpmZ/hyET8qoOA5/yJkrv3kk9tdZBpEykyjL7k/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;When to use HTTP status code 404 in an API&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;I am working on a project and after arguing with people at work for about more than a hour. I decided to know what people on stack-exchange might say. We're writing an API for a system, there is a...&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;softwareengineering.stackexchange.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;span&gt; &lt;a href=&quot;https://medium.com/@laeshiny/get-%EC%9A%94%EC%B2%AD-%EC%8B%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B0%80-%EC%97%86%EC%9C%BC%EB%A9%B4-200-or-404-4ab7430084af&quot;&gt;https://medium.com/@laeshiny/get-요청-시-데이터가-없으면-200-or-404-4ab7430084af&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1581441026451&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Get 요청 시 데이터가 없으면 200 or 404 ?&quot; data-og-description=&quot;아래와 같은 URL을 Get Method로 호출했다고 가정하겠습니다&quot; data-og-host=&quot;medium.com&quot; data-og-source-url=&quot;https://medium.com/@laeshiny/get-%EC%9A%94%EC%B2%AD-%EC%8B%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B0%80-%EC%97%86%EC%9C%BC%EB%A9%B4-200-or-404-4ab7430084af&quot; data-og-url=&quot;https://medium.com/@laeshiny/get-%EC%9A%94%EC%B2%AD-%EC%8B%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B0%80-%EC%97%86%EC%9C%BC%EB%A9%B4-200-or-404-4ab7430084af&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://medium.com/@laeshiny/get-%EC%9A%94%EC%B2%AD-%EC%8B%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B0%80-%EC%97%86%EC%9C%BC%EB%A9%B4-200-or-404-4ab7430084af&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://medium.com/@laeshiny/get-%EC%9A%94%EC%B2%AD-%EC%8B%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B0%80-%EC%97%86%EC%9C%BC%EB%A9%B4-200-or-404-4ab7430084af&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Get 요청 시 데이터가 없으면 200 or 404 ?&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;아래와 같은 URL을 Get Method로 호출했다고 가정하겠습니다&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;medium.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;s&gt;(위 포스팅의 저자분은 이제 200으로 보내신다는 이야기를 듣기는 했다만..)&lt;/s&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;사실 우리와 비슷한 논쟁이 stackoverflow에 이미 있었기는 하다.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://stackoverflow.com/questions/11746894/what-is-the-proper-rest-response-code-for-a-valid-request-but-an-empty-data&quot;&gt;https://stackoverflow.com/questions/11746894/what-is-the-proper-rest-response-code-for-a-valid-request-but-an-empty-data&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1581445208232&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;What is the proper REST response code for a valid request but an empty data?&quot; data-og-description=&quot;For example you run a GET request for users/9 but there is no user with id #9. Which is the best response code? 200 OK 202 Accepted 204 No Content 400 Bad Request 404 Not Found&quot; data-og-host=&quot;stackoverflow.com&quot; data-og-source-url=&quot;https://stackoverflow.com/questions/11746894/what-is-the-proper-rest-response-code-for-a-valid-request-but-an-empty-data&quot; data-og-url=&quot;https://stackoverflow.com/questions/11746894/what-is-the-proper-rest-response-code-for-a-valid-request-but-an-empty-data&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bUkE86/hyET7ZlsOV/vhWKgufKTekkbheXrBaKr1/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/11746894/what-is-the-proper-rest-response-code-for-a-valid-request-but-an-empty-data&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://stackoverflow.com/questions/11746894/what-is-the-proper-rest-response-code-for-a-valid-request-but-an-empty-data&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bUkE86/hyET7ZlsOV/vhWKgufKTekkbheXrBaKr1/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;What is the proper REST response code for a valid request but an empty data?&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;For example you run a GET request for users/9 but there is no user with id #9. Which is the best response code? 200 OK 202 Accepted 204 No Content 400 Bad Request 404 Not Found&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;stackoverflow.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;s&gt;위의 stackoverflow 답글 중에 query string의 경우 빈 배열로 리턴해야 한다는 의견도 있지만, 나는 query string도 url의 한 파트라고 보기에 이는 반대한다. (&lt;a href=&quot;https://en.wikipedia.org/wiki/Query_string&quot;&gt;https://en.wikipedia.org/wiki/Query_string&lt;/a&gt;)&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;이쯤되니 상태코드도 팀 컨벤션처럼 생각해야 하나, 아니면 이것도 글로벌 기준과 국내 실무와의 괴리 정도로 보면 되는 것인가하는 생각도 든다. 이런 이야기들을 하고 있으니 옆에서 &quot;그냥 규원님께 물어봐. &lt;span style=&quot;color: #333333;&quot;&gt; &lt;/span&gt;&quot; 하는 의견도 있었다. &lt;s&gt;(사실 이 포스팅을 해야겠다는 생각이 들었던 시점도..&lt;span style=&quot;color: #333333;&quot;&gt; &lt;/span&gt;)&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;다른 분들은 어떻게들 생각하시는지, 어떻게들 하고 계신지 궁금하여 포스팅해본다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이 포스팅에 답글이나, 페북에 댓글이 달리면 추가로 본문을 수정해볼까 합니다.&lt;/p&gt;</description>
      <category>Infra Structure/.system</category>
      <author>가그린민트</author>
      <guid isPermaLink="true">https://brainbackdoor.tistory.com/137</guid>
      <comments>https://brainbackdoor.tistory.com/137#entry137comment</comments>
      <pubDate>Wed, 12 Feb 2020 03:17:46 +0900</pubDate>
    </item>
  </channel>
</rss>