<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>miinsun</title>
    <link>https://miinsun.tistory.com/</link>
    <description>logging</description>
    <language>ko</language>
    <pubDate>Fri, 7 Aug 2026 21:53:52 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>miinsun</managingEditor>
    <image>
      <title>miinsun</title>
      <url>https://tistory1.daumcdn.net/tistory/5053804/attach/ee4fa0bab93449ffb7848a38f2280d16</url>
      <link>https://miinsun.tistory.com</link>
    </image>
    <item>
      <title>Gemini CLI로 Kubernetes 운영 돕기 : kube-prometheus-stack+ Alertmanager MCP 연동 실습기</title>
      <link>https://miinsun.tistory.com/342</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;0. 시작하며...&lt;/span&gt;&lt;/h2&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;현재 쿠버네티스 기반의 모니터링 시스템을 구축&amp;middot;운영하고 있습니다. 최근 Gemini CLI를 활용한 쿠버네티스 운영 사례를 접하게 되었고 K8S 모니터링에도 활용 할 수 있을 것 같아서 실제 적용 가능성을 검토하기 위해 직접 실습을 진행했습니다&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;실습은 두 가지 흐름으로 진행했습니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;1. K8S 클러스터에 kube-prometheus-stack을 배포한 뒤 Alertmanager를 MCP로 연동하여 자연어로 Alertmanager 리소스(Event 및 Silence 등)를 생성&amp;middot;수정할 수 있음을 확인했습니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;2. 알람 이벤트를 해석하고 자동 조치로 이어지는 운영 플로우를 설계해 자연어 질의 &amp;rarr; 이벤트 추정/조치 제안 &amp;rarr; 이벤트 해소 단계를 검증했습니다.&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;1. Kubernetes 설치&lt;/span&gt;&lt;/h2&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;참고자료 - &lt;a style=&quot;color: #333333;&quot; href=&quot;https://velog.io/@eunbyul/AWS-EC2%EC%97%90-kubernetes-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://velog.io/@eunbyul/AWS-EC2%EC%97%90-kubernetes-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0&lt;/a&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1325&quot; data-start=&quot;1123&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1201&quot; data-start=&quot;1123&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;EC2 Spec&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1201&quot; data-start=&quot;1123&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;EC2 3노드(t3.medium 이상 권장, Ubuntu AMI)&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1201&quot; data-start=&quot;1166&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;master 1 (bastion 겸용), worker 2&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1325&quot; data-start=&quot;1276&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;공인 IP&amp;middot;SSH 접속(PEM 키 필요)&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1325&quot; data-start=&quot;1276&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Ubuntu Image 기본 계정 : ubuntu.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1452&quot; data-start=&quot;1337&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1370&quot; data-start=&quot;1337&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt; 공통 기본 세팅&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1370&quot; data-start=&quot;1337&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Docker/Containerd 설치 (공식 문서 권장)&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1400&quot; data-start=&quot;1371&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;kubeadm, kubelet 설치 및 초기화&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1452&quot; data-start=&quot;1401&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;CNI Flannel 적용 (기본 Pod CIDR 10.244.0.0/16과 맞추기)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1155&quot; data-origin-height=&quot;231&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/naOuz/btsQ5X4OoAj/S4kSyi81w7B1OyGFKqk1Jk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/naOuz/btsQ5X4OoAj/S4kSyi81w7B1OyGFKqk1Jk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/naOuz/btsQ5X4OoAj/S4kSyi81w7B1OyGFKqk1Jk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnaOuz%2FbtsQ5X4OoAj%2FS4kSyi81w7B1OyGFKqk1Jk%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;1155&quot; height=&quot;231&quot; data-origin-width=&quot;1155&quot; data-origin-height=&quot;231&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;position: absolute;&quot; 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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Kubernetes 통신을 위한 필수 보안 그룹 설정&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1430&quot; data-origin-height=&quot;296&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mExeR/btsQ3ibNbcV/MKbCMm6eh0xuhMUcj5d7b0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mExeR/btsQ3ibNbcV/MKbCMm6eh0xuhMUcj5d7b0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mExeR/btsQ3ibNbcV/MKbCMm6eh0xuhMUcj5d7b0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmExeR%2FbtsQ3ibNbcV%2FMKbCMm6eh0xuhMUcj5d7b0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;1430&quot; height=&quot;296&quot; data-origin-width=&quot;1430&quot; data-origin-height=&quot;296&quot;/&gt;&lt;/span&gt;&lt;/figure&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;span style=&quot;color: #333333;&quot;&gt;Public IP 할당 후, SSH 접속&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;SSH 접속을 위한 PEM 키 별도 필요&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;ubuntu 이미지 기본 계정은 ubuntu&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;619&quot; data-origin-height=&quot;461&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bSHubO/btsQ3HWEjqf/hinbJEQXQ7lHvmJOMIA9Dk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSHubO/btsQ3HWEjqf/hinbJEQXQ7lHvmJOMIA9Dk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSHubO/btsQ3HWEjqf/hinbJEQXQ7lHvmJOMIA9Dk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSHubO%2FbtsQ3HWEjqf%2FhinbJEQXQ7lHvmJOMIA9Dk%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;619&quot; height=&quot;461&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;619&quot; data-origin-height=&quot;461&quot;/&gt;&lt;/span&gt;&lt;/figure&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;span style=&quot;color: #333333;&quot;&gt;3개의 모두 kubernetes 설치를 위한 기본 세팅 필요&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;docker 설치 &lt;a style=&quot;color: #333333;&quot; href=&quot;https://docs.docker.com/engine/install/ubuntu/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://docs.docker.com/engine/install/ubuntu/&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;kubelet, kubeadm 설치, 클러스터 만들기 (공식 문서 참고 : &lt;a style=&quot;color: #333333;&quot; href=&quot;https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/?utm_source=chatgpt.com&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/?utm_source=chatgpt.com&lt;/a&gt;)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;CNI Flannel 설치&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1759999405035&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 2) Flannel 적용 (10.244.0.0/16과 기본값이 호환)
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

# 3) 확인
kubectl -n kube-flannel get pods -o wide
kubectl get nodes -o wide
kubectl get pods -n kube-system&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;2. Gemini CLI 설치&lt;/span&gt;&lt;/h2&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;참고 자료 - &lt;a style=&quot;color: #333333;&quot; href=&quot;https://zehonyi21.tistory.com/34&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://zehonyi21.tistory.com/34&lt;/a&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;pre id=&quot;code_1759999815112&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# Python 설치, Node / npm 설치를 위해 필요
$ sudo apt-get install python3

# GCC 및 G++ 설치, Node.js 설치를 위해 필요
$ sudo apt-get install g++-12 gcc-12

# Node.js 및 npm 설치
$ wget https://nodejs.org/dist/latest-v21.x/node-v21.7.3-linux-x64.tar.gz
$ tar -xvf node-v21.7.3-linux-x64.tar.gz
$ sudo cp -r node-v21.7.3-linux-x64/* /usr/local

$ source ~/.bashrc
$ node --version

# Gemini CLI 설치
$ sudo npm install -g @google/gemini-cli

# Gemini CLI 실행
$ gemini&lt;/code&gt;&lt;/pre&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-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;916&quot; data-origin-height=&quot;414&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/H64Lo/btsQ2tR9FxP/ePUxdkEOIwOjtTc1KOW3y0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/H64Lo/btsQ2tR9FxP/ePUxdkEOIwOjtTc1KOW3y0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/H64Lo/btsQ2tR9FxP/ePUxdkEOIwOjtTc1KOW3y0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FH64Lo%2FbtsQ2tR9FxP%2FePUxdkEOIwOjtTc1KOW3y0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;916&quot; height=&quot;414&quot; data-origin-width=&quot;916&quot; data-origin-height=&quot;414&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;❌ 인증 오류 대처&lt;br /&gt;Waiting&amp;nbsp;for&amp;nbsp;authentication...&lt;br /&gt;Failed&amp;nbsp;to&amp;nbsp;open&amp;nbsp;browser&amp;nbsp;automatically.&amp;nbsp;Please&amp;nbsp;try&amp;nbsp;running&amp;nbsp;again&amp;nbsp;with&amp;nbsp;NO_BROWSER=true&amp;nbsp;set.&lt;br /&gt;Browser&amp;nbsp;error&amp;nbsp;details:&amp;nbsp;spawn&amp;nbsp;xdg-open&amp;nbsp;ENOENT&lt;br /&gt;&lt;br /&gt;&amp;gt; 브라우저 자동 오픈이 안되면:&lt;br /&gt;$ export NO_BROWSER=true&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;gt; 브라우저 창에서 로그인 후, 토큰 복사&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;954&quot; data-origin-height=&quot;702&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkL34i/btsQ3cbitfs/UhKzmmnWCaxBOe1JCXE98K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkL34i/btsQ3cbitfs/UhKzmmnWCaxBOe1JCXE98K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkL34i/btsQ3cbitfs/UhKzmmnWCaxBOe1JCXE98K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkL34i%2FbtsQ3cbitfs%2FUhKzmmnWCaxBOe1JCXE98K%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;581&quot; height=&quot;428&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;954&quot; data-origin-height=&quot;702&quot;/&gt;&lt;/span&gt;&lt;/figure&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;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;gt; 복사 한 토큰을 붙여넣어 준다&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;265&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cPns87/btsQ2tYTQGy/fz939ZpQZImzrXkWGOG6vK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cPns87/btsQ2tYTQGy/fz939ZpQZImzrXkWGOG6vK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cPns87/btsQ2tYTQGy/fz939ZpQZImzrXkWGOG6vK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcPns87%2FbtsQ2tYTQGy%2Ffz939ZpQZImzrXkWGOG6vK%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;900&quot; height=&quot;265&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;265&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;Gemini CLI&amp;nbsp; &amp;amp; K8S 클러스터 연결 확인 예시&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;쿠버네티스 서버와 제대로 연동되어 있는지 확인하는 질문을 몇가지하여 확인&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;Q. 쿠버네티스 default 네임스페이스에 무슨 pod가 있어?&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;820&quot; data-origin-height=&quot;134&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bp5ReO/btsQ4PF8HPy/bqK0tOVxniF2Aj2SI49qs0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bp5ReO/btsQ4PF8HPy/bqK0tOVxniF2Aj2SI49qs0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bp5ReO/btsQ4PF8HPy/bqK0tOVxniF2Aj2SI49qs0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbp5ReO%2FbtsQ4PF8HPy%2FbqK0tOVxniF2Aj2SI49qs0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;820&quot; height=&quot;134&quot; data-origin-width=&quot;820&quot; data-origin-height=&quot;134&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;Q. 쿠버네티스애서 어떤 CNI, CRI를 쓰고 있어?&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;842&quot; data-origin-height=&quot;427&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4NERp/btsQ4zp3uLx/bOcoOXVOUh3KbKhViZTh5k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4NERp/btsQ4zp3uLx/bOcoOXVOUh3KbKhViZTh5k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4NERp/btsQ4zp3uLx/bOcoOXVOUh3KbKhViZTh5k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4NERp%2FbtsQ4zp3uLx%2FbOcoOXVOUh3KbKhViZTh5k%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;842&quot; height=&quot;427&quot; data-origin-width=&quot;842&quot; data-origin-height=&quot;427&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &lt;i&gt;&amp;nbsp;.... kube-system 네임 스페이스를 살피며 클러스터가 어떻게 구성되어 있는지 확인&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;810&quot; data-origin-height=&quot;667&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1a6hq/btsQ5jtueCm/SX01eLLIk0ETsco8eM9ckK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1a6hq/btsQ5jtueCm/SX01eLLIk0ETsco8eM9ckK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1a6hq/btsQ5jtueCm/SX01eLLIk0ETsco8eM9ckK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1a6hq%2FbtsQ5jtueCm%2FSX01eLLIk0ETsco8eM9ckK%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;810&quot; height=&quot;667&quot; data-origin-width=&quot;810&quot; data-origin-height=&quot;667&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;A. CRI는 containerd를 사용하고 있고, CNI는 Flannel을 사용하고 있습니다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;3. 모니터링 스택 설치 (Prometheus + Grafana + Alertmanager) &lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;gemini-cli를 통해 Monitoring Stack 설치를 진행&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;span style=&quot;color: #333333;&quot;&gt;kube-prometheus-stack을 이용해서 Prometheus + Grafana + Alertmanager를 한번에 설치&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;monitoring namespace에 배포&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1915&quot; data-origin-height=&quot;949&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kyIpz/btsQ2WmnH3N/Ckrer8z5rPK65fhgAnnan0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kyIpz/btsQ2WmnH3N/Ckrer8z5rPK65fhgAnnan0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kyIpz/btsQ2WmnH3N/Ckrer8z5rPK65fhgAnnan0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkyIpz%2FbtsQ2WmnH3N%2FCkrer8z5rPK65fhgAnnan0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;1915&quot; height=&quot;949&quot; data-origin-width=&quot;1915&quot; data-origin-height=&quot;949&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1909&quot; data-origin-height=&quot;948&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IIJQj/btsQ4De9EBW/7HDUGMVMhbKmQ3nQGa0aY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IIJQj/btsQ4De9EBW/7HDUGMVMhbKmQ3nQGa0aY0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IIJQj/btsQ4De9EBW/7HDUGMVMhbKmQ3nQGa0aY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIIJQj%2FbtsQ4De9EBW%2F7HDUGMVMhbKmQ3nQGa0aY0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;1909&quot; height=&quot;948&quot; data-origin-width=&quot;1909&quot; data-origin-height=&quot;948&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;외부에서 모니터링 서비스들에 접근하기 위해 NodePort 타입 서비스 추가 배포&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;span style=&quot;color: #333333;&quot;&gt;Prometheus 9090:30090&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Grafana 3000:30030&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Alertmanager 9093:30093&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1760000436391&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# prometheus-nodeport.yaml
apiVersion: v1
kind: Service
metadata:
  name: prometheus-nodeport
  namespace: monitoring
  labels:
    app.kubernetes.io/component: prometheus
spec:
  type: NodePort
  selector:
    app.kubernetes.io/name: prometheus
  ports:
    - name: http-web
      port: 9090
      targetPort: http-web
      nodePort: 30090
  externalTrafficPolicy: Cluster

# grafana-nodeport.yaml
apiVersion: v1
kind: Service
metadata:
  name: grafana-nodeport
  namespace: monitoring
  labels:
    app.kubernetes.io/component: grafana
spec:
  type: NodePort
  selector:
    app.kubernetes.io/name: grafana
    app.kubernetes.io/instance: prometheus
  ports:
    - name: http
      port: 3000
      targetPort: 3000
      nodePort: 30030
  externalTrafficPolicy: Cluster
  
# alertmanager-nodeport.yaml
apiVersion: v1
kind: Service
metadata:
  name: alertmanager-nodeport
  namespace: monitoring
  labels:
    app.kubernetes.io/component: alertmanager
spec:
  type: NodePort
  selector:
    app.kubernetes.io/name: alertmanager
  ports:
    - name: http-web
      port: 9093
      targetPort: http-web
      nodePort: 30093
  externalTrafficPolicy: Cluster&lt;/code&gt;&lt;/pre&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;외부 접속 확인 및 Test Alert 고의 발생&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1153&quot; data-origin-height=&quot;699&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cmViA3/btsQ2PVdbQp/ySKRE0KINaDTSpAKuJJX21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cmViA3/btsQ2PVdbQp/ySKRE0KINaDTSpAKuJJX21/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cmViA3/btsQ2PVdbQp/ySKRE0KINaDTSpAKuJJX21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcmViA3%2FbtsQ2PVdbQp%2FySKRE0KINaDTSpAKuJJX21%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;1153&quot; height=&quot;699&quot; data-origin-width=&quot;1153&quot; data-origin-height=&quot;699&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;4. Alertmanager MCP 서버 등록&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Alertmanager 서버 MCP 활용을 위해 아래 오픈 소스 활용하였습니다.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;4234&quot; data-start=&quot;4106&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;4167&quot; data-start=&quot;4106&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;docker image : ghcr.io/ntk148v/alertmanager-mcp-server:latest&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;4234&quot; data-start=&quot;4168&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;README의 &lt;b&gt;Claude Desktop&lt;/b&gt; 예제가 &lt;b&gt;Gemini CLI&lt;/b&gt;와 동일 구조여서 그대로 응용 가능&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1760000614852&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - ntk148v/alertmanager-mcp-server: A Model Context Protocol (MCP) server that enables AI assistants to integreate with Pr&quot; data-og-description=&quot;A Model Context Protocol (MCP) server that enables AI assistants to integreate with Prometheus Alertmanager - ntk148v/alertmanager-mcp-server&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/ntk148v/alertmanager-mcp-server&quot; data-og-url=&quot;https://github.com/ntk148v/alertmanager-mcp-server&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bnNOhb/hyZKbOxc0e/mH4S48JJAkg9mKFK7rVDnk/img.png?width=1200&amp;amp;height=600&amp;amp;face=952_114_1066_239,https://scrap.kakaocdn.net/dn/c84QcS/hyZLgnaAKY/fmqvDghd3aaBnepv4bAtQ1/img.png?width=1200&amp;amp;height=600&amp;amp;face=952_114_1066_239&quot;&gt;&lt;a href=&quot;https://github.com/ntk148v/alertmanager-mcp-server&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/ntk148v/alertmanager-mcp-server&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bnNOhb/hyZKbOxc0e/mH4S48JJAkg9mKFK7rVDnk/img.png?width=1200&amp;amp;height=600&amp;amp;face=952_114_1066_239,https://scrap.kakaocdn.net/dn/c84QcS/hyZLgnaAKY/fmqvDghd3aaBnepv4bAtQ1/img.png?width=1200&amp;amp;height=600&amp;amp;face=952_114_1066_239');&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;GitHub - ntk148v/alertmanager-mcp-server: A Model Context Protocol (MCP) server that enables AI assistants to integreate with Pr&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A Model Context Protocol (MCP) server that enables AI assistants to integreate with Prometheus Alertmanager - ntk148v/alertmanager-mcp-server&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.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;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;MCP(Model Context Protocol)란?&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;MCP는 AI 에이전트(클라이언트)가 외부 시스템(서버/툴)에 안전하고 표준화된 방식으로 접근하도록 해주는 프로토콜&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Alertmanager, Git, 파일시스템, PagerDuty 같은 시스템을 &lt;b&gt;도구(tools)&lt;/b&gt;로 노출하고, Gemini CLI, Claude Desktop이 그 도구를 활용할 수 있도록 설정한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;738&quot; data-start=&quot;678&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;MCP 클라이언트&lt;/b&gt;: AI가 실행되는 측(Gemini CLI, Claude Desktop 등).&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;814&quot; data-start=&quot;739&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;MCP 서버&lt;/b&gt;: 외부 시스템을 &lt;b&gt;툴&lt;/b&gt;로 래핑해 내보내는 프로세스(예: alertmanager-mcp-server).&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;885&quot; data-start=&quot;815&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;툴(Tools)&lt;/b&gt;: 서버가 제공하는 실제 기능 단위(예: listAlerts, createSilence).&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;943&quot; data-start=&quot;886&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;리소스(Resources)&lt;/b&gt;: 읽기 전용 데이터 소스(예: 현재 Alerts 목록/상세)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&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;&amp;gt; docker 권한 확인 및 image 사용 확인&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1759993659388&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 현재 사용자로 docker가 되나 확인
docker run --rm hello-world

# 안 되면 권한 추가
sudo usermod -aG docker $USER
newgrp docker        # 또는 로그아웃/로그인

# 다시 확인 (이제 sudo 없이 가능해야 함)
docker run --rm hello-world

# 예: 노드 공인 IP가 203.0.113.10, NodePort가 30093일 때
export ALERTMANAGER_URL=&quot;http://203.0.113.10:30093&quot;

docker run --rm -p 8000:8000 \
  -e ALERTMANAGER_URL=&quot;$ALERTMANAGER_URL&quot; \
  ghcr.io/ntk148v/alertmanager-mcp-server:latest&lt;/code&gt;&lt;/pre&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;&amp;gt; Alertmanager MCP 등록&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1759997205274&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# ~/.gemini/settings.json 에 alertmanager mcp 정보 추가
{
  &quot;mcpServers&quot;: {
    &quot;filesystem&quot;: {
      &quot;command&quot;: &quot;npx&quot;,
      &quot;args&quot;: [
        &quot;-y&quot;,
        &quot;@modelcontextprotocol/server-filesystem&quot;,
        &quot;~/Desktop&quot;,
        &quot;~/MyGemini_CLI&quot;
      ]
    },
    &quot;alertmanager&quot;: {
      &quot;command&quot;: &quot;docker&quot;,
      &quot;args&quot;: [
        &quot;run&quot;,
        &quot;--rm&quot;,
        &quot;-i&quot;,
        &quot;-e&quot;, &quot;ALERTMANAGER_URL&quot;,
        &quot;ghcr.io/ntk148v/alertmanager-mcp-server:latest&quot;
      ],
      &quot;env&quot;: {
        &quot;ALERTMANAGER_URL&quot;: &quot;http://172.31.13.45:30093&quot;
      }
    }
  },
  &quot;security&quot;: {
    &quot;auth&quot;: {
      &quot;selectedType&quot;: &quot;oauth-personal&quot;
    }
  },
  &quot;ui&quot;: {
    &quot;theme&quot;: &quot;Default&quot;
  }
}&lt;/code&gt;&lt;/pre&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;AlertManager MCP가 제대로 등록되었는지 확인 합니다.&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;span style=&quot;color: #333333;&quot;&gt;Gemini CLI에서 '/MCP list' 명령어 수행&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;MCP Servers의 상태가 Ready여야함&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Alertmanager 리소스들의 정보, 상태를 가져오고 정보를 변경 할 수 있습니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;367&quot; data-origin-height=&quot;175&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mz9Z4/btsQ31HjZVG/HOEk2ywkoIubIcuK36StMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mz9Z4/btsQ31HjZVG/HOEk2ywkoIubIcuK36StMk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mz9Z4/btsQ31HjZVG/HOEk2ywkoIubIcuK36StMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fmz9Z4%2FbtsQ31HjZVG%2FHOEk2ywkoIubIcuK36StMk%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;310&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;367&quot; data-origin-height=&quot;175&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Alertmanager MCP를 통해 다음과 같은 질문을 할 수 있습니다.&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&quot;Show me current alerts&quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&quot;Filter alerts related to CPU issues&quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&quot;Get details for this alert&quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&quot;Create a silence for this alert for the next 2 hours&quot;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;Critical로 발생된 Alert을 확인하도록 하고, 해결 하도록 시키기&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;820&quot; data-origin-height=&quot;523&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pDjE1/btsQ38sV56h/lnReiSX7QQPRaUkcfDmXAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pDjE1/btsQ38sV56h/lnReiSX7QQPRaUkcfDmXAK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pDjE1/btsQ38sV56h/lnReiSX7QQPRaUkcfDmXAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpDjE1%2FbtsQ38sV56h%2FlnReiSX7QQPRaUkcfDmXAK%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;820&quot; height=&quot;523&quot; data-origin-width=&quot;820&quot; data-origin-height=&quot;523&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;786&quot; data-origin-height=&quot;198&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/X4pUu/btsQ4lMjBVS/kHZZXNuuN1DKhP3rIQcCb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/X4pUu/btsQ4lMjBVS/kHZZXNuuN1DKhP3rIQcCb1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/X4pUu/btsQ4lMjBVS/kHZZXNuuN1DKhP3rIQcCb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FX4pUu%2FbtsQ4lMjBVS%2FkHZZXNuuN1DKhP3rIQcCb1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;786&quot; height=&quot;198&quot; data-origin-width=&quot;786&quot; data-origin-height=&quot;198&quot;/&gt;&lt;/span&gt;&lt;/figure&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;&lt;span style=&quot;color: #333333;&quot;&gt;KubeSchedulerDown Alert이 발생된 이유 확인 및 Gemini CLI를 통해 원인 해결하기&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;858&quot; data-origin-height=&quot;383&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/A7We4/btsQ3IOMRFU/x1PYHz1EHuqkFpgvUOX3Zk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/A7We4/btsQ3IOMRFU/x1PYHz1EHuqkFpgvUOX3Zk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/A7We4/btsQ3IOMRFU/x1PYHz1EHuqkFpgvUOX3Zk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FA7We4%2FbtsQ3IOMRFU%2Fx1PYHz1EHuqkFpgvUOX3Zk%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;858&quot; height=&quot;383&quot; data-origin-width=&quot;858&quot; data-origin-height=&quot;383&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;5. 마치며...&lt;/span&gt;&lt;/h2&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;직접 실습을 해보니 Gemini CLI를 모니터링에 붙여 쓰는 게 생각보다 훨씬 강력하게 느껴졌습니다. AlertManager로 들어온 Alert을 실시간으로 확인하며 발생 원인을 파악하고, 또 바로 해결책을 찾아 조치까지 하는 Flow가 한턴에 이루어지는게 정말 놀랍게 느껴졌습니다. 실제 사내 운영환경에도 이러한 시스템이 도입되게 된다면 대응 시간을 줄이면서도 더 정확하게 작업할 수 있겠다는 생각이 들었습니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;이번 실습을 계기로 프로젝트를 더 발전시켜보고 싶은 아이디어가 몇 가지 생겼습니다. 우선 Grafana나 OpenTelemetry 같은 다른 MCP Tool들과 연동해서 더 넓은 범위의 데이터를 보고 분석과 조치까지 자연스럽게 연결해보고 싶습니다.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;또 더 나아가 Slack 같은 메신저로 Alert을 받은 뒤 Gemini가 제안한 해결책을 클릭 한 번으로 실행하는 ChatOps 환경을 구현해 보는 것도 재밌을 것 같습니다. 퇴근 후 틈틈히 gemini cli를 배워봐야겠습니다 ㅎㅎ&lt;/span&gt;&lt;/blockquote&gt;</description>
      <category>DevOps</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/342</guid>
      <comments>https://miinsun.tistory.com/342#entry342comment</comments>
      <pubDate>Wed, 8 Oct 2025 00:10:38 +0900</pubDate>
    </item>
    <item>
      <title>Manage Kubernetes in Google Cloud</title>
      <link>https://miinsun.tistory.com/340</link>
      <description>&lt;h1 style=&quot;background-color: #ffffff; color: #1f1f1f; text-align: start;&quot;&gt;Managing Deployments Using Kubernetes Engine&lt;/h1&gt;
&lt;h2 id=&quot;step2&quot; style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Overview&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Dev Ops practices will regularly make use of multiple deployments to manage application deployment scenarios such as &quot;Continuous deployment&quot;, &quot;Blue-Green deployments&quot;, &quot;Canary deployments&quot; and more. This lab teaches you how to scale and manage containers so you can accomplish these common scenarios where multiple heterogeneous deployments are being used.&lt;/p&gt;
&lt;h2 id=&quot;step3&quot; style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Objectives&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;In this lab, you will learn how to perform the following tasks:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #202124;&quot;&gt;Use the&lt;span&gt;&amp;nbsp;&lt;/span&gt;kubectl&lt;span&gt;&amp;nbsp;&lt;/span&gt;tool&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #202124;&quot;&gt;Create deployment&lt;span&gt;&amp;nbsp;&lt;/span&gt;yaml&lt;span&gt;&amp;nbsp;&lt;/span&gt;files&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #202124;&quot;&gt;Launch, update, and scale deployments&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #202124;&quot;&gt;Update deployments and learn about deployment styles&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;Prerequisites&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;To maximize your learning, the following is recommended for this lab:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #202124;&quot;&gt;You've taken these Google Cloud Skills Boost labs:
&lt;ul style=&quot;list-style-type: disc; color: #202124;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #202124;&quot;&gt;&lt;a style=&quot;color: #355d9c;&quot; href=&quot;https://google.qwiklabs.com/catalog_lab/944&quot;&gt;Introduction to Docker&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #202124;&quot;&gt;&lt;a style=&quot;color: #355d9c;&quot; href=&quot;https://google.qwiklabs.com/catalog_lab/468&quot;&gt;Hello Node Kubernetes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #202124;&quot;&gt;You have Linux System Administration skills.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #202124;&quot;&gt;You understand DevOps theory, concepts of continuous deployment.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;step4&quot; style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Introduction to deployments&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Heterogeneous deployments typically involve connecting two or more distinct infrastructure environments or regions to address a specific technical or operational need. Heterogeneous deployments are called &quot;hybrid&quot;, &quot;multi-cloud&quot;, or &quot;public-private&quot;, depending upon the specifics of the deployment.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;For this lab, heterogeneous deployments include those that span regions within a single cloud environment, multiple public cloud environments (multi-cloud), or a combination of on-premises and public cloud environments (hybrid or public-private).&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Various business and technical challenges can arise in deployments that are limited to a single environment or region:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #202124;&quot;&gt;&lt;b&gt;Maxed out resources&lt;/b&gt;: In any single environment, particularly in on-premises environments, you might not have the compute, networking, and storage resources to meet your production needs.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #202124;&quot;&gt;&lt;b&gt;Limited geographic reach&lt;/b&gt;: Deployments in a single environment require people who are geographically distant from one another to access one deployment. Their traffic might travel around the world to a central location.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #202124;&quot;&gt;&lt;b&gt;Limited availability&lt;/b&gt;: Web-scale traffic patterns challenge applications to remain fault-tolerant and resilient.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #202124;&quot;&gt;&lt;b&gt;Vendor lock-in&lt;/b&gt;: Vendor-level platform and infrastructure abstractions can prevent you from porting applications.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #202124;&quot;&gt;&lt;b&gt;Inflexible resources&lt;/b&gt;: Your resources might be limited to a particular set of compute, storage, or networking offerings.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Heterogeneous deployments can help address these challenges, but they must be architected using programmatic and deterministic processes and procedures. One-off or ad-hoc deployment procedures can cause deployments or processes to be brittle and intolerant of failures. Ad-hoc processes can lose data or drop traffic. Good deployment processes must be repeatable and use proven approaches for managing provisioning, configuration, and maintenance.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Three common scenarios for heterogeneous deployment are:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #202124;&quot;&gt;multi-cloud deployments&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #202124;&quot;&gt;fronting on-premises data&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #202124;&quot;&gt;continuous integration/continuous delivery (CI/CD) processes&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;The following exercises practice some common use cases for heterogeneous deployments, along with well-architected approaches using Kubernetes and other infrastructure resources to accomplish them.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h2 id=&quot;step7&quot; style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Get sample code for this lab&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;color: #202124;&quot;&gt;Get the sample code for creating and running containers and deployments from the lab bucket:&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;pre class=&quot;vim&quot; style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;code&gt;gcloud storage cp -r gs://spls/gsp053/kubernetes .
cd kubernetes&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;background-color: #ffffff;&quot; aria-hidden=&quot;true&quot;&gt;Copied!&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;color: #202124;&quot;&gt;Create a cluster with 3 nodes (this will take a few minutes to complete):&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;pre class=&quot;dsconfig&quot; style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;code&gt;gcloud container clusters create bootcamp \
  --machine-type e2-small \
  --num-nodes 3 \
  --scopes &quot;https://www.googleapis.com/auth/projecthosting,storage-rw&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1123&quot; data-origin-height=&quot;292&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oeDYm/btsQl5EBf6h/aDLL8cHUtEqGErGPuQKON0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oeDYm/btsQl5EBf6h/aDLL8cHUtEqGErGPuQKON0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oeDYm/btsQl5EBf6h/aDLL8cHUtEqGErGPuQKON0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoeDYm%2FbtsQl5EBf6h%2FaDLL8cHUtEqGErGPuQKON0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;1123&quot; height=&quot;292&quot; data-origin-width=&quot;1123&quot; data-origin-height=&quot;292&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h1 style=&quot;background-color: #ffffff; color: #1f1f1f; text-align: start;&quot;&gt;Google Kubernetes Engine에서 앱 디버깅&lt;/h1&gt;
&lt;h2 id=&quot;step2&quot; style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;개요&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Cloud Logging 및 함께 사용하는 도구인 Cloud Monitoring은 모든 기능을 갖추고 Google Kubernetes Engine에 깊이 통합되어 있습니다. 이 실습에서는 일반적인 로깅 사용 사례를 통해 Cloud Logging이 GKE 클러스터 및 애플리케이션과 어떻게 작동하는지 학습하고 로그를 수집하는 몇 가지 권장사항을 알아봅니다.&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;목표&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이 실습에서는 다음 작업을 수행하는 방법을 배웁니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #202124;&quot;&gt;Cloud Monitoring을 사용하여 문제 감지&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #202124;&quot;&gt;Cloud Logging을 사용하여 GKE에서 실행되는 애플리케이션 문제 해결&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;실습에 사용되는 데모 애플리케이션&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;구체적인 예시를 위해 GKE 클러스터에 배포된 샘플&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #355d9c;&quot; href=&quot;https://github.com/GoogleCloudPlatform/microservices-demo&quot;&gt;마이크로서비스 데모&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;앱의 문제를 해결해 보겠습니다. 이 데모 앱에는 많은 마이크로서비스와 종속 항목이 있습니다. loadgenerator를 사용하여 트래픽을 생성한 다음 Logging, Monitoring, GKE를 사용하여 오류(알림/측정항목)를 확인하고 Logging으로 근본 원인을 파악한 다음 Logging 및 Monitoring으로 문제를 수정/확인합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;step4&quot; style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;작업 1. 인프라 설정&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Google Kubernetes Engine 클러스터에 연결하고 클러스터가 올바르게 생성되었는지 확인합니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;color: #202124;&quot;&gt;프로젝트 ID 변수를 설정합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;code&gt;export PROJECT_ID=qwiklabs-gcp-00-c53a3e3bfdda&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;background-color: #ffffff;&quot; aria-hidden=&quot;true&quot;&gt;복사되었습니다.&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;color: #202124;&quot;&gt;다음 명령어를 사용하여 클러스터의 상태를 확인합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;pre class=&quot;applescript&quot; style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;code&gt;gcloud container clusters list&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;background-color: #ffffff;&quot; aria-hidden=&quot;true&quot;&gt;복사되었습니다.&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;클러스터 상태가 'PROVISIONING'이 됩니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;color: #202124;&quot;&gt;잠시 기다렸다가 상태가 'RUNNING'이 될 때까지 위의 명령어를 다시 실행합니다. 몇 분 정도 걸릴 수 있습니다.&lt;/li&gt;
&lt;li style=&quot;color: #202124;&quot;&gt;central이라는 이름의 클러스터가 생성되었는지 확인합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;탐색 메뉴&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Kubernetes Engine&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;클러스터&lt;/b&gt;로 이동하여 Cloud 콘솔에서 진행 상황을 모니터링할 수도 있습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;color: #202124;&quot;&gt;클러스터가 'RUNNING' 상태가 되면 클러스터 사용자 인증 정보를 가져옵니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;pre class=&quot;dsconfig&quot; style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;code&gt;gcloud container clusters get-credentials central --zone $ZONE&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;background-color: #ffffff;&quot; aria-hidden=&quot;true&quot;&gt;복사되었습니다.&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;출력:&lt;/b&gt;&lt;/p&gt;
&lt;div&gt;
&lt;pre class=&quot;armasm&quot; style=&quot;background-color: #2b2b2b; color: #f8f8f2;&quot;&gt;&lt;code&gt;Fetching cluster endpoint and auth data.
kubeconfig entry generated for central.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1 style=&quot;background-color: #ffffff; color: #1f1f1f; text-align: start;&quot;&gt;Collect Metrics from Exporters using the Managed Service for Prometheus&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;step2&quot; style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Overview&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;In this lab, you will use Managed Service for Prometheus to collect metrics from other infrastructure sources via exporters.&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;Objectives&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;In this lab, you will learn how to:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;color: #202124;&quot;&gt;Deploy a GKE instance&lt;/li&gt;
&lt;li style=&quot;color: #202124;&quot;&gt;Configure the&lt;span&gt;&amp;nbsp;&lt;/span&gt;PodMonitoring&lt;span&gt;&amp;nbsp;&lt;/span&gt;custom resource and&lt;span&gt;&amp;nbsp;&lt;/span&gt;node-exporter&lt;span&gt;&amp;nbsp;&lt;/span&gt;tool&lt;/li&gt;
&lt;li style=&quot;color: #202124;&quot;&gt;Build the GMP binary locally and deploy to the GKE instance&lt;/li&gt;
&lt;li style=&quot;color: #202124;&quot;&gt;Apply a Prometheus configuration to begin collecting metrics&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;step4&quot; style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Task 1. Deploy GKE cluster&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #202124;&quot;&gt;Run the following to deploy a basic GKE cluster:&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background-color: #ffffff; color: #000000;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;gcloud beta container clusters create gmp-cluster --num-nodes=1 --zone us-west1-b --enable-managed-prometheus&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;background-color: #ffffff;&quot; aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;dsconfig&quot; style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;code&gt;gcloud container clusters get-credentials gmp-cluster --zone=us-west1-b&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;step7&quot; style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Task 4. Configure a PodMonitoring resource&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;To ingest the metric data emitted by the example application, you use target scraping. Target scraping and metrics ingestion are configured using Kubernetes&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #355d9c;&quot; href=&quot;https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/&quot;&gt;custom resources&lt;/a&gt;. The managed service uses&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #355d9c;&quot; href=&quot;https://github.com/GoogleCloudPlatform/prometheus-engine/blob/v0.2.3/doc/api.md#podmonitoring&quot;&gt;PodMonitoring&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;custom resources (CRs).&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;A PodMonitoring CR scrapes targets only in the namespace the CR is deployed in. To scrape targets in multiple namespaces, deploy the same PodMonitoring CR in each namespace. You can verify the PodMonitoring resource is installed in the intended namespace by running&lt;span&gt;&amp;nbsp;&lt;/span&gt;kubectl get podmonitoring -A.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;For reference documentation about all the Managed Service for Prometheus CRs, see the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #355d9c;&quot; href=&quot;https://github.com/GoogleCloudPlatform/prometheus-engine/blob/v0.2.3/doc/api.md&quot;&gt;prometheus-engine/doc/api reference&lt;/a&gt;.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;The following manifest defines a PodMonitoring resource,&lt;span&gt;&amp;nbsp;&lt;/span&gt;prom-example, in the&lt;span&gt;&amp;nbsp;&lt;/span&gt;gmp-test&lt;span&gt;&amp;nbsp;&lt;/span&gt;namespace. The resource uses a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #355d9c;&quot; href=&quot;https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/&quot;&gt;Kubernetes label selector&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;to find all pods in the namespace that have the label&lt;span&gt;&amp;nbsp;&lt;/span&gt;app&lt;span&gt;&amp;nbsp;&lt;/span&gt;with the value&lt;span&gt;&amp;nbsp;&lt;/span&gt;prom-example. The matching pods are scraped on a port named&lt;span&gt;&amp;nbsp;&lt;/span&gt;metrics, every 30 seconds, on the&lt;span&gt;&amp;nbsp;&lt;/span&gt;/metrics&lt;span&gt;&amp;nbsp;&lt;/span&gt;HTTP path.&lt;/p&gt;
&lt;div&gt;
&lt;pre class=&quot;less&quot; style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;code&gt;apiVersion: monitoring.googleapis.com/v1alpha1
kind: PodMonitoring
metadata:
  name: prom-example
spec:
  selector:
    matchLabels:
      app: prom-example
  endpoints:
  - port: metrics
    interval: 30s&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Your managed collector is now scraping the matching pods.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;To configure horizontal collection that applies to a range of pods across all namespaces, use the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #355d9c;&quot; href=&quot;https://github.com/GoogleCloudPlatform/prometheus-engine/blob/v0.2.3/doc/api.md#clusterpodmonitoring&quot;&gt;ClusterPodMonitoring&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;resource. The ClusterPodMonitoring resource provides the same interface as the PodMonitoring resource but does not limit discovered pods to a given namespace.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Note&lt;/b&gt;: An additional targetLabels field provides a simplified Prometheus-style&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #355d9c;&quot; href=&quot;https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config&quot;&gt;relabel configuration&lt;/a&gt;. You can use relabeling to add pod labels as labels on the ingested time series. You can't overwrite the mandatory target labels; for a list of these labels, see the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #355d9c;&quot; href=&quot;https://cloud.google.com/stackdriver/docs/managed-prometheus/query#target-resource&quot;&gt;prometheus_target resource&lt;/a&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;Create a config.yaml file&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;color: #202124;&quot;&gt;Stop the running prometheus binary in the 1st tab of Cloud Shell and have a new config file which will take the metrics from node exporter:&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;pre class=&quot;arduino&quot; style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;code&gt;vi config.yaml&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;background-color: #ffffff;&quot; aria-hidden=&quot;true&quot;&gt;복사되었습니다.&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;color: #202124;&quot;&gt;Create a&lt;span&gt;&amp;nbsp;&lt;/span&gt;config.yaml&lt;span&gt;&amp;nbsp;&lt;/span&gt;file with the following spec:&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;pre class=&quot;less&quot; style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;code&gt;global:
  scrape_interval: 15s

scrape_configs:
  - job_name: node
    static_configs:
      - targets: ['localhost:9100']
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;background-color: #ffffff;&quot; aria-hidden=&quot;true&quot;&gt;복사되었습니다.&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;color: #202124;&quot;&gt;Upload the&lt;span&gt;&amp;nbsp;&lt;/span&gt;config.yaml&lt;span&gt;&amp;nbsp;&lt;/span&gt;file you created to verify:&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;code&gt;export PROJECT=$(gcloud config get-value project)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;background-color: #ffffff;&quot; aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;awk&quot; style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;code&gt;gsutil mb -p $PROJECT gs://$PROJECT&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;background-color: #ffffff;&quot; aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;arduino&quot; style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;code&gt;gsutil cp config.yaml gs://$PROJECT&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;background-color: #ffffff;&quot; aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;arduino&quot; style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;code&gt;gsutil -m acl set -R -a public-read gs://$PROJECT&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;background-color: #ffffff;&quot; aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3562&quot; data-origin-height=&quot;2032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/chUb0v/btsQmNJTTcH/OK0W49r3vPe6zpUzkXS09k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/chUb0v/btsQmNJTTcH/OK0W49r3vPe6zpUzkXS09k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/chUb0v/btsQmNJTTcH/OK0W49r3vPe6zpUzkXS09k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FchUb0v%2FbtsQmNJTTcH%2FOK0W49r3vPe6zpUzkXS09k%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;3562&quot; height=&quot;2032&quot; data-origin-width=&quot;3562&quot; data-origin-height=&quot;2032&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h1 style=&quot;background-color: #ffffff; color: #1f1f1f; text-align: start;&quot;&gt;&amp;nbsp;&lt;/h1&gt;
&lt;h1 style=&quot;background-color: #ffffff; color: #1f1f1f; text-align: start;&quot;&gt;&amp;nbsp;&lt;/h1&gt;
&lt;h1 style=&quot;background-color: #ffffff; color: #1f1f1f; text-align: start;&quot;&gt;Manage Kubernetes in Google Cloud: Challenge Lab&lt;/h1&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f1f1f; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&quot;step2&quot; style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Introduction&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;In a challenge lab you&amp;rsquo;re given a scenario and a set of tasks. Instead of following step-by-step instructions, you will use the skills learned from the labs in the course to figure out how to complete the tasks on your own! An automated scoring system (shown on this page) will provide feedback on whether you have completed your tasks correctly.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;When you take a challenge lab, you will not be taught new Google Cloud concepts. You are expected to extend your learned skills, like changing default values and reading and researching error messages to fix your own mistakes.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;step4&quot; style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Task 1. Create a GKE cluster&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;The new Cymbal Shops e-commerce website will run natively on GKE and the team would like to see your experience working and setting up clusters. In this section, you will need to create a Kubernetes cluster based on a set of configurations provided to run your demo applications on.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;color: #202124;&quot;&gt;Create a GKE cluster named&lt;span&gt;&amp;nbsp;&lt;/span&gt;hello-world-3q34&lt;span&gt;&amp;nbsp;&lt;/span&gt;with the following configuration:&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SettingValue&lt;/p&gt;
&lt;table style=&quot;background-color: #ffffff; color: #1f1f1f; text-align: start; border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Zone&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;us-west1-a&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Release channel&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Regular&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Cluster version&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;1.27.8&lt;span&gt;&amp;nbsp;&lt;/span&gt;or newer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Cluster autoscaler&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Enabled&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Number of nodes&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;3&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Minimum nodes&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;2&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Maximum nodes&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;6&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1757138284982&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ export REPO_NAME=hello-repo
$ export CLUSTER_NAME=hello-world-3q34
$ export ZONE=us-west1-a
$ export NAMESPACE=gmp-mcec
$ export INTERVAL=60s
$ export SERVICE_NAME=helloweb-service-if4a

$ gcloud config set compute/zone $ZONE

$ gcloud container clusters create $CLUSTER_NAME \
--release-channel regular \
--cluster-version latest \
--num-nodes 3 \
--min-nodes 2 \
--max-nodes 6 \
--enable-autoscaling --no-enable-ip-alias&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;step5&quot; style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Task 2. Enable Managed Prometheus on the GKE cluster&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;As part of the e-commerce website strategy, Cymbal Shops would like to start using Managed Prometheus for metrics and monitoring on the cluster to ensure a good experience for their customers. In this section, you will enable Managed Prometheus on the cluster for metric monitoring and create a namespace to deploy a sample Prometheus application and pod monitoring on.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;color: #202124;&quot;&gt;Enable the Prometheus managed collection on the GKE cluster.&lt;/li&gt;
&lt;li style=&quot;color: #202124;&quot;&gt;Create a namespace on the cluster named&lt;span&gt;&amp;nbsp;&lt;/span&gt;gmp-mcec.&lt;/li&gt;
&lt;li style=&quot;color: #202124;&quot;&gt;Download a sample Prometheus app:&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;pre class=&quot;awk&quot; style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;code&gt;gsutil cp gs://spls/gsp510/prometheus-app.yaml .&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;background-color: #ffffff;&quot; aria-hidden=&quot;true&quot;&gt;복사되었습니다.&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;color: #202124;&quot;&gt;Update the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;lt;todo&amp;gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;sections (lines 35-38) with the following configuration.
&lt;ul style=&quot;list-style-type: disc; color: #202124;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #202124;&quot;&gt;&lt;b&gt;containers.image&lt;/b&gt;:&lt;span&gt;&amp;nbsp;&lt;/span&gt;nilebox/prometheus-example-app:latest&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #202124;&quot;&gt;&lt;b&gt;containers.name:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;prometheus-test&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #202124;&quot;&gt;&lt;b&gt;ports.name&lt;/b&gt;:&lt;span&gt;&amp;nbsp;&lt;/span&gt;metrics&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;color: #202124;&quot;&gt;Deploy the application onto the&lt;span&gt;&amp;nbsp;&lt;/span&gt;gmp-mcec&lt;span&gt;&amp;nbsp;&lt;/span&gt;namespace on your GKE cluster.&lt;/li&gt;
&lt;li style=&quot;color: #202124;&quot;&gt;Download the&lt;span&gt;&amp;nbsp;&lt;/span&gt;pod-monitoring.yaml&lt;span&gt;&amp;nbsp;&lt;/span&gt;file:&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;pre class=&quot;awk&quot; style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;code&gt;gsutil cp gs://spls/gsp510/pod-monitoring.yaml .&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;background-color: #ffffff;&quot; aria-hidden=&quot;true&quot;&gt;복사되었습니다.&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;color: #202124;&quot;&gt;Update the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;lt;todo&amp;gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;sections (lines 18-24) with the following configuration:
&lt;ul style=&quot;list-style-type: disc; color: #202124;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #202124;&quot;&gt;&lt;b&gt;metadata.name&lt;/b&gt;:&lt;span&gt;&amp;nbsp;&lt;/span&gt;prometheus-test&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #202124;&quot;&gt;&lt;b&gt;labels.app.kubernetes.io/name&lt;/b&gt;:&lt;span&gt;&amp;nbsp;&lt;/span&gt;prometheus-test&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #202124;&quot;&gt;&lt;b&gt;matchLabels.app&lt;/b&gt;:&lt;span&gt;&amp;nbsp;&lt;/span&gt;prometheus-test&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #202124;&quot;&gt;&lt;b&gt;endpoints.interval&lt;/b&gt;:&lt;span&gt;&amp;nbsp;&lt;/span&gt;60s&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;color: #202124;&quot;&gt;Apply the pod monitoring resource onto the&lt;span&gt;&amp;nbsp;&lt;/span&gt;gmp-mcec&lt;span&gt;&amp;nbsp;&lt;/span&gt;namespace on your GKE cluster.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre id=&quot;code_1757138339624&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ gcloud container clusters update $CLUSTER_NAME --enable-managed-prometheus --zone $ZONE
$ kubectl create ns $NAMESPACE
$ gsutil cp gs://spls/gsp510/prometheus-app.yaml .

$ cat &amp;gt; prometheus-app.yaml &amp;lt;&amp;lt;EOF

apiVersion: apps/v1
kind: Deployment
metadata:
  name: prometheus-test
  labels:
    app: prometheus-test
spec:
  selector:
    matchLabels:
      app: prometheus-test
  replicas: 3
  template:
    metadata:
      labels:
        app: prometheus-test
    spec:
      nodeSelector:
        kubernetes.io/os: linux
        kubernetes.io/arch: amd64
      containers:
      - image: nilebox/prometheus-example-app:latest
        name: prometheus-test
        ports:
        - name: metrics
          containerPort: 1234
        command:
        - &quot;/main&quot;
        - &quot;--process-metrics&quot;
        - &quot;--go-metrics&quot;
EOF

$ kubectl -n $NAMESPACE apply -f prometheus-app.yaml
 
$ gsutil cp gs://spls/gsp510/pod-monitoring.yaml .

$ cat &amp;gt; pod-monitoring.yaml &amp;lt;&amp;lt;EOF
apiVersion: monitoring.googleapis.com/v1alpha1
kind: PodMonitoring
metadata:
  name: prometheus-test
  labels:
    app.kubernetes.io/name: prometheus-test
spec:
  selector:
    matchLabels:
      app: prometheus-test
  endpoints:
  - port: metrics
    interval: $INTERVAL
EOF

$ kubectl -n $NAMESPACE apply -f pod-monitoring.yaml&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;step6&quot; style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Task 3. Deploy an application onto the GKE cluster&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;The development team at Cymbal Shops will be consistently releasing new application code to the cluster that you will have to successfully deploy into production. In this section, you will deploy a Kubernetes manifest onto the cluster and inspect the issue.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;color: #202124;&quot;&gt;Download the demo deployment manifest files:&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;pre class=&quot;awk&quot; style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;code&gt;gsutil cp -r gs://spls/gsp510/hello-app/ .&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;background-color: #ffffff;&quot; aria-hidden=&quot;true&quot;&gt;복사되었습니다.&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;color: #202124;&quot;&gt;Create a deployment onto the&lt;span&gt;&amp;nbsp;&lt;/span&gt;gmp-mcec&lt;span&gt;&amp;nbsp;&lt;/span&gt;namespace on your GKE cluster from the&lt;span&gt;&amp;nbsp;&lt;/span&gt;helloweb-deployment.yaml&lt;span&gt;&amp;nbsp;&lt;/span&gt;manifest file. It is located in the&lt;span&gt;&amp;nbsp;&lt;/span&gt;hello-app/manifests&lt;span&gt;&amp;nbsp;&lt;/span&gt;folder.&lt;/li&gt;
&lt;li style=&quot;color: #202124;&quot;&gt;Verify you have created the deployment, and navigate to the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;helloweb&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;deployment details page. You should see the following error:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1258&quot; data-origin-height=&quot;624&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/V3ZE6/btsQnvvvGsU/jWCjZK56feIm59wHP2Qsr1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/V3ZE6/btsQnvvvGsU/jWCjZK56feIm59wHP2Qsr1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/V3ZE6/btsQnvvvGsU/jWCjZK56feIm59wHP2Qsr1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FV3ZE6%2FbtsQnvvvGsU%2FjWCjZK56feIm59wHP2Qsr1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;1258&quot; height=&quot;624&quot; data-origin-width=&quot;1258&quot; data-origin-height=&quot;624&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;This error seems to stem from an invalid image name in the manifest that you just deployed. Before you fix the image name, you will create a logs-based metric and alerting policy so that your team can be notified if this happens again in the future.&lt;/p&gt;
&lt;pre id=&quot;code_1757138531039&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ gsutil cp -r gs://spls/gsp510/hello-app/ .

$ export PROJECT_ID=$(gcloud config get-value project)
$ export REGION=&quot;${ZONE%-*}&quot;
$ cd ~/hello-app
$ gcloud container clusters get-credentials $CLUSTER_NAME --zone $ZONE
$ kubectl -n $NAMESPACE apply -f manifests/helloweb-deployment.yaml

$ cd manifests/

$ cat &amp;gt; helloweb-deployment.yaml &amp;lt;&amp;lt;EOF
apiVersion: apps/v1
kind: Deployment
metadata:
  name: helloweb
  labels:
    app: hello
spec:
  selector:
    matchLabels:
      app: hello
      tier: web
  template:
    metadata:
      labels:
        app: hello
        tier: web
    spec:
      containers:
      - name: hello-app
        image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
        ports:
        - containerPort: 8080
        resources:
          requests:
            cpu: 200m
# [END container_helloapp_deployment]
# [END gke_manifests_helloweb_deployment_deployment_helloweb]
---
EOF&lt;/code&gt;&lt;/pre&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;h2 id=&quot;step7&quot; style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Task 4. Create a logs-based metric and alerting policy&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Cymbal Shops would like to set up some logs based metrics and alerting policies to aggregate the number of errors and warnings in their Kubernetes pods and set up an alerting mechanism for their clusters when a certain amount of errors are above a specific threshold. In this section, you will demonstrate your knowledge on building these metrics and alerting policies for the team.&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;Create a logs-based metric&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;color: #202124;&quot;&gt;In the Logs Explorer, create a query that exposes warnings/errors you saw in the previous section on the cluster.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Hint:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;your query should have just one&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;Resource Type&lt;/i&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;and one&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;Severity&lt;/i&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;selected.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;If the query is correct, upon running you should see the following errors show up in the logs:&lt;/p&gt;
&lt;div&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;background-color: #2b2b2b; color: #f8f8f2;&quot;&gt;&lt;code&gt;Error: InvalidImageName
Failed to apply default image tag &quot;&amp;lt;todo&amp;gt;&quot;: couldn't parse image reference &quot;&amp;lt;todo&amp;gt;&quot;: invalid reference format&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;color: #202124;&quot;&gt;Create a logs-based metric from this query. For&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Metric type&lt;/b&gt;, use&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Counter&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;and for the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Log Metric Name&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;use&lt;span&gt;&amp;nbsp;&lt;/span&gt;pod-image-errors.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;Create an alerting policy&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;color: #202124;&quot;&gt;Create an Alerting Policy based on the logs-based metric you just created. Use the following details to configure your policy:
&lt;ul style=&quot;list-style-type: disc; color: #202124;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #202124;&quot;&gt;&lt;b&gt;Rolling Window&lt;/b&gt;:&lt;span&gt;&amp;nbsp;&lt;/span&gt;10 min&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #202124;&quot;&gt;&lt;b&gt;Rolling window function&lt;/b&gt;:&lt;span&gt;&amp;nbsp;&lt;/span&gt;Count&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #202124;&quot;&gt;&lt;b&gt;Time series aggregation&lt;/b&gt;:&lt;span&gt;&amp;nbsp;&lt;/span&gt;Sum&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #202124;&quot;&gt;&lt;b&gt;Condition type&lt;/b&gt;:&lt;span&gt;&amp;nbsp;&lt;/span&gt;Threshold&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #202124;&quot;&gt;&lt;b&gt;Alert trigger&lt;/b&gt;:&lt;span&gt;&amp;nbsp;&lt;/span&gt;Any time series violates&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #202124;&quot;&gt;&lt;b&gt;Threshold position&lt;/b&gt;:&lt;span&gt;&amp;nbsp;&lt;/span&gt;Above threshold&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #202124;&quot;&gt;&lt;b&gt;Threshold value&lt;/b&gt;:&lt;span&gt;&amp;nbsp;&lt;/span&gt;0&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #202124;&quot;&gt;&lt;b&gt;Use notification channel&lt;/b&gt;:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Disable&lt;/b&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #202124;&quot;&gt;&lt;b&gt;Alert policy name&lt;/b&gt;:&lt;span&gt;&amp;nbsp;&lt;/span&gt;Pod Error Alert&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;625&quot; data-origin-height=&quot;317&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bSD0ZZ/btsQmVONNz6/YwHKvZ6wB568DiuFkJz4qK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSD0ZZ/btsQmVONNz6/YwHKvZ6wB568DiuFkJz4qK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSD0ZZ/btsQmVONNz6/YwHKvZ6wB568DiuFkJz4qK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSD0ZZ%2FbtsQmVONNz6%2FYwHKvZ6wB568DiuFkJz4qK%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;625&quot; height=&quot;317&quot; data-origin-width=&quot;625&quot; data-origin-height=&quot;317&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;433&quot; data-origin-height=&quot;563&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bu6djh/btsQn11YcjG/urqye8KmKlobETtLKFBn70/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bu6djh/btsQn11YcjG/urqye8KmKlobETtLKFBn70/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bu6djh/btsQn11YcjG/urqye8KmKlobETtLKFBn70/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbu6djh%2FbtsQn11YcjG%2Furqye8KmKlobETtLKFBn70%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;433&quot; height=&quot;563&quot; data-origin-width=&quot;433&quot; data-origin-height=&quot;563&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;step8&quot; style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Task 5. Update and re-deploy your app&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;The development team would like to see you demonstrate your knowledge on deleting and updating deployments on the cluster in case of an error. In this section, you will update a Kubernetes manifest with a correct image reference, delete a deployment, and deploy the updated application onto the cluster.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;color: #202124;&quot;&gt;Replace the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;lt;todo&amp;gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;in the image section in the&lt;span&gt;&amp;nbsp;&lt;/span&gt;helloweb-deployment.yaml&lt;span&gt;&amp;nbsp;&lt;/span&gt;deployment manifest with the following image:
&lt;ul style=&quot;list-style-type: disc; color: #202124;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #202124;&quot;&gt;us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;color: #202124;&quot;&gt;&lt;b&gt;Delete&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;helloweb&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;deployment from your cluster.&lt;/li&gt;
&lt;li style=&quot;color: #202124;&quot;&gt;Deploy the updated&lt;span&gt;&amp;nbsp;&lt;/span&gt;helloweb-deployment.yaml&lt;span&gt;&amp;nbsp;&lt;/span&gt;manifest onto your cluster on the&lt;span&gt;&amp;nbsp;&lt;/span&gt;gmp-mcec&lt;span&gt;&amp;nbsp;&lt;/span&gt;namespace.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre id=&quot;code_1757138863536&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl delete deployments helloweb  -n $NAMESPACE
$ kubectl -n $NAMESPACE apply -f manifests/helloweb-deployment.yaml&lt;/code&gt;&lt;/pre&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;h2 id=&quot;step9&quot; style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Task 6. Containerize your code and deploy it onto the cluster&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Lastly, as part of the Cymbal Shops e-commerce strategy, the application team will be providing you code that you will need to containerize and store in a registry, and then update the cluster with the newest version of that code.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;In this section, you will containerize your application code, update an image in Artifact Registry, and set that to the image on your cluster. Your team has a repository in Artifact Registry named&lt;span&gt;&amp;nbsp;&lt;/span&gt;hello-repo&lt;span&gt;&amp;nbsp;&lt;/span&gt;that contains a containerized version of the&lt;span&gt;&amp;nbsp;&lt;/span&gt;hello-app&lt;span&gt;&amp;nbsp;&lt;/span&gt;sample app in Docker. You will update the code for the build locally, then push a new version to the repository.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;color: #202124;&quot;&gt;In the&lt;span&gt;&amp;nbsp;&lt;/span&gt;hello-app&lt;span&gt;&amp;nbsp;&lt;/span&gt;directory, update the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;main.go&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;file to use&lt;span&gt;&amp;nbsp;&lt;/span&gt;Version: 2.0.0&lt;span&gt;&amp;nbsp;&lt;/span&gt;on line 49.&lt;/li&gt;
&lt;li style=&quot;color: #202124;&quot;&gt;Use the&lt;span&gt;&amp;nbsp;&lt;/span&gt;hello-app/Dockerfile&lt;span&gt;&amp;nbsp;&lt;/span&gt;to create a Docker image with the&lt;span&gt;&amp;nbsp;&lt;/span&gt;v2&lt;span&gt;&amp;nbsp;&lt;/span&gt;tag.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Note:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;you should follow the Artifact Registry naming conventions as detailed&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #355d9c;&quot; href=&quot;https://cloud.google.com/artifact-registry/docs/docker/names#containers&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #202124; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;color: #202124;&quot;&gt;Push the newly built Docker image to your repository in Artifact Registry using the&lt;span&gt;&amp;nbsp;&lt;/span&gt;v2&lt;span&gt;&amp;nbsp;&lt;/span&gt;tag.&lt;/li&gt;
&lt;li style=&quot;color: #202124;&quot;&gt;Set the image on your&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;helloweb&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;deployment to reflect the&lt;span&gt;&amp;nbsp;&lt;/span&gt;v2&lt;span&gt;&amp;nbsp;&lt;/span&gt;image you pushed to Artifact Registry.&lt;/li&gt;
&lt;li style=&quot;color: #202124;&quot;&gt;Expose the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;helloweb&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;deployment to a LoadBalancer service named&lt;span&gt;&amp;nbsp;&lt;/span&gt;helloweb-service-if4a&lt;span&gt;&amp;nbsp;&lt;/span&gt;on port 8080, and set the target port of the container to the one specified in the Dockerfile.&lt;/li&gt;
&lt;li style=&quot;color: #202124;&quot;&gt;Navigate to the external load balancer IP address of the&lt;span&gt;&amp;nbsp;&lt;/span&gt;helloweb-service-if4a&lt;span&gt;&amp;nbsp;&lt;/span&gt;service, and you should see the following text returned by the service:&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;pre class=&quot;yaml&quot; style=&quot;background-color: #2b2b2b; color: #f8f8f2;&quot;&gt;&lt;code&gt;Hello, world!
Version: 2.0.0
Hostname: helloweb-6fc7476576-cvv5f&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1757138944999&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ cat &amp;gt; main.go &amp;lt;&amp;lt;EOF
package main

import (
        &quot;fmt&quot;
        &quot;log&quot;
        &quot;net/http&quot;
        &quot;os&quot;
)

func main() {
        // register hello function to handle all requests
        mux := http.NewServeMux()
        mux.HandleFunc(&quot;/&quot;, hello)

        // use PORT environment variable, or default to 8080
        port := os.Getenv(&quot;PORT&quot;)
        if port == &quot;&quot; {
                port = &quot;8080&quot;
        }

        // start the web server on port and accept requests
        log.Printf(&quot;Server listening on port %s&quot;, port)
        log.Fatal(http.ListenAndServe(&quot;:&quot;+port, mux))
}

// hello responds to the request with a plain-text &quot;Hello, world&quot; message.
func hello(w http.ResponseWriter, r *http.Request) {
        log.Printf(&quot;Serving request: %s&quot;, r.URL.Path)
        host, _ := os.Hostname()
        fmt.Fprintf(w, &quot;Hello, world!\n&quot;)
        fmt.Fprintf(w, &quot;Version: 2.0.0\n&quot;)
        fmt.Fprintf(w, &quot;Hostname: %s\n&quot;, host)
}

// [END container_hello_app]
// [END gke_hello_app]

EOF

$ export PROJECT_ID=$(gcloud config get-value project)
$ export REGION=&quot;${ZONE%-*}&quot;
$ cd ~/hello-app/

$ gcloud auth configure-docker $REGION-docker.pkg.dev --quiet
$ docker build -t $REGION-docker.pkg.dev/$PROJECT_ID/$REPO_NAME/hello-app:v2 .

$ docker push $REGION-docker.pkg.dev/$PROJECT_ID/$REPO_NAME/hello-app:v2

$ kubectl set image deployment/helloweb -n $NAMESPACE hello-app=$REGION-docker.pkg.dev/$PROJECT_ID/$REPO_NAME/hello-app:v2

$ kubectl expose deployment helloweb -n $NAMESPACE --name=$SERVICE_NAME --type=LoadBalancer --port 8080 --target-port 8080

$ cd ..

$ kubectl -n $NAMESPACE apply -f pod-monitoring.yaml&lt;/code&gt;&lt;/pre&gt;</description>
      <category>DevOps/GCP</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/340</guid>
      <comments>https://miinsun.tistory.com/340#entry340comment</comments>
      <pubDate>Sat, 6 Sep 2025 15:09:58 +0900</pubDate>
    </item>
    <item>
      <title>Kubestronaut 취득 후기</title>
      <link>https://miinsun.tistory.com/338</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;177&quot; data-origin-height=&quot;150&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/degaF3/dJMb9fdOA05/ByGUio2795PBUpbsenEKdK/tfile.svg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/degaF3/dJMb9fdOA05/ByGUio2795PBUpbsenEKdK/tfile.svg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/degaF3/dJMb9fdOA05/ByGUio2795PBUpbsenEKdK/tfile.svg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdegaF3%2FdJMb9fdOA05%2FByGUio2795PBUpbsenEKdK%2Ftfile.svg&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; loading=&quot;lazy&quot; width=&quot;177&quot; height=&quot;150&quot; data-origin-width=&quot;177&quot; data-origin-height=&quot;150&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;1. 서론&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;최근 저는 모든 CNCF의 Kubernetes 자격을 획득하며 Kubestronaut 타이틀을 획득했습니다. 이 자격을 취득한 이후 주변 동료들과 커뮤니티로부터 관련 문의를 많이 받았는데, 주변인들에게 많은 관심을 받으면서 많은 분들이 Kubestronaut 자격에 관심이 크다는 사실을 실감할 수 있었습니다. 그래서 2025년 7월을 기준 최신 시험 난이도, 시험 구성, 그리고 효과적인 자격 준비 팁 등을 정리해 공유함으로써 앞으로 Kubestronaut를 도전하시는 분들에게 실질적인 도움이 되고자 이 글을 작성합니다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;Kubestronaut 프로그램이란?&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;CNCF의 모든 Kubernetes 인증 자격을 취득한 이들에게 &amp;lsquo;Kubestronaut&amp;rsquo; 타이틀과 함께 전용 재킷, Credly 배지, 전용 Slack 채널 접근권, 연간 50% 할인 인증 쿠폰 5매, CNCF 이벤트 20% 할인 혜택 등이 제공됩니다&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;mdash;현재 취득해야하는 자격 리스트는 아래와 같습니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Certified Kubernetes Administrator(CKA),&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Certified Kubernetes Application Developer(CKAD),&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Certified Kubernetes Security Specialist(CKS),&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Kubernetes and Cloud Native Associate(KCNA),&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Kubernetes and Cloud Security Associate(KCSA)&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;2. 시험 난이도 평가&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;실기 vs 이론&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1145&quot; data-start=&quot;1039&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1097&quot; data-start=&quot;1039&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;CKA/CKAD/CKS&lt;/b&gt;: 실제 클러스터 환경에서 문제를 해결하는 실습 기반 시험입니다.&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1145&quot; data-start=&quot;1101&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;KCNA/KCSA&lt;/b&gt;: 핵심 개념&amp;middot;이론을 묻는 다지선다형 시험입니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&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 data-end=&quot;1452&quot; data-start=&quot;1171&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;CKS (Certified Kubernetes Security Specialist)&lt;/b&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1452&quot; data-start=&quot;1233&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1290&quot; data-start=&quot;1233&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;쿠버네티스 보안 심화 영역(클러스터 하드닝, 공급망 보안, 런타임 보안 등)을 폭넓게 다룹니다.&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1405&quot; data-start=&quot;1297&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;Falco&lt;/b&gt;, &lt;b&gt;kube-bench&lt;/b&gt;, &lt;b&gt;OPA Gatekeeper&lt;/b&gt;, &lt;b&gt;Trivy&lt;/b&gt; 같은 다양한 오픈소스 보안 툴 사용 역량이 요구됩니다.&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1452&quot; data-start=&quot;1412&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;첫 도전에서 탈락하여&amp;nbsp;&lt;b&gt;재시험 끝에&lt;/b&gt; 합격할 수 있었습니다  &lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1452&quot; data-start=&quot;1412&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;우선 시험시간 120분이 정말 타이트하게 진행되는 시험입니다. 사실상 모든 문항이 트러블 슈팅 과제라서 쉽게 넘어갈 수 있는 문제가 거의 없었습니다.&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1452&quot; data-start=&quot;1412&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;문제는 15~16문제 내외였고, CKA와 유사한 시험 문제(클러스터 업데이트, network policy 수정 등)도 출제되어 CKA 취득 후 CKS를 준비하면 시험 대비에 많은 도움이 될 것 같습니다.&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1452&quot; data-start=&quot;1412&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;2번의 시험 모두에서 Webhook Admission Controller 적용, Falco, Audit 로그 설정의 문제가 나왔으며 해당 유형의 문제들은 비중이 크고 해결 시간도 오래 걸리는 편이니 꼭 꼼꼼히 익혀가는 것을 추천합니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1674&quot; data-start=&quot;1456&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;KCSA (Kubernetes and Cloud Security Associate)&lt;/b&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1674&quot; data-start=&quot;1518&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1569&quot; data-start=&quot;1518&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;클라우드 네이티브 보안 기초(네트워크&amp;middot;IAM&amp;middot;컴플라이언스, 보안위배모델 등)를 이론으로 평가합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1674&quot; data-start=&quot;1576&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;KCNA와 마찬가지로 60문항을 90분 안에 풀어야 하며, 4지선다 시험이였습니다.&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1674&quot; data-start=&quot;1576&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;KCNA를 준비하며 보안 영어 용어 장벽이 꽤나 컸습니다. 저는 보안&amp;nbsp;&lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;핵심 용어를 &lt;b&gt;긍정/대응(보호&amp;middot;완화)&lt;/b&gt; vs &lt;b&gt;부정/공격(위협&amp;middot;침해)&lt;/b&gt; 두 축으로 나눠 외웠고, 이 방식이 개념 정리와 정답 소거에 모두 도움이 됐습니다.&lt;/span&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;454&quot; data-start=&quot;311&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;부정/공격(위협&amp;middot;침해)&lt;/b&gt;: exploit(악용), compromised(침해된), exfiltration(유출), privilege escalation(권한 상승), spoofing(위장), tampering(변조), evasion(탐지 회피)&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;638&quot; data-start=&quot;455&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;긍정/대응(보호&amp;middot;완화)&lt;/b&gt;: mitigate(완화하다), remediate/patch(시정/패치), harden(하드닝), isolate(격리), enforce(강제), restrict/deny-by-default(기본 거부), least privilege(최소권한), rotate credentials(자격 증명 교체)&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2001&quot; data-start=&quot;1678&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;CKA / CKAD&lt;/b&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2001&quot; data-start=&quot;1704&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1804&quot; data-start=&quot;1704&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;CKA&lt;/b&gt;: 클러스터 설치&amp;middot;관리&amp;middot;트러블슈팅 등&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1934&quot; data-start=&quot;1811&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;CKAD&lt;/b&gt;:&amp;nbsp; Kubernetes 를 통한 애플리케이션 설계&amp;middot;배포&amp;middot;모니터링 등&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;2001&quot; data-start=&quot;1941&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;둘 다 2시간 동안 15~20개 과제를 풀어야 하며 오픈북으로 진행됩니다.&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;2001&quot; data-start=&quot;1941&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;K8S에 어느 정도 익숙하고 공식 문서를 참고하여 충분히 시간 내에 풀 수있는 수준의 문제들로 구성되어 있었습니다.&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;2001&quot; data-start=&quot;1941&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Helm을 활용한 컴포넌트 관리도 시험 문제로 출제가 되었습니다. Helm/Kustomize를 활용한 문제가 나올 수 있으니 기본 커맨드 정도는 익혀가길 권장합니다.&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2001&quot; data-start=&quot;1941&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Helm : helm repo add/update, helm install/update, values.yaml을 통한 설정&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;2001&quot; data-start=&quot;1941&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Kustomize : kubectl apply -k , kustomize.yaml을 통해 resources, patches관리&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;2159&quot; data-start=&quot;2005&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;KCNA (Kubernetes and Cloud Native Associate)&lt;/b&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2159&quot; data-start=&quot;2065&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2121&quot; data-start=&quot;2065&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;클라우드 네이티브 전반 개념을 묻는 입문 수준 시험으로, 90분 동안 60문항 내외를 풉니다.&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;2121&quot; data-start=&quot;2065&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;4지선다의 시험이고, Kubernetes의&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;기본 개념 숙지가 되어 있으면 비교적 무난한 시험입니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;3. 공부 및&amp;nbsp; 준비 방법&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Kubernetes 입문 / 기초 공부 방법&lt;/span&gt;&lt;/b&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;/li&gt;
&lt;li&gt;클라우드, Docker, Kubernetes 를 처음 접하는 모든 입문자들에게 강추하는 강의입니다  &lt;/li&gt;
&lt;/ul&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=6n5obRKsCRQ&amp;amp;list=PLApuRlvrZKohaBHvXAOhUD-RxD0uQ3z0c&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/b5YRMV/hyZnabIN6P/S8V3jSMeRKN784ekihNU2K/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=994_110_1130_258,https://scrap.kakaocdn.net/dn/clMBd3/hyZm9YdMWI/qkd1ElmZEo3kABUf6BYkM1/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=994_110_1130_258&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;[따배쿠] 0. 따라하면서 배우는 쿠버네티스 입문편 - OT&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/6n5obRKsCRQ&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&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;&lt;b&gt;Kubernetes 실습 / 심화 공부 방법&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Kubernetes를 통한 심화 학습은 Mumshad 선생님의 KodeKloud Kubestronaut 커리큘럼을 통해 준비하였습니다.&lt;/li&gt;
&lt;li&gt;KodeKloud가 유료 서비스이고, 가격이 꽤 나가기는 하지만 (월 약 5만원 정도 ㅠ) 시험과 유사한 환경의 랩/시나리오가 제공되고, 한국어 자막도 제공하기 때문에 시험 준비에 큰 도움이 되었습니다.&lt;/li&gt;
&lt;li&gt;Killercoda도 시험 준비에 큰 도움이 되었습니다. KodeKloud에 없는 유형의 시나리오 랩을 여기서 커버 할 수 있었고 또 무료로 제공되는 공개 시나리오가 많아 부담없이 연습할 수 있어 좋았습니다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2742&quot; data-origin-height=&quot;1196&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n3kA7/btsPzVbmbMv/fL8qsjl2Tl4dHDJ5XyU9H0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n3kA7/btsPzVbmbMv/fL8qsjl2Tl4dHDJ5XyU9H0/img.png&quot; data-alt=&quot;KodeKloud Kubestronaut 프로그램&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n3kA7/btsPzVbmbMv/fL8qsjl2Tl4dHDJ5XyU9H0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn3kA7%2FbtsPzVbmbMv%2FfL8qsjl2Tl4dHDJ5XyU9H0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;819&quot; height=&quot;357&quot; data-origin-width=&quot;2742&quot; data-origin-height=&quot;1196&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;KodeKloud Kubestronaut 프로그램&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2742&quot; data-origin-height=&quot;1196&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPLK3O/btsPzYFV0Nf/RXZvwZtDltsUkq5rg985NK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPLK3O/btsPzYFV0Nf/RXZvwZtDltsUkq5rg985NK/img.png&quot; data-alt=&quot;KillerKoda CKS&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPLK3O/btsPzYFV0Nf/RXZvwZtDltsUkq5rg985NK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPLK3O%2FbtsPzYFV0Nf%2FRXZvwZtDltsUkq5rg985NK%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;819&quot; height=&quot;357&quot; data-origin-width=&quot;2742&quot; data-origin-height=&quot;1196&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;KillerKoda CKS&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;4. 시헙 TIPS&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;오픈북 대비법&lt;/span&gt;&lt;/b&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;br /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;시험 전, 자주 볼 섹션의 주요 내용들의 docs 위치를 외워가는게 시간 단축에 큰 도움이 되었습니다.&lt;/li&gt;
&lt;li&gt;CKS의 경우, Admission Controller의 설정 방법, 상세 옵션 내용들, Audit Policy 설정 방법, ServiceAccount Unmounted 옵션, Projected Volume, Network Policy 설정 등등..&lt;/li&gt;
&lt;li&gt;CKA의 경우, ETCD 스냅샵/복구, 암/복호화, 클러스터 업그레이드 방법 등&lt;/li&gt;
&lt;li&gt;ChearSheet 를 활용하여 시험 시간 최대한 단축 시키기
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CKS 같은 경우, 시험 시간이 정~~~말 부족했기 때문에, cheatsheet의 명령어를 익혀 시간을 최대한으로 단축하길 권장 드립니다.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://kubernetes.io/docs/reference/kubectl/quick-reference/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://kubernetes.io/docs/reference/kubectl/quick-reference/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;검증 습관 만들기&lt;/b&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;b&gt;컨텍스트/네임스페이스가 다를 수 있습니다.&lt;/b&gt; 적용 전에 항상 확인&amp;middot;설정하세요&lt;/li&gt;
&lt;li&gt;문제에서 요구하는 결과 값을 정확히 이해하고 문제 만들기 (파일 제출/경로 지정 정확하게 확인 등등)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;killer.sh 적극 활용하기&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CKA,CKAD,CKS를 등록하면 2번의 killer.sh 세션을 무료로 제공해줍니다.&lt;/li&gt;
&lt;li&gt;실제 시험 환경과 가장 유사한 환경이고, 시험 문제 수준도 실제 시험과 유사하거나 조금 더 어려운 수준이기 때문에 시험 직전에 killer.sh을 활용해서 시험에 어느 정도 준비되었는지 확인 할 수 있다.&lt;/li&gt;
&lt;li&gt;killer.sh에 나온 문제가 그대로 시험에 나오기도 하니, 꼭 세션이 활성화 되어 있는 24시간 이내에 오답 풀이까지 철저하게 준비하는 것을 추천 드립니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;5. Kubestronaut를 취득하고..&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;820&quot; data-start=&quot;110&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;259&quot; data-start=&quot;110&quot;&gt;&lt;b&gt;Kubestronaut 재킷(굿즈)&lt;/b&gt;&lt;br /&gt;아쉽게도 아직 재킷은 수령 전입니다ㅠ 메일 안내에 따르면 &lt;b&gt;약 2개월(8~10주)&lt;/b&gt; 정도 걸릴 수 있고, 국가 단위로&amp;nbsp;&amp;nbsp;&lt;b&gt;묶음 배송 &amp;rarr; 현지 전달&lt;/b&gt; 방식이라 지역&amp;middot;시점에 따라 더 소요될 수도 있다고 합니다.&lt;/li&gt;
&lt;li data-end=&quot;402&quot; data-start=&quot;261&quot;&gt;&lt;b&gt;공식 등재&lt;/b&gt;&lt;br /&gt;CNCF의 Kubestronaut 목록에 &lt;b&gt;등재&lt;/b&gt;되었습니다! 당시 기준으로 &lt;b&gt;국내 67번째로&lt;/b&gt; Kubestronaut가 되었습니다.&lt;/li&gt;
&lt;li data-end=&quot;549&quot; data-start=&quot;404&quot;&gt;&lt;b&gt;할인 혜택(바우처)&lt;/b&gt;&lt;br /&gt;&lt;b&gt;CNCF 자격시험 50% 할인 바우처 5장&lt;/b&gt;을 받았습니다.&lt;br /&gt;&amp;rarr; 2년 뒤&amp;nbsp;&lt;b&gt;갱신용&lt;/b&gt;으로도 활용 할 수 있고, 향후 &lt;b&gt;Golden Kubestronaut&lt;/b&gt;를 노릴 때도 전략적으로 활용할 수 있을 것 같습니다.&lt;/li&gt;
&lt;li data-end=&quot;701&quot; data-start=&quot;551&quot;&gt;&lt;b&gt;커뮤니티(슬랙&amp;middot;메일링 리스트)&lt;/b&gt;&lt;br /&gt;Kubestronaut 전용 &lt;b&gt;비공개 슬랙 채널&lt;/b&gt;에 초대되어 동료들과 질의응답&amp;middot;정보 교환을 하고 있습니다. 공개 채널도 따로 있어 프로그램 관련 질문을 올리기 좋고, 지역 기반 네트워킹도 가능합니다&lt;/li&gt;
&lt;li data-end=&quot;820&quot; data-start=&quot;703&quot;&gt;&lt;b&gt;이벤트 연계&lt;/b&gt;&lt;br /&gt;&lt;b&gt;KubeCon/KubeDays&lt;/b&gt; 같은 CNCF 행사 때 &lt;b&gt;할인 코드 제공&lt;/b&gt; 및 &lt;b&gt;특별 세션/행사&lt;/b&gt; 초청 기회를 간간히 받고 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1940&quot; data-origin-height=&quot;902&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AqiBl/btsPAC96Zs0/KID7TKM6PwjzMY8PZJEQ2K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AqiBl/btsPAC96Zs0/KID7TKM6PwjzMY8PZJEQ2K/img.png&quot; data-alt=&quot;https://www.cncf.io/training/kubestronaut&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AqiBl/btsPAC96Zs0/KID7TKM6PwjzMY8PZJEQ2K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAqiBl%2FbtsPAC96Zs0%2FKID7TKM6PwjzMY8PZJEQ2K%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;591&quot; height=&quot;275&quot; data-origin-width=&quot;1940&quot; data-origin-height=&quot;902&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://www.cncf.io/training/kubestronaut&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;6. 마치며&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SRE 엔지니어로 근무하며 여러 오픈소스를 폭 넓게 쓸 수 있었지만, 어느 순간 깊이가 부족한 건 아닌가? 라는 나 자신에 대해 의문이 들곤 했습니다. 이러한 부분을 해소하기 위해 Kubestronaut를 준비하고 취득하며 Kubernetes를 좀 더 깊이 있게 배울 수 있는 기회가 되었던 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 목표는 kubernetes의 network와 ci/cd 분야에 좀 더 전문성을 갖추고 싶습니다. 이 글이 저와 같은 고민을 지니고 있는 분들에게 조금이나마 도움이 되었으면 좋겠습니다. Kubestronaut 관련 문의는 &lt;b&gt;언제든 환영&lt;/b&gt;합니다! 아래 링크드인으로 편하게 메시지 주세요. (&lt;b&gt;커피챗&lt;/b&gt;도 환영입니다 )&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.linkedin.com/in/minsunyun/&quot;&gt;https://www.linkedin.com/in/minsunyun/&lt;/a&gt;&lt;/p&gt;</description>
      <category>Infra/Kubernetes</category>
      <category>cka</category>
      <category>CKAD</category>
      <category>CKS</category>
      <category>kcna</category>
      <category>kcsa</category>
      <category>Kubernetes</category>
      <category>kubestronaut</category>
      <category>SRE</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/338</guid>
      <comments>https://miinsun.tistory.com/338#entry338comment</comments>
      <pubDate>Sat, 26 Jul 2025 17:07:09 +0900</pubDate>
    </item>
    <item>
      <title>KCSA 대비</title>
      <link>https://miinsun.tistory.com/337</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;긍정어&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;mitigated : 완화된, 줄인&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;persistence: 고집, 끈기, 영속성&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;dedicated: 헌신적인, 전용의&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt; &lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;consistency : 일관성&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;integrity : 진실성&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt; &lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;legitimate / &lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;legitimacy&lt;/span&gt; : 정당한 / 정당성, 합법성&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt; &lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;compromise : 타협하다, 절충하다&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;adhere : 지키다, 준수하다, 고수하다&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&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;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;vulnerable / vulnerability : 취약한 / 취약성&lt;/li&gt;
&lt;li&gt;compromised : 손상된, 탈취된&lt;/li&gt;
&lt;li&gt;exploit : 악용하다&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;suspicious : 의심스러운&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;rely on : 의존하다&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;excessive : 과도한&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt; &lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;impersonate : 사칭하다&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;bypassing : 우회하다&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;repudiation : 거부, 거절, 부인 (법률적 의미 : 주장에 대한 거부, 부인 방지)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;disclosure : 폭로, 공개&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt; &lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;dispute : 분쟁, 갈등, 논란&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;malicipis : 악의있는&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&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;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;알아둬야하는 개념&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The 4Cs of Cloud Native Security&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 171px;&quot; border=&quot;1&quot; data-end=&quot;854&quot; data-start=&quot;29&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;범주&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;집중 영역&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;주요 공격 벡터&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;핵심 모범 사례&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot; data-end=&quot;438&quot; data-start=&quot;304&quot;&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;312&quot; data-start=&quot;304&quot;&gt;Cloud&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;337&quot; data-start=&quot;312&quot;&gt;Infra&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;382&quot; data-start=&quot;337&quot; data-col-size=&quot;md&quot;&gt;관리 포트 노출, 과도한 권한의 IAM 역할&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;438&quot; data-start=&quot;382&quot; data-col-size=&quot;sm&quot;&gt;방화벽, VPN/ &lt;span style=&quot;background-color: #ffffff; color: oklch(0.372 0.044 257.287); text-align: left;&quot;&gt;bastion&lt;/span&gt; , 역할 감사&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 43px;&quot; data-end=&quot;583&quot; data-start=&quot;439&quot;&gt;
&lt;td style=&quot;height: 43px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;449&quot; data-start=&quot;439&quot;&gt;Cluster&lt;/td&gt;
&lt;td style=&quot;height: 43px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;474&quot; data-start=&quot;449&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: oklch(0.372 0.044 257.287); text-align: left;&quot;&gt;Control Plane &amp;amp; &lt;br /&gt;APIs&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 43px;&quot; data-end=&quot;522&quot; data-start=&quot;474&quot; data-col-size=&quot;md&quot;&gt;공개 Docker API, 보안 설정되지 않은 Kubernetes API/대시보드&lt;/td&gt;
&lt;td style=&quot;height: 43px;&quot; data-end=&quot;583&quot; data-start=&quot;522&quot; data-col-size=&quot;sm&quot;&gt;API 보호, RBAC, OIDC/TLS, 정기 패치&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 43px;&quot; data-end=&quot;718&quot; data-start=&quot;584&quot;&gt;
&lt;td style=&quot;height: 43px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;596&quot; data-start=&quot;584&quot;&gt;Container&lt;/td&gt;
&lt;td style=&quot;height: 43px;&quot; data-end=&quot;620&quot; data-start=&quot;596&quot; data-col-size=&quot;sm&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: oklch(0.372 0.044 257.287); text-align: left;&quot;&gt;Workload Isolation&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 43px;&quot; data-end=&quot;661&quot; data-start=&quot;620&quot; data-col-size=&quot;md&quot;&gt;신뢰되지 않는 이미지, 권한 상승 컨테이너, 느슨한 런타임 설정&lt;/td&gt;
&lt;td style=&quot;height: 43px;&quot; data-end=&quot;718&quot; data-start=&quot;661&quot; data-col-size=&quot;sm&quot;&gt;이미지 서명/스캔, PSP/PSA, seccomp, 리소스 제한&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 43px;&quot; data-end=&quot;854&quot; data-start=&quot;719&quot;&gt;
&lt;td style=&quot;height: 43px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;727&quot; data-start=&quot;719&quot;&gt;Code&lt;/td&gt;
&lt;td style=&quot;height: 43px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;750&quot; data-start=&quot;727&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: oklch(0.372 0.044 257.287); text-align: left;&quot;&gt;Application &amp;amp; &lt;br /&gt;Secrets&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 43px;&quot; data-col-size=&quot;md&quot; data-end=&quot;794&quot; data-start=&quot;750&quot;&gt;하드코딩된 자격 증명, 평문 환경 변수, mTLS 미적용&lt;/td&gt;
&lt;td style=&quot;height: 43px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;854&quot; data-start=&quot;794&quot;&gt;Vault/K8s Secrets(암호화), 상호 TLS, 코드 리뷰&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Kubernetes 컴포넌트의 TLS를 이용한 통신 암호화&lt;br /&gt;컨트롤러 매니저, 스케줄러, API 서버, etcd 간의 모든 통신이 암호화되도록 보장합니다:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;188&quot; data-start=&quot;76&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;117&quot; data-start=&quot;76&quot;&gt;클라이언트-서버 및 서버-서버 연결에 상호 TLS(mTLS) 활성화&lt;/li&gt;
&lt;li data-end=&quot;159&quot; data-start=&quot;118&quot;&gt;신뢰할 수 있는 인증 기관(CA) 또는 cert-manager 사용&lt;/li&gt;
&lt;li data-is-last-node=&quot;&quot; data-end=&quot;188&quot; data-start=&quot;160&quot;&gt;인증서 갱신 자동화를 통해 자격 증명 만료 방지&lt;/li&gt;
&lt;/ul&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;kubelet Security Options&lt;br /&gt;기본적으로 kubelet은 익명 요청(system:anonymous)을 허용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클라이언트가 자격증명을 하려면 이 기능을 비활성화 해야 함 &lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;491&quot; data-origin-height=&quot;249&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dVwhmo/btsOWCa7mBW/XxfT1eG78tidQmktSeCz21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dVwhmo/btsOWCa7mBW/XxfT1eG78tidQmktSeCz21/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dVwhmo/btsOWCa7mBW/XxfT1eG78tidQmktSeCz21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdVwhmo%2FbtsOWCa7mBW%2FXxfT1eG78tidQmktSeCz21%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;491&quot; height=&quot;249&quot; data-origin-width=&quot;491&quot; data-origin-height=&quot;249&quot;/&gt;&lt;/span&gt;&lt;/figure&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;KubeAPIServer Security Options&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;54&quot; data-start=&quot;0&quot;&gt;certificate-authority: API 서버의 인증서를 검증하도록 보장합니다.&lt;/li&gt;
&lt;li data-end=&quot;101&quot; data-start=&quot;55&quot;&gt;&quot;server: https://&amp;hellip; &quot; : 암호화된 HTTPS 연결을 강제합니다.&lt;/li&gt;
&lt;li data-is-last-node=&quot;&quot; data-end=&quot;148&quot; data-start=&quot;102&quot;&gt;Service Account token File: 인증된 RBAC 제어 접근을 제공합니다.&lt;/li&gt;
&lt;li data-is-last-node=&quot;&quot; data-end=&quot;148&quot; data-start=&quot;102&quot;&gt;Enable Audit Logging&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Pod Security Policies (PSP)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Enabling&amp;nbsp;the&amp;nbsp;PSP&amp;nbsp;Admission&amp;nbsp;Controller&lt;/li&gt;
&lt;li&gt;Defining a Basic PSP : A minimal PSP that disallows privileged containers&lt;/li&gt;
&lt;li data-end=&quot;66&quot; data-start=&quot;0&quot;&gt;requiredDropCapabilities : 기본적으로 위험한 권한(capabilities)을 제거합니다.&lt;/li&gt;
&lt;li data-end=&quot;127&quot; data-start=&quot;67&quot;&gt;defaultAddCapabilities : 안전한 권한을 명시적으로 추가하는 옵션&lt;/li&gt;
&lt;li data-is-last-node=&quot;&quot; data-end=&quot;192&quot; data-start=&quot;128&quot;&gt;Volume Type을 persistentVolumeClaim으로만 제한하며, &lt;span style=&quot;background-color: #ffffff; color: oklch(0.372 0.044 257.287); text-align: left;&quot;&gt;host-mounted&lt;/span&gt; path는 허용하지 않음&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Kubernetes&amp;nbsp;Authorization&amp;nbsp;Mechanisms&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;620&quot; data-start=&quot;29&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-is-last-node=&quot;&quot; data-end=&quot;620&quot; data-start=&quot;245&quot;&gt;
&lt;tr data-end=&quot;340&quot; data-start=&quot;245&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;258&quot; data-start=&quot;245&quot;&gt;Node&lt;/td&gt;
&lt;td data-end=&quot;340&quot; data-start=&quot;258&quot; data-col-size=&quot;md&quot;&gt;system:node:&amp;lt;nodeName&amp;gt; 인증서를 기반으로 kubelet에 필요한 권한만 정확히 부여합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;437&quot; data-start=&quot;341&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;354&quot; data-start=&quot;341&quot;&gt;ABAC&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;437&quot; data-start=&quot;354&quot;&gt;API 서버 시작 시 전달된 속성 기반 JSON 정책을 사용합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;532&quot; data-start=&quot;438&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;451&quot; data-start=&quot;438&quot;&gt;RBAC&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;532&quot; data-start=&quot;451&quot;&gt;권한 모음(Role)과 이를 사용자/그룹에 할당하는 RoleBinding을 정의합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-is-last-node=&quot;&quot; data-end=&quot;620&quot; data-start=&quot;533&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;546&quot; data-start=&quot;533&quot;&gt;Webhook&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-is-last-node=&quot;&quot; data-end=&quot;620&quot; data-start=&quot;546&quot;&gt;각 요청을 외부 HTTP 서비스(예: OPA)로 위임하여 맞춤형 정책 결정을 수행합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-end=&quot;247&quot; data-start=&quot;193&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;247&quot; data-start=&quot;193&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Kubernetes 기본 네임스페이스&lt;/b&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;551&quot; data-start=&quot;249&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;551&quot; data-start=&quot;372&quot;&gt;
&lt;tr data-end=&quot;430&quot; data-start=&quot;372&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;386&quot; data-start=&quot;372&quot;&gt;default&lt;/td&gt;
&lt;td data-end=&quot;430&quot; data-start=&quot;386&quot; data-col-size=&quot;md&quot;&gt;사용자의 워크로드를 위한 기본 네임스페이스&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;493&quot; data-start=&quot;431&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;447&quot; data-start=&quot;431&quot;&gt;kube-system&lt;/td&gt;
&lt;td data-end=&quot;493&quot; data-start=&quot;447&quot; data-col-size=&quot;md&quot;&gt;클러스터 핵심 컴포넌트 및 애드온(DNS, 네트워크 플러그인, 컨트롤러 등)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;551&quot; data-start=&quot;494&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;510&quot; data-start=&quot;494&quot;&gt;kube-public&lt;/td&gt;
&lt;td data-end=&quot;551&quot; data-start=&quot;510&quot; data-col-size=&quot;md&quot;&gt;공개적으로 접근 가능한 리소스를 위한 읽기 전용 네임스페이스&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&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;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;626&quot; data-start=&quot;23&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-is-last-node=&quot;&quot; data-end=&quot;626&quot; data-start=&quot;210&quot;&gt;
&lt;tr data-end=&quot;293&quot; data-start=&quot;210&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;241&quot; data-start=&quot;210&quot;&gt;Dirty COW&lt;/td&gt;
&lt;td data-end=&quot;293&quot; data-start=&quot;241&quot; data-col-size=&quot;sm&quot;&gt;승인되지 않은 루트 권한 획득을 허용하는 리눅스 커널 결함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;376&quot; data-start=&quot;294&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;321&quot; data-start=&quot;294&quot;&gt;runc 컨테이너 탈출&lt;/td&gt;
&lt;td data-end=&quot;376&quot; data-start=&quot;321&quot; data-col-size=&quot;sm&quot;&gt;runc 바이너리를 덮어써 호스트 수준 권한을 획득&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;456&quot; data-start=&quot;377&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;402&quot; data-start=&quot;377&quot;&gt;Docker 컨테이너 이스케이프&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;456&quot; data-start=&quot;402&quot;&gt;컨테이너 내부에서 호스트의 Secret 파일에 접근&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;541&quot; data-start=&quot;457&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;485&quot; data-start=&quot;457&quot;&gt;Containerd DoS&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;541&quot; data-start=&quot;485&quot;&gt;containerd 자원 고갈을 통해 호스트에 서비스 거부 상태 유발&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-is-last-node=&quot;&quot; data-end=&quot;626&quot; data-start=&quot;542&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;569&quot; data-start=&quot;542&quot;&gt;CRI-O 컨테이너 Escape&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-is-last-node=&quot;&quot; data-end=&quot;626&quot; data-start=&quot;569&quot;&gt;CRI-O 샌드박스를 벗어나 호스트 환경으로 탈출&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;Trust Boundary&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;715&quot; data-start=&quot;51&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;715&quot; data-start=&quot;241&quot;&gt;
&lt;tr data-end=&quot;335&quot; data-start=&quot;241&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;260&quot; data-start=&quot;241&quot;&gt;클러스터 (Cluster)&lt;/td&gt;
&lt;td data-end=&quot;288&quot; data-start=&quot;260&quot; data-col-size=&quot;sm&quot;&gt;전체 Kubernetes 클러스터&lt;/td&gt;
&lt;td data-end=&quot;335&quot; data-start=&quot;288&quot; data-col-size=&quot;sm&quot;&gt;VPC 분리, 전용 클러스터&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;428&quot; data-start=&quot;336&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;356&quot; data-start=&quot;336&quot;&gt;노드 (Node)&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;381&quot; data-start=&quot;356&quot;&gt;단일 컴퓨트 호스트&lt;/td&gt;
&lt;td data-end=&quot;428&quot; data-start=&quot;381&quot; data-col-size=&quot;sm&quot;&gt;노드 강화, kubelet 인증, 호스트 OS 패치&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;526&quot; data-start=&quot;429&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;450&quot; data-start=&quot;429&quot;&gt;네임스페이스 (Namespace)&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;476&quot; data-start=&quot;450&quot;&gt;논리적 분할&lt;/td&gt;
&lt;td data-end=&quot;526&quot; data-start=&quot;476&quot; data-col-size=&quot;sm&quot;&gt;RBAC 역할, NetworkPolicy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;622&quot; data-start=&quot;527&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;547&quot; data-start=&quot;527&quot;&gt;파드 (Pod)&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;570&quot; data-start=&quot;547&quot;&gt;애플리케이션 인스턴스&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;622&quot; data-start=&quot;570&quot;&gt;PodSecurityPolicies, egress/ingress 정책&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;715&quot; data-start=&quot;623&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;643&quot; data-start=&quot;623&quot;&gt;컨테이너 (Container)&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;667&quot; data-start=&quot;643&quot;&gt;컨테이너 프로세스&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;715&quot; data-start=&quot;667&quot;&gt;AppArmor, seccomp, 최소 베이스 이미지&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;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;Application in Container BestPractices&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;872&quot; data-start=&quot;41&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-is-last-node=&quot;&quot; data-end=&quot;872&quot; data-start=&quot;296&quot;&gt;
&lt;tr data-end=&quot;410&quot; data-start=&quot;296&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;323&quot; data-start=&quot;296&quot;&gt;최소 베이스 이미지 사용&lt;/td&gt;
&lt;td data-end=&quot;410&quot; data-start=&quot;323&quot; data-col-size=&quot;md&quot;&gt;distroless 등 경량화되고 잘 관리되는 이미지 사용으로 OS 수준 취약점 축소&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;529&quot; data-start=&quot;411&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;441&quot; data-start=&quot;411&quot;&gt;이미지 서명 강제&lt;/td&gt;
&lt;td data-end=&quot;529&quot; data-start=&quot;441&quot; data-col-size=&quot;md&quot;&gt;Notary, Cosign 같은 도구로 배포 전 이미지 스캔 및 서명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;642&quot; data-start=&quot;530&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;558&quot; data-start=&quot;530&quot;&gt;비밀정보 주기적 교체&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;642&quot; data-start=&quot;558&quot;&gt;비밀값 회전 자동화 및 장기 사용 자격 증명 회피&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;757&quot; data-start=&quot;643&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;673&quot; data-start=&quot;643&quot;&gt;최소 권한 RBAC 적용&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;757&quot; data-start=&quot;673&quot;&gt;각 서비스 계정에 필요한 권한만 부여&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-is-last-node=&quot;&quot; data-end=&quot;872&quot; data-start=&quot;758&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;786&quot; data-start=&quot;758&quot;&gt;네트워크 정책 구현&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-is-last-node=&quot;&quot; data-end=&quot;872&quot; data-start=&quot;786&quot;&gt;파드 간 통신 분리 및 Kubernetes API 서버로의 egress 제한&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;Service Mesh의 주요 기능&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1234&quot; data-start=&quot;38&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;기능&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;예시 도구/설정&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;497&quot; data-start=&quot;344&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;376&quot; data-start=&quot;344&quot;&gt;서비스 디스커버리 (Service Discovery)&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;440&quot; data-start=&quot;376&quot;&gt;동적 조회를 위해 정상 인스턴스 레지스트리를 유지합니다.&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;497&quot; data-start=&quot;440&quot;&gt;Envoy, Consul Catalog&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;645&quot; data-start=&quot;498&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;527&quot; data-start=&quot;498&quot;&gt;상태 확인 (Health Checking)&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;589&quot; data-start=&quot;527&quot;&gt;응답이 없는 인스턴스를 제거해 비정상 파드로의 라우팅을 방지합니다.&lt;/td&gt;
&lt;td data-end=&quot;645&quot; data-start=&quot;589&quot; data-col-size=&quot;md&quot;&gt;HTTP/gRPC 프로브, 커스텀 헬스 체크&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;789&quot; data-start=&quot;646&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;675&quot; data-start=&quot;646&quot;&gt;로드 밸런싱 (Load Balancing)&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;734&quot; data-start=&quot;675&quot;&gt;라운드 로빈, 최소 연결, 로컬리티 기반 등 다양한 알고리즘으로 트래픽을 분산합니다.&lt;/td&gt;
&lt;td data-end=&quot;789&quot; data-start=&quot;734&quot; data-col-size=&quot;md&quot;&gt;Envoy의 LB 알고리즘&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;936&quot; data-start=&quot;790&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;814&quot; data-start=&quot;790&quot;&gt;보안 (mTLS)&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;879&quot; data-start=&quot;814&quot;&gt;서비스 간 모든 트래픽을 암호화하고 인증합니다.&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;936&quot; data-start=&quot;879&quot;&gt;Istio PeerAuthentication, Linkerd identity service&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1084&quot; data-start=&quot;937&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;967&quot; data-start=&quot;937&quot;&gt;트래픽 관리 (Traffic Management)&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;1026&quot; data-start=&quot;967&quot;&gt;재시도, 타임아웃, 장애 주입, 트래픽 분할 정책 등을 적용해 요청 흐름을 제어합니다.&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;1084&quot; data-start=&quot;1026&quot;&gt;Istio VirtualService, Linkerd ServiceProfile&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1234&quot; data-start=&quot;1085&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1112&quot; data-start=&quot;1085&quot;&gt;관측 가능성 (Observability)&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;1176&quot; data-start=&quot;1112&quot;&gt;엔드 투 엔드 가시성을 위해 메트릭, 로그, 트레이스를 수집합니다.&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;1234&quot; data-start=&quot;1176&quot;&gt;Prometheus, Jaeger, Grafana&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;color: #000000;&quot;&gt;주요 Compliance Frameworks&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 126px;&quot; border=&quot;1&quot; data-end=&quot;985&quot; data-start=&quot;271&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;프레임워크&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;적용 범위&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt;&amp;nbsp;주요 요구사항&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot; data-end=&quot;580&quot; data-start=&quot;480&quot;&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;497&quot; data-start=&quot;480&quot;&gt;GDPR&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;526&quot; data-start=&quot;497&quot; data-col-size=&quot;sm&quot;&gt;EU 개인 데이터 보호&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;580&quot; data-start=&quot;526&quot; data-col-size=&quot;sm&quot;&gt;저장 시 암호화, 데이터 접근 제한&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot; data-end=&quot;681&quot; data-start=&quot;581&quot;&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;598&quot; data-start=&quot;581&quot;&gt;HIPAA&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;627&quot; data-start=&quot;598&quot; data-col-size=&quot;sm&quot;&gt;미국 의료 정보(PHI) 보호&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;681&quot; data-start=&quot;627&quot; data-col-size=&quot;sm&quot;&gt;TLS 암호화, 엄격한 접근 제어, 안전한 비밀 관리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot; data-end=&quot;781&quot; data-start=&quot;682&quot;&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;699&quot; data-start=&quot;682&quot;&gt;PCI DSS&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;727&quot; data-start=&quot;699&quot; data-col-size=&quot;sm&quot;&gt;결제 카드 데이터 보호&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;781&quot; data-start=&quot;727&quot; data-col-size=&quot;sm&quot;&gt;전송 및 저장 시 암호화, 감사 로깅, 강력한 인증&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot; data-end=&quot;883&quot; data-start=&quot;782&quot;&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;799&quot; data-start=&quot;782&quot;&gt;NIST&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;828&quot; data-start=&quot;799&quot; data-col-size=&quot;sm&quot;&gt;사이버 보안 모범 사례&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-end=&quot;883&quot; data-start=&quot;828&quot; data-col-size=&quot;sm&quot;&gt;위험 평가, 보안 통제, 주기적 감사&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot; data-end=&quot;985&quot; data-start=&quot;884&quot;&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;898&quot; data-start=&quot;884&quot;&gt;CIS 벤치마크&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;929&quot; data-start=&quot;898&quot;&gt;IT 시스템 강화&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;985&quot; data-start=&quot;929&quot;&gt;안전한 설정, RBAC, 네트워크 정책, 로깅&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;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;Threat Modelling Frameworks (STRIDE: Six Threat)&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1159&quot; data-start=&quot;49&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;위협 유형&lt;/td&gt;
&lt;td&gt;정의&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;background-color: #ffffff; color: oklch(0.372 0.044 257.287); text-align: left;&quot;&gt;Multi-factor authentication, certificate-based auth&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;470&quot; data-start=&quot;337&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;366&quot; data-start=&quot;337&quot;&gt;스푸핑 (Spoofing)&lt;/td&gt;
&lt;td data-end=&quot;419&quot; data-start=&quot;366&quot; data-col-size=&quot;sm&quot;&gt;합법적인 사용자 또는 시스템을 가장하는 행위&lt;/td&gt;
&lt;td data-end=&quot;470&quot; data-start=&quot;419&quot; data-col-size=&quot;md&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: oklch(0.372 0.044 257.287); text-align: left;&quot;&gt;Encryption, Digital Signatures&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;608&quot; data-start=&quot;471&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;501&quot; data-start=&quot;471&quot;&gt;변조 (Tampering)&lt;/td&gt;
&lt;td data-end=&quot;555&quot; data-start=&quot;501&quot; data-col-size=&quot;sm&quot;&gt;전송 중이거나 저장된 데이터의 무단 수정&lt;/td&gt;
&lt;td data-end=&quot;608&quot; data-start=&quot;555&quot; data-col-size=&quot;md&quot;&gt;암호화, 디지털 서명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;746&quot; data-start=&quot;609&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;637&quot; data-start=&quot;609&quot;&gt;부인방지 (Repudiation)&lt;/td&gt;
&lt;td data-end=&quot;693&quot; data-start=&quot;637&quot; data-col-size=&quot;sm&quot;&gt;수행된 행위(예: 거래)를 부인하는 행위&lt;/td&gt;
&lt;td data-end=&quot;746&quot; data-start=&quot;693&quot; data-col-size=&quot;md&quot;&gt;종합 로깅, 부인방지(non-repudiation) 기법&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;888&quot; data-start=&quot;747&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;780&quot; data-start=&quot;747&quot;&gt;정보 노출 (Information Disclosure)&lt;/td&gt;
&lt;td data-end=&quot;835&quot; data-start=&quot;780&quot; data-col-size=&quot;sm&quot;&gt;민감 데이터가 노출되는 행위&lt;/td&gt;
&lt;td data-end=&quot;888&quot; data-start=&quot;835&quot; data-col-size=&quot;md&quot;&gt;전송 시 TLS, 디스크 암호화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1023&quot; data-start=&quot;889&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;919&quot; data-start=&quot;889&quot;&gt;서비스 거부 (Denial of Service)&lt;/td&gt;
&lt;td data-end=&quot;972&quot; data-start=&quot;919&quot; data-col-size=&quot;sm&quot;&gt;자원 고갈 또는 서비스 중단을 유발하는 행위&lt;/td&gt;
&lt;td data-end=&quot;1023&quot; data-start=&quot;972&quot; data-col-size=&quot;md&quot;&gt;속도 제한(rate limiting), 리소스 쿼터, 오토스케일링 정책 적용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1159&quot; data-start=&quot;1024&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1057&quot; data-start=&quot;1024&quot;&gt;권한 상승 (Elevation of Privilege)&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1110&quot; data-start=&quot;1057&quot;&gt;무단으로 상위 권한을 획득하는 행위&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;1159&quot; data-start=&quot;1110&quot;&gt;역할 기반 접근 제어(RBAC), 최소 권한 원칙 적용&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;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;Supply&amp;nbsp;Chain&amp;nbsp;Compliance&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;712&quot; data-start=&quot;45&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Core&amp;nbsp;Area&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Description&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Tool&amp;nbsp;/&amp;nbsp;Standard&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;377&quot; data-start=&quot;267&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;289&quot; data-start=&quot;267&quot;&gt;아티팩트 (Artifacts)&lt;/td&gt;
&lt;td data-end=&quot;332&quot; data-start=&quot;289&quot; data-col-size=&quot;sm&quot;&gt;빌드 결과물: 이미지, 바이너리&lt;/td&gt;
&lt;td data-end=&quot;377&quot; data-start=&quot;332&quot; data-col-size=&quot;sm&quot;&gt;Sigstore Cosign&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;487&quot; data-start=&quot;378&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;399&quot; data-start=&quot;378&quot;&gt;메타데이터 (Metadata)&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;442&quot; data-start=&quot;399&quot;&gt;소프트웨어 자재 명세서(SBOM)&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;487&quot; data-start=&quot;442&quot;&gt;SPDX&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;601&quot; data-start=&quot;488&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;512&quot; data-start=&quot;488&quot;&gt;증명서 (Attestations)&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;556&quot; data-start=&quot;512&quot;&gt;서명된 출처 증명 문서&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;601&quot; data-start=&quot;556&quot;&gt;in-toto&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-is-last-node=&quot;&quot; data-end=&quot;712&quot; data-start=&quot;602&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;624&quot; data-start=&quot;602&quot;&gt;정책 (Policies)&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;667&quot; data-start=&quot;624&quot;&gt;자동화된 컴플라이언스 적용&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-is-last-node=&quot;&quot; data-end=&quot;712&quot; data-start=&quot;667&quot;&gt;Sigstore Policy Controller&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;어려웠던 문제&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;Q1. Kubernetes Management 컴포넌트에 대한 무단 접근을 방지하기 위한 &lt;/span&gt;&amp;nbsp;가장 효과적인 조치는 무엇일까요?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A2. etcd를 로컬호스트에 바인딩하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이유:&lt;/b&gt; etcd는 Kubernetes의 핵심 데이터 스토어로, 클러스터 상태 및 시크릿 등 민감 정보를 저장합니다. etcd를 로컬호스트 인터페이스에만 바인딩하면 외부 네트워크에서 등d에 직접 접근하는 것을 근본적으로 차단합니다. 이렇게 하면 공격 표면(attack surface)을 줄이고, 무단 사용자가 etcd API를 호출해 중요한 데이터를 조작&amp;middot;열람하는 것을 방지할 수 있습니다.&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;Q2. API 서비스에 대한 SQL 인젝션 공격을 우려하고 있습니다. 이 위험을 완화하기 위해 어떤 모범 사례를 채택해야 할까요?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A2. prepared statements과 parameterized queries 사용하기&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;Q3. 백엔드 서비스에 사용된 third-party 라이브러리 취약점을 자동으로 스캔해야 합니다. 어떤 도구를 사용해야 할까요?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A3. OWASP Dependency-Check와 Snyk&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;360&quot; data-start=&quot;273&quot;&gt;&lt;b&gt;OWASP Dependency-Check&lt;/b&gt;는 프로젝트의 의존성 트리를 분석해 알려진 CVE 데이터베이스와 대조하여 취약 라이브러리를 탐지합니다.&lt;/li&gt;
&lt;li data-end=&quot;447&quot; data-start=&quot;363&quot;&gt;&lt;b&gt;Snyk&lt;/b&gt;는 더 나아가 취약점의 심각도, 패치 가능성, 자동화된 PR 생성 기능 등을 제공해 개발 워크플로우에 통합하기에 최적화되어 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Q4. 웹 애플리케이션에서 카드 소지자(cardholder) 데이터를 보호하기 위해 암호화 및 강력한 접근 제어를 구현했습니다.&lt;br /&gt;이때 준수해야 하는 &lt;b&gt;컴플라이언스(규제) 프레임워크&lt;/b&gt;는 무엇인가요?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A4. PCI DSS&lt;/p&gt;
&lt;p data-end=&quot;232&quot; data-start=&quot;216&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이유:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;447&quot; data-start=&quot;247&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;372&quot; data-start=&quot;247&quot;&gt;&lt;b&gt;PCI DSS(Payment Card Industry Data Security Standard)&lt;/b&gt;는 신용카드 정보(카드 번호, 만료일, 보안코드 등)를 저장&amp;middot;전송&amp;middot;처리하는 모든 조직이 지켜야 할 보안 표준입니다. 암호화, 접근 통제, 로깅, 네트워크 보안 등 카드 소지자 데이터를 안전하게 보호하기 위한 구체적인 요구사항을 담고 있습니다.&lt;/li&gt;
&lt;li data-end=&quot;372&quot; data-start=&quot;247&quot;&gt;&lt;b&gt;CIS Benchmarks는&amp;nbsp;&lt;/b&gt;Center for Internet Security에서 제공하는 시스템&amp;middot;애플리케이션 설정 가이드라인입니다.&lt;/li&gt;
&lt;li data-end=&quot;372&quot; data-start=&quot;247&quot;&gt;&lt;b&gt;HIPAA는 &lt;/b&gt;미국 의료 분야의 개인정보보호법(Health Insurance Portability and Accountability Act)으로, 의료정보(PHI)를 다루는 조직에 적용됩니다.&lt;/li&gt;
&lt;li data-end=&quot;372&quot; data-start=&quot;247&quot;&gt;&lt;b&gt;GDPR는 &lt;/b&gt;유럽연합(EU) 거주자의 개인정보(PII)를 보호하기 위한 법률(General Data Protection Regulation)입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Q5. 컴플라이언스(규정 준수) 검사를 자동화하고 감사 보고서를 생성해야 합니다. 이를 위해 어떤 도구들이 적합할까요?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A5. Chef InSpec과 OpenSCAP&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;570&quot; data-start=&quot;231&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;570&quot; data-start=&quot;231&quot;&gt;&lt;b&gt;이유:&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;570&quot; data-start=&quot;245&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;342&quot; data-start=&quot;245&quot;&gt;&lt;b&gt;Chef InSpec&lt;/b&gt;은 서버&amp;middot;컨테이너&amp;middot;클라우드 리소스에 대해 정책(Policy as Code) 기반의 컴플라이언스 규칙을 작성하고 자동으로 평가할 수 있습니다.&lt;/li&gt;
&lt;li data-end=&quot;477&quot; data-start=&quot;345&quot;&gt;&lt;b&gt;OpenSCAP&lt;/b&gt;은 SCAP(Security Content Automation Protocol) 표준을 활용해 OS 및 애플리케이션 설정이 벤치마크(CIS, DISA STIG 등)에 부합하는지 스캔하고, 리포트를 생성합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Infra/Kubernetes</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/337</guid>
      <comments>https://miinsun.tistory.com/337#entry337comment</comments>
      <pubDate>Sun, 22 Jun 2025 19:06:40 +0900</pubDate>
    </item>
    <item>
      <title>[CKS] CKS 대비</title>
      <link>https://miinsun.tistory.com/336</link>
      <description>&lt;p data-ke-size=&quot;size14&quot;&gt;CKA 만료 기간이 얼마 안남아서.. 얼렁 CKS로 업그레이드 해줘야 할 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이 게시글은 개인적으로 CKS 대비하며 Todo 리스트를 준비하고 벼락치기용 cheet sheet로 쓰고자한다 ㅋㅋ&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;시험 환경&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;개인적인 공간
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;시험을 보는 공간은 책상과 의자 외에는 아무것도 없어야 합니다. 감독관이 카메라를 통해서 책상과 앉은 자리 의자 그리고 책상 및 천장, 바닥, 모든 벽 네면을 천천히 보여달라고 하는데 이것은 부정행위 요소가 있는지 여부를 확인하기 위함입니다. 그래서 저는 스터디 카페 개인룸을 빌려서 시험을 치뤘습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;온라인 시험
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;시험은 100% 온라인으로 치뤄지며 카메라가 달려있는 노트북 또는 PC가 준비되어야 합니다. 아무래도 카메라로 공간전체를 돌려가며 보여줘야 하기 때문에 PC 보다는 노트북으로 시험을 치루는게 좋습니다. 그리도 되도록 15인치 이상의 노트북으로 준비하는 것을 권장합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;PSI 시스템
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;시험전용 시스템으로서 이 프로그램을 실행하여 시험을 보게 되는데 다른 프로그램이 실행중일 경우 전부 강제로 종료해야만 시험을 치룰 수 있습니다 내부 브라우저는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;파이퍼폭스&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;이며 번역기도 사용할 수 없다는 점을 알아두면 좋을 것 입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;준비물
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;나의 신분을 증명하기 위한 신분증이 필요합니다. 아무래도 국제 시험이다보니&lt;span&gt;&amp;nbsp;&lt;/span&gt;여권&lt;span&gt;&amp;nbsp;&lt;/span&gt;을 준비하는 것이 가장 좋은 방법입니다. 한가지 주의할 점은&lt;span&gt;&amp;nbsp;&lt;/span&gt;만료되지 않은 여권이어야 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;참고 할 만한 강의&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. kubernetes을 처음 접하며 이론을 배울 때 많은 도움이 되었던 강의&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;회사 동료분에게 이성미 강사님의 따배쿠를 추천받아서, 전강의를 수강했었다. 클라우드 인프라에대해 잘몰랐었을 때 들었는데, 해당 강의 덕분에 클라우드랑 쿠버네티스에 대해 Deep dive를 할 수 있게 된 계기가 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쿠버네티스를 처음 접하는 초심자에게 완전 강추하는 강의  &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/@ttabae-learn&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.youtube.com/@ttabae-learn&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1745132051232&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;TTABAE-LEARN&quot; data-og-description=&quot;리눅스 도커 쿠버네티스 클라우드 빅데이터 ICT 스터디를 통해 IT를 배우고 4차산업을 이끌어가는 그릇을 준비합시다. 강사 이성미가 전하는 ICT 이야기&quot; data-og-host=&quot;www.youtube.com&quot; data-og-source-url=&quot;https://www.youtube.com/@ttabae-learn&quot; data-og-url=&quot;https://www.youtube.com/channel/UC_VOQjI7mtQTEaTXXQIzLtQ&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/EvLtk/hyYFC0a2jC/H7jQx6yKWjVkJkBFtI8Uf1/img.jpg?width=900&amp;amp;height=900&amp;amp;face=0_0_900_900,https://scrap.kakaocdn.net/dn/bJNDF3/hyYFEXXYHw/YTMBAkM1iBmBtDRuxrfG60/img.jpg?width=900&amp;amp;height=900&amp;amp;face=0_0_900_900&quot;&gt;&lt;a href=&quot;https://www.youtube.com/@ttabae-learn&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.youtube.com/@ttabae-learn&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/EvLtk/hyYFC0a2jC/H7jQx6yKWjVkJkBFtI8Uf1/img.jpg?width=900&amp;amp;height=900&amp;amp;face=0_0_900_900,https://scrap.kakaocdn.net/dn/bJNDF3/hyYFEXXYHw/YTMBAkM1iBmBtDRuxrfG60/img.jpg?width=900&amp;amp;height=900&amp;amp;face=0_0_900_900');&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;TTABAE-LEARN&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;리눅스 도커 쿠버네티스 클라우드 빅데이터 ICT 스터디를 통해 IT를 배우고 4차산업을 이끌어가는 그릇을 준비합시다. 강사 이성미가 전하는 ICT 이야기&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.youtube.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;&lt;b&gt;2. CKA 딸 때 많은 도움이 됐던 강의&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Kubernetes의 이론이나 사용법은 이미 알고 있어서 따로 강의 내용을 수강하지는 않았고, 시험 직전에 강의에 포함되어 있는 &quot;Practice Test&quot;를 쉽게 풀수 있을 때 까지 3번정도 계속해서 풀었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.udemy.com/course/certified-kubernetes-administrator-with-practice-tests/?srsltid=AfmBOoqdol_-BeGmOiCBk-rKafNoA3jN8HPXdDoj31wClfarsuspxeAW&amp;amp;couponCode=KRLETSLEARNNOW&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.udemy.com/course/certified-kubernetes-administrator-with-practice-tests/?srsltid=AfmBOoqdol_-BeGmOiCBk-rKafNoA3jN8HPXdDoj31wClfarsuspxeAW&amp;amp;couponCode=KRLETSLEARNNOW&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; 2. CKS 강의&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전에 CKA를 준비할때만 해도 CKS 관련 강의가 거의 없었던거 같은데 일년새에 참고할만한 강의들이 생기고 있는것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CKS를 준비하며 참고하고자 하는 강의들&lt;/p&gt;
&lt;figure id=&quot;og_1745133521660&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;쿠버네티스 자격증 마스터 클래스 : CKA/CKAD/CKS | 패스트캠퍼스&quot; data-og-description=&quot;Kubernetes 관련 자격증을 한 번에! 이 강의 하나로 CKA/CKAD/CKS 3종을 모두 마스터할 수 있어요. 강사력이 입증된 8천 구독자 유투버 강사님과 함께 합격 맞춤형 커리큘럼으로 꼼꼼히 공부해요.&quot; data-og-host=&quot;fastcampus.co.kr&quot; data-og-source-url=&quot;https://fastcampus.co.kr/dev_online_kubemaster&quot; data-og-url=&quot;https://fastcampus.co.kr/dev_online_kubemaster&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/VZqnq/hyYJyCEr4i/yMBZfJuUsczEEuhuWqitOK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/dkct2e/hyYIfQLDEr/8K3FVhBqKG8d4HFXCehYx0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://fastcampus.co.kr/dev_online_kubemaster&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://fastcampus.co.kr/dev_online_kubemaster&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/VZqnq/hyYJyCEr4i/yMBZfJuUsczEEuhuWqitOK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/dkct2e/hyYIfQLDEr/8K3FVhBqKG8d4HFXCehYx0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&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;쿠버네티스 자격증 마스터 클래스 : CKA/CKAD/CKS | 패스트캠퍼스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Kubernetes 관련 자격증을 한 번에! 이 강의 하나로 CKA/CKAD/CKS 3종을 모두 마스터할 수 있어요. 강사력이 입증된 8천 구독자 유투버 강사님과 함께 합격 맞춤형 커리큘럼으로 꼼꼼히 공부해요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;fastcampus.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;figure id=&quot;og_1745132291961&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;Killer Shell (CKS) - 100% Practice tests with explanation&quot; data-og-description=&quot;Certified Kubernetes Security Specialist (CKS) - Killer Shell exam simulation - Solution walk-through. ----------------------- Playlist links: --------------...&quot; data-og-host=&quot;www.youtube.com&quot; data-og-source-url=&quot;https://www.youtube.com/playlist?list=PLpbwBK0ptssx38770vYNwZEuCeGNw54CH&quot; data-og-url=&quot;http://www.youtube.com/playlist?list=PLpbwBK0ptssx38770vYNwZEuCeGNw54CH&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/y16Im/hyYHboNkZr/7YKCqTVrOFgIeniIeyoELK/img.jpg?width=480&amp;amp;height=270&amp;amp;face=0_0_480_270,https://scrap.kakaocdn.net/dn/qhkV1/hyYJBlQdGX/9CeD6Z9G4xe56CV5dfG62k/img.jpg?width=480&amp;amp;height=270&amp;amp;face=0_0_480_270&quot;&gt;&lt;a href=&quot;https://www.youtube.com/playlist?list=PLpbwBK0ptssx38770vYNwZEuCeGNw54CH&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.youtube.com/playlist?list=PLpbwBK0ptssx38770vYNwZEuCeGNw54CH&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/y16Im/hyYHboNkZr/7YKCqTVrOFgIeniIeyoELK/img.jpg?width=480&amp;amp;height=270&amp;amp;face=0_0_480_270,https://scrap.kakaocdn.net/dn/qhkV1/hyYJBlQdGX/9CeD6Z9G4xe56CV5dfG62k/img.jpg?width=480&amp;amp;height=270&amp;amp;face=0_0_480_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;Killer Shell (CKS) - 100% Practice tests with explanation&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Certified Kubernetes Security Specialist (CKS) - Killer Shell exam simulation - Solution walk-through. ----------------------- Playlist links: --------------...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.youtube.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;figure id=&quot;og_1745133458760&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;Kubestronaut Learning Path | Kodekloud&quot; data-og-description=&quot;Embark on the Kubestronaut learning path. Hone your Kubestronaut skills with our study roadmap. Start your Kubestronaut journey today.&quot; data-og-host=&quot;kodekloud.com&quot; data-og-source-url=&quot;https://kodekloud.com/learning-path/kubestronaut/&quot; data-og-url=&quot;https://kodekloud.com/learning-path/kubestronaut/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/vHHi9/hyYIdrTKWc/92uUXBNjDU0UfHkKcLVp70/img.jpg?width=1800&amp;amp;height=1167&amp;amp;face=0_0_1800_1167,https://scrap.kakaocdn.net/dn/0wOEj/hyYIfiWWDt/efHH8VwskUQQ85JPzR5rK0/img.jpg?width=1800&amp;amp;height=1167&amp;amp;face=0_0_1800_1167&quot;&gt;&lt;a href=&quot;https://kodekloud.com/learning-path/kubestronaut/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kodekloud.com/learning-path/kubestronaut/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/vHHi9/hyYIdrTKWc/92uUXBNjDU0UfHkKcLVp70/img.jpg?width=1800&amp;amp;height=1167&amp;amp;face=0_0_1800_1167,https://scrap.kakaocdn.net/dn/0wOEj/hyYIfiWWDt/efHH8VwskUQQ85JPzR5rK0/img.jpg?width=1800&amp;amp;height=1167&amp;amp;face=0_0_1800_1167');&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;Kubestronaut Learning Path | Kodekloud&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Embark on the Kubestronaut learning path. Hone your Kubestronaut skills with our study roadmap. Start your Kubestronaut journey today.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;kodekloud.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=d9xfB5qaOfg&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bcfI3s/hyYG7GIrHS/Fkb89gzg7nUl7W9mETUwz1/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/1Fo1K/hyYIg9ZUCu/ntSz5js67RkArIGAjxECy1/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;Kubernetes CKS Full Course Theory + Practice + Browser Scenarios&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/d9xfB5qaOfg&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;CKS 커리큘럼&lt;/h3&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;CKA + CKAD 에 있는 내용을 기본으로 하며 + 보안을 추가로 설정해야 함&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Cluster Setup = Cluster 환경의 보안 설정, Network policy(ingress, egress), 인증 account service, role, roleBinding&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Cluster Hardening = api 인증, 유저 그룹 어카운트 서비스 어카운트, role rolebiding, clusterrole, clusterrolebiding&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;System Hardening = 리눅스 시스템의 어플리케이션 방화벽, setconf / application armor 를 적용해서 커널 기반의 workder node의 보안 강화&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Minimize Microservice Vulnerabilities = secret 데이터 암호화, pod의 api admission control(pod의 보안 설정)&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Supply Chain Security = kubernetes manifest에서 지원하는 여러가지 policy 위반을 점검하는 static analyse를 수행하는 툴을 적용해서 활용&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Monitoring, Logging, and Runtime Security =&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;642&quot; data-origin-height=&quot;773&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cOt6Us/btsNsiMIbL6/yKkYSJQykvZl6aEZRkw3xk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cOt6Us/btsNsiMIbL6/yKkYSJQykvZl6aEZRkw3xk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cOt6Us/btsNsiMIbL6/yKkYSJQykvZl6aEZRkw3xk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcOt6Us%2FbtsNsiMIbL6%2FyKkYSJQykvZl6aEZRkw3xk%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;642&quot; height=&quot;773&quot; data-origin-width=&quot;642&quot; data-origin-height=&quot;773&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;figure id=&quot;og_1745132670601&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;curriculum/CKS_Curriculum v1.32.pdf at master &amp;middot; cncf/curriculum&quot; data-og-description=&quot; Open Source Curriculum for CNCF Certification Courses - cncf/curriculum&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/cncf/curriculum/blob/master/CKS_Curriculum%20v1.32.pdf&quot; data-og-url=&quot;https://github.com/cncf/curriculum/blob/master/CKS_Curriculum%20v1.32.pdf&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/jxLPb/hyYFypWVAp/YDnyeTVnurFyruDSnL6cn0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/crkz61/hyYFEKr0gN/8ODkBGgmdloY9peCVyOAj1/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/cncf/curriculum/blob/master/CKS_Curriculum%20v1.32.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/cncf/curriculum/blob/master/CKS_Curriculum%20v1.32.pdf&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/jxLPb/hyYFypWVAp/YDnyeTVnurFyruDSnL6cn0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/crkz61/hyYFEKr0gN/8ODkBGgmdloY9peCVyOAj1/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&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;curriculum/CKS_Curriculum v1.32.pdf at master &amp;middot; cncf/curriculum&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt; Open Source Curriculum for CNCF Certification Courses - cncf/curriculum&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;kubectl Cheat Sheet&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CKA / CKS 시험에 쓰기 편리한 quick kubectl 명령어들&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1169&quot; data-origin-height=&quot;826&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bllhkQ/btsNrxjw78a/uXv1CsaO5B9Fk51pB4LTT1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bllhkQ/btsNrxjw78a/uXv1CsaO5B9Fk51pB4LTT1/img.png&quot; data-alt=&quot;참고 : https://www.reddit.com/r/kubernetes/comments/15gaows/i_created_this_printable_pdf_cheat_sheet_with/?rdt=42410&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bllhkQ/btsNrxjw78a/uXv1CsaO5B9Fk51pB4LTT1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbllhkQ%2FbtsNrxjw78a%2FuXv1CsaO5B9Fk51pB4LTT1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;1169&quot; height=&quot;826&quot; data-origin-width=&quot;1169&quot; data-origin-height=&quot;826&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;참고 : https://www.reddit.com/r/kubernetes/comments/15gaows/i_created_this_printable_pdf_cheat_sheet_with/?rdt=42410&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 data-ke-size=&quot;size14&quot;&gt;얼른 CKS 부터 따고 kubestronaut 도 취득해야지 에효...&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;gt; 참고 자료:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://velog.io/@moonblue/%EC%84%B8%EB%B2%88%EC%A7%B8-%EC%9E%90%EA%B2%A9%EC%A6%9D-CKS-%EC%A4%80%EB%B9%84-%EB%B0%8F-%ED%95%A9%EA%B2%A9-%ED%9B%84%EA%B8%B0&quot;&gt;https://velog.io/@moonblue/%EC%84%B8%EB%B2%88%EC%A7%B8-%EC%9E%90%EA%B2%A9%EC%A6%9D-CKS-%EC%A4%80%EB%B9%84-%EB%B0%8F-%ED%95%A9%EA%B2%A9-%ED%9B%84%EA%B8%B0&lt;/a&gt;&lt;/p&gt;</description>
      <category>Infra/Kubernetes</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/336</guid>
      <comments>https://miinsun.tistory.com/336#entry336comment</comments>
      <pubDate>Sun, 20 Apr 2025 16:54:36 +0900</pubDate>
    </item>
    <item>
      <title>[CKA] CKA 후기</title>
      <link>https://miinsun.tistory.com/333</link>
      <description>&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;PV HostPath 타입으로 생성&lt;/li&gt;
&lt;li&gt;Multi Container Pod 생성&lt;/li&gt;
&lt;li&gt;Pod 생성&lt;/li&gt;
&lt;li&gt;Controlplane Upgrade&lt;/li&gt;
&lt;li&gt;Trouble Shooting node01 broken. Restart kubelet&lt;/li&gt;
&lt;li&gt;Network Policy namespace로 Select하기&lt;/li&gt;
&lt;li&gt;Ingress, Service 80포트로 통신하기&lt;/li&gt;
&lt;li&gt;ClusterRole, ServiceAccount, ClusterRoleBinding 생성&lt;/li&gt;
&lt;li&gt;Deployment Replica Scale 증가&lt;/li&gt;
&lt;li&gt;가장 cpu를 많이 소비하는 pod 이름 저장, 라벨로 분류하기&lt;/li&gt;
&lt;li&gt;사용 가능한 노드의 수 (Taint X, Not Ready X)&lt;/li&gt;
&lt;li&gt;PVC 생성&lt;/li&gt;
&lt;li&gt;Taint Node&lt;/li&gt;
&lt;li&gt;Logging Sidecar 생성&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>Infra/Kubernetes</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/333</guid>
      <comments>https://miinsun.tistory.com/333#entry333comment</comments>
      <pubDate>Mon, 4 Dec 2023 23:58:47 +0900</pubDate>
    </item>
    <item>
      <title>[CKA] CKA 알아둬야 하는 시스템 구조</title>
      <link>https://miinsun.tistory.com/332</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;API 서버 (kube-apiserver):&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Kubernetes 클러스터의 중심이 되는 구성 요소로서 API 서버는 클러스터 상태 및 구성을 노출하고 다른 컴포넌트와의 상호 작용을 지원합니다.&lt;/li&gt;
&lt;li&gt;기본 포트는 &lt;b&gt;6443&lt;/b&gt;이며, 안전한 통신을 위해 TLS(Transport Layer Security)을 사용합니다.&lt;/li&gt;
&lt;/ul&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;b&gt;쿠브렛 (kubelet):&lt;/b&gt;&lt;span&gt;&amp;nbsp;&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;/li&gt;
&lt;li&gt;파드의 라이프사이클을 관리하고 컨테이너 런타임과 상호 작용하여 파드를 실행합니다.&lt;/li&gt;
&lt;li&gt;기본 포트는 &lt;b&gt;10250&lt;/b&gt;입니다.&lt;/li&gt;
&lt;/ul&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;b&gt;컨테이너 런타임 (CRI, Container Runtime Interface):&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Kubernetes는 여러 컨테이너 런타임을 지원합니다. 런타임은 컨테이너를 실행하고 관리하는 역할을 합니다.&lt;/li&gt;
&lt;li&gt;예를 들어, Docker가 널리 사용되는 컨테이너 런타임 중 하나입니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&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;b&gt;DNS 서비스 (kube-dns/coredns):&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Kubernetes 클러스터 내에서 서비스 검색 및 DNS 이름 해결을 제공합니다.&lt;/li&gt;
&lt;li&gt;DNS 서버는 파드 및 서비스 간의 동적인 IP 할당을&lt;span&gt;&amp;nbsp;합니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&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;b&gt;Dashboard:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Kubernetes 클러스터를 시각화하고 관리하기 위한 웹 대시보드입니다.&lt;/li&gt;
&lt;li&gt;기본 포트는 &lt;b&gt;8443&lt;/b&gt;이며, HTTPS 통신을 사용합니다.&lt;/li&gt;
&lt;/ul&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;b&gt;Kube Proxy:&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;파드 간 통신을 관리하고 로드 밸런싱을 제공하는 네트워크 프록시입니다.&lt;/li&gt;
&lt;li&gt;기본 포트는 &lt;b&gt;10256&lt;/b&gt;&lt;/li&gt;
&lt;/ol&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;b&gt;etcd:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Kubernetes 클러스터 구성 정보를 저장하는 분산 데이터 저장소입니다.&lt;/li&gt;
&lt;li&gt;기본 포트는 &lt;b&gt;2379&lt;/b&gt;(클라이언트), &lt;b&gt;2380&lt;/b&gt;(피어)입니다.&lt;/li&gt;
&lt;/ul&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;b&gt;컨테이너 네트워크 인터페이스 (CNI, Container Network Interface):&lt;/b&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;/li&gt;
&lt;li&gt;&lt;span&gt;CNI &lt;/span&gt;플러그인은&lt;span&gt; &lt;/span&gt;파드에&lt;span&gt; IP &lt;/span&gt;주소를&lt;span&gt; &lt;/span&gt;할당하고&lt;span&gt; &lt;/span&gt;네트워크를&lt;span&gt; &lt;/span&gt;구성하는&lt;span&gt; &lt;/span&gt;역할을&lt;span&gt; &lt;/span&gt;합니다&lt;span&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Infra/Kubernetes</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/332</guid>
      <comments>https://miinsun.tistory.com/332#entry332comment</comments>
      <pubDate>Mon, 4 Dec 2023 23:54:07 +0900</pubDate>
    </item>
    <item>
      <title>[CKA] CKA 알아둬야 하는 명령어</title>
      <link>https://miinsun.tistory.com/331</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;알아둬야 하는 명령어&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1701700830414&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl explain replicaset&lt;/code&gt;&lt;/pre&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;gt; 리소스에대한 설명과 어떤 필드를 써야하는지 디테일을 알려줌&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1701700840287&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl get pods --selector env=dev&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt; 라벨로 궁금한 pods 만 검색&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1701700852862&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl taint nodes controlplane node-role.kubernetes.io/control-plane:NoSchedule&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt; taint 주기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1701700950564&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl taint nodes controlplane node-role.kubernetes.io/control-plane:NoSchedule-&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt; taint 없애기&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;여기서 taint는 노드에 관해, NoSchedule 제한을 주겠다는 것&lt;/li&gt;
&lt;li&gt;taint를 무시하기 위해서는, pod에 tolerations 옵션을 줘야함&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Drain&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특정 노드에서 실행 중인 파드를 다른 노드로 이동시키고, 그 노드를 비활성화하여 새로운 파드가 스케줄링되지 않도록 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;노드를 비활성화 함&lt;/p&gt;
&lt;pre id=&quot;code_1701700971910&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl drain &amp;lt;node-name&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;UnCordon&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비활성화한 노드를 다시 활성화하려면 kubectl uncordon 명령어를 사용할 수 있습니다&lt;/p&gt;
&lt;pre id=&quot;code_1701701375638&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl uncordon node-1&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 하면 노드가 다시 스케줄링될 수 있게 되어 새로운 파드가 해당 노드에 스케줄링될 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Label 붙이기&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1701701391090&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# Update pod 'foo' with the label 'unhealthy' and the value 'true'
$ kubectl label pods foo unhealthy=true&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Static Pods 의 유무 확인하는 방법&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1701701404387&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl get pods --all-namespaces&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 명령어를 치고, 파드 이름 뒤에 &amp;lsquo;-controlplane&amp;rsquo; 가 붙여있으면 static pods&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;명령어가 있는 Static Pods 한번에 생성하는 명령어&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1701701425369&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl run --restart=Never --image=busybox static-busybox --dry-run=client -o yaml --command -- sleep 1000 &amp;gt; /etc/kubernetes/manifests/static-busybox.yaml&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;node01의 kubelet 설정파일 확인하는 방법&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대체로 설정파일 위치는 --kubeconfig=/etc/kubernetes/kubelet.conf 에 있음&lt;/p&gt;
&lt;pre id=&quot;code_1701701438794&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;root@node01:~# ps -ef |  grep /usr/bin/kubelet 
root        4147       1  0 14:05 ?        00:00:00 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --config=/var/lib/kubelet/config.yaml --container-runtime-endpoint=unix:///var/run/containerd/containerd.sock --pod-infra-container-image=registry.k8s.io/pause:3.9
root        4773    4733  0 14:05 pts/0    00:00:00 grep /usr/bin/kubelet&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;node01의 static pod 설정 위치 확인 하는 방법&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;kubelet의 설정파일에서 staticPodPath을 확인 가능하다.&lt;/p&gt;
&lt;pre id=&quot;code_1701701463944&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;root@node01:~# grep -i staticpod /var/lib/kubelet/config.yaml
staticPodPath: /etc/just-to-mess-with-you&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Cluster 버전 확인하는 방법&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1701701475092&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl get nodes
NAME           STATUS   ROLES           AGE   VERSION
controlplane   Ready    control-plane   96m   v1.26.0
node01         Ready    &amp;lt;none&amp;gt;          95m   v1.26.0&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Infra/Kubernetes</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/331</guid>
      <comments>https://miinsun.tistory.com/331#entry331comment</comments>
      <pubDate>Mon, 4 Dec 2023 23:51:32 +0900</pubDate>
    </item>
    <item>
      <title>[이론] 쿠버네티스 컨피그맵(ConfigMap)과 시크릿(Secret)</title>
      <link>https://miinsun.tistory.com/330</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;유튜브 강의 '따배쿠'와 책 '쿠버네티스 입문'을 정리한 자료입니다.&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;b&gt;&amp;nbsp;&lt;/b&gt;Kubernetes ConfigMap&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;848&quot; data-origin-height=&quot;572&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AvQTO/btsjXUy1DgM/gAGLKE7cYoC3MPWfObEbrK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AvQTO/btsjXUy1DgM/gAGLKE7cYoC3MPWfObEbrK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AvQTO/btsjXUy1DgM/gAGLKE7cYoC3MPWfObEbrK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAvQTO%2FbtsjXUy1DgM%2FgAGLKE7cYoC3MPWfObEbrK%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;415&quot; height=&quot;280&quot; data-origin-width=&quot;848&quot; data-origin-height=&quot;572&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;쿠버네티스의 컨피그맵은 컨테이너에 필요한 환경 설정을 컨테이너와 분리해서 제공하는 기능이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 컨피그맵을 이용하면 컨테이너를 분리해 하나는 개발용, 하나는 스테이지용, 하나는 서비스용으로 활용할 수 있게 된다.&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;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;- configMap yaml template&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1686715533758&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: v1
kind: ConfigMap
metadata:
  name: config-dev
  namespace: default
data:
  DB_URL: localhost
  DB_USER: myuser
  DB_PASS: mypass
  DEBUG_INFO: debug&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot; 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: #000000;&quot;&gt;.data 하위 필드로 실제 사용하려는 환경 설정 값을 넣는다. kubectl apply -f config.yaml으로 쿠버네티스 클러스터에 적용하고 kubectl describe configmap으로 설정 내용을 확인할 수 있다.&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;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;- configmap 정보 불러와서 사용하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1686715802743&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: apps/v1
kind: Deployment
metadata:
  ...
spec:
  ...
  template:
    spec:
      containers:
      - name: test
        env:
        - name: DEBUG_LEVEL
          valueFrom:
            configMapKeyRef:
              name: config-dev
              key: DEBUG_INFO&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;deployment의 환경변수를 위에 지정한 configmap으로 설정해주었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.configMapKeyRef 필드로 어떤 ConfigMap의 어떤 키를 가져올 지를 지정할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.name 필드의 값을 config-dev를 설정해 앞서 만들어 두었던 config-dev 컨피그맵을 지정하고 필요한 key값 또한 지정해주었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&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;h3 style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;b&gt;&amp;nbsp;&lt;/b&gt;Kubernetes Secret&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;시크릿은 비밀번호, OAuth 토큰, SSH 키 값은 민감한 정보들을 저장하는 용도로 사용된다. 이런 정보들은 컨테이너 안에 저장하지 않고 별도로 보관했다가 실제 파드를 실행할 때의 템플릿으로 컨테이너에 제공한다.&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;span style=&quot;color: #000000;&quot;&gt;ConfigMap: 컨테이너 구성 정보를 한 곳에 모아서 관리&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Secret: 컨테이너가 사용하는 password, auth token, ssh key와 같은 민감 정보를 저장하고 구성 정보를 base64로 인코딩해서 한 곳에 모아서 관리&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;- Secret 만들기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1686716854782&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 명령으로 시크릿 만들기
$ echo -n 'username' &amp;gt; ./username.txt
$ echo -n 'password' &amp;gt; ./password.txt
$ kubectl create secret generic user-pass-secret --from-file=./username.txt --from-file=./password.txt

# 시크릿 확인
$ kubectl get secret user-pass-secret -o yaml

# 인코딩 된 값 디코딩하기
$ echo '인코딩 값' | base64 --decode
password

# 템플릿으로 시크릿 만들기
$ vim user-pass-yaml.yaml
apiVersion: v1
kind: Secret
metadata:
  name: user-pass-yaml
type: Opaque
data:
  username: dXNlcm5hbWU=
  password: cGFzc3dvcmQ=
  
$ kubectl apply -f user-pass-yaml.yaml&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.type 필드 값의 default 값은 Opaque이다.&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;span style=&quot;color: #000000;&quot;&gt;Opaque: 키-값 형식으로 임의의 데이터를 설정&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;kubernetes.io/service-account-token: 쿠버네티스 인증 토큰 저장&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;kubernetes.io/dockerconfigjson: 도커 저장소 인증 정보를 저장&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;kubernetes.io/tls: tls 인증서 저장&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&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;color: #000000;&quot;&gt;필드에 들어가는 값, 파일 명등은 base64 문자 인코딩 값을 설정해야한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1686717134027&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ echo -n &quot;username&quot; | base64
dXNlcm5hbWUK&lt;/code&gt;&lt;/pre&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: #000000;&quot;&gt;&lt;b&gt;- Secret 사용하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;시크릿을 파드의 환경 변수로 설정해 사용하는 예&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1686717425446&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: apps/v1
kind: Deployment
metadata:
  ...
spec:
  ...
  template:
    spec:
      containers:
      - name: test
        env:
        - name: SECRET_USERNAME
          valueFrom:
            secretKeyRef:
              name: user-pass-yaml
              key: username
        - name: SECRET_PASSWORD
          valueFrom:
            secretKeyRef:
              name: user-pass-yaml
              key: password&lt;/code&gt;&lt;/pre&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;b&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;- Secret으로 TLS 인증서를 저장해 사용하기&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1686717746854&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 프라이빗 인증서 발급
$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj &quot;/CN=example.com&quot;

# tls 시크릿 생성
$ kubectl create secret tls tlssecret --key tls.key --cert tls.crt

# tls 시크릿 내용 확인
$ kubectl get secret tlssecret -o yaml&lt;/code&gt;&lt;/pre&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;b&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;- Docker registry 시크릿 만들기&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1686717970228&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl create secret docker-registry reg-secret --docker-username= minsun \
--docker-password=pass --docker-email=minsun@abc.com&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;- Secret 데이터 용량 제한&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;시크릿 데이터는 etcd에 암호화되지 않은 텍스트로 저장된다. 이때 시크릿 데이터의 용량이 너무 크면 쿠버네티스 시스템의 메모리 용량을 너무 많이 차지하게 된다. 따라서 개별 시크릿 데이터의 최대 용량은 1MB이다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>Infra/Kubernetes</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/330</guid>
      <comments>https://miinsun.tistory.com/330#entry330comment</comments>
      <pubDate>Wed, 14 Jun 2023 13:46:30 +0900</pubDate>
    </item>
    <item>
      <title>[이론] 쿠버네티스 레이블과 애너테이션</title>
      <link>https://miinsun.tistory.com/329</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;유튜브 강의 '따배쿠'와 책 '쿠버네티스 입문'을 정리한 자료입니다.&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;레이블과 애너테이션은 그 자체의 의미는 유사한 것 같지만, 이둘이 작용하는 역할이 다르기 때문에 상황에 맞게 적절히 구분하여 사용해야한다.&lt;/span&gt;&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;Kubernetes Label&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;쿠버네티스의 레이블은 selector와 함께 특정 레이블이 있는 자원들을 선택할 때 주로 사용된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;레이블은 쿠버네티스 안에서 사용자가 오브젝트를 생성할 때 해당 오브젝트를 구분하는 용도이다. 사용자가 임의로 원하는 값을 지정해서 사용이 가능하다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;레이블은 키-값 쌍으로 구성된다.&lt;br /&gt;레이블의 키는 쿠버네팉스 안에서 컨트롤러들이 파드를 관리 할 때 관리해야 할 파드를 구분해주는 역할을 한다.&lt;br /&gt;&lt;br /&gt;- 유의 사항&lt;br /&gt;1. 63 글자를 넘지 않아야 함&lt;br /&gt;2. 시작과 끝 문자는 알파벳 대소문자 및 숫자여야 함&lt;br /&gt;3. 중간에는 대시(-), 밑줄(_), 점(.), 숫자 등이 올 수 있음&lt;br /&gt;4. 레이블 키 이름 앞에는 / 로 구분해서 접두어를 사용할 수 있다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&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;h3 style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;Kubernetes Annotation&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;쿠버네티스의 애너테이션은 주석 성격의 메타데이터를 기록하는데 사용된다. 애너테이션은 레이블처럼 사용자가 원하는 값을 설정하다기보다는 쿠버네티스 시스템에서 필요한 정보들을 표시하는데 사용된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;애너테이션의 키는 쿠버네티스 시스템이 인식할 수 있는값을 사용한다. 또한 인그레스에서 필요한 설정을 애너테이션으로 정의할 수 있다. ingress-nginx 같은 인그레스 컨트롤러는 애너테이션으로 사용자가 직접 nginx에 필요한 설정들을 정의할 수 있다.&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;b&gt;&lt;span&gt;&amp;nbsp;레이블을 이용한 카나리 배포&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;포드를 업데이트하는 방법&lt;/span&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;블루 그린 업데이트
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기존에 실행된 파드 개수와 같은 개수의 신규 파드를 모두 실행한 뒤, 신규 파드가 정상적으로 실행되는 것이 확인되면 그 후 트래픽을 한꺼번에&amp;nbsp; 신규 파드 쪽으로 옮기는 방식&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;카나리 업데이트
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;신규 파드를 배포할 때 한꺼번에 앱 컨테이너 전체를 교체하지 않고, 기존 버전을 유지한 채로 일부 버전만 신규 파드로 교체하며 버그나 이상이 있는지, 사용자의 반응은 어떤지 확인하는 방식&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;롤링 업데이트
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;배포된 전체 파드를 한꺼번에 교체하는 것이 아니라 일정 개수씩 교체하면서 배포하는 방식&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안정 버전 디플로이먼트 설정 (stable.yaml)&lt;/p&gt;
&lt;pre id=&quot;code_1686714865151&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: apps/v1
kind: Deployment
metadata:
  name: k8s-testapp
  labels: 
    app: myapp
    version: stable
  spec:
    replicas: 2
    selector:
      matchLabels:
        app: myapp
        version: stable
    template:
      metadata:
        labels:
          app: myapp
          version: stable
      spec:
        containers:
        - name: testapp
          image: arisu1000/simple-container-app::v0.1
          ports:
          - containerPort: 8000&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;카나리 배포 버전 디플로이먼트 설정 (canart.yaml)&lt;/p&gt;
&lt;pre id=&quot;code_1686714924394&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: apps/v1
kind: Deployment
metadata:
  name: k8s-testapp-canary
  labels: 
    app: myapp
    version: canary
  spec:
    replicas: 1
    selector:
      matchLabels:
        app: myapp
        version: stable
    template:
      metadata:
        labels:
          app: myapp
          version: stable
      spec:
        containers:
        - name: testapp
          image: arisu1000/simple-container-app::v0.2
          ports:
          - containerPort: 8000&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;레이블을 이용해서 안정성있는 stable 버전과 카나리 배포에 필요한 canary 버전을 구분해 주었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음으로 2개의 deploymet에 접근하는 서비스를 만들어주자.&lt;/p&gt;
&lt;pre id=&quot;code_1686715103303&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: v1
kind: Service
metadata:
  labels: 
    app: myapp
  name: myapp-svc
  namespace: default
spec:
  ports:
  - nodePort: 30880
    port: 8080
    protocol: TCP
    targetPort: 8080
  selector:
    app: myapp
  type: NodePort&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;curl localhost:30880 명령을 계속해서 입력하면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;v0.1과 v0.2 앱 컨테이너를 번걸아 가면서 접속함을 확인 할 수 있다. 즉 여러 개 디플로이먼트를 하나의 접속 주소로 묶어 여러 버전을 동시에 서비스한다는 것이다. 이렇게 기존 버전과 신규 버전이 함께 존재하므로 카나리 형태의 배포를 만들 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;카나리 버전이 정상적으로 동작하지 않는다면 canary deploymet를 삭제해 서비스에서 제외하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Infra/Kubernetes</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/329</guid>
      <comments>https://miinsun.tistory.com/329#entry329comment</comments>
      <pubDate>Wed, 14 Jun 2023 13:00:59 +0900</pubDate>
    </item>
    <item>
      <title>[실습] 쿠버네티스 Ingress</title>
      <link>https://miinsun.tistory.com/328</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;  ingress-nginx 설치&lt;/h4&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;
&lt;pre id=&quot;__code_27&quot; class=&quot;awk&quot; style=&quot;color: #000000;&quot;&gt;&lt;code&gt;kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.0/deploy/static/provider/baremetal/deploy.yaml
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://kubernetes.github.io/ingress-nginx/deploy/#bare-metal-clusters&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://kubernetes.github.io/ingress-nginx/deploy/#bare-metal-clusters&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- ingress controlelr 동작 확인&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;649&quot; data-origin-height=&quot;82&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cL49GB/btsjO7y7x2l/NUqLkF7RnaSuy6mFkFsZO0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cL49GB/btsjO7y7x2l/NUqLkF7RnaSuy6mFkFsZO0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cL49GB/btsjO7y7x2l/NUqLkF7RnaSuy6mFkFsZO0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcL49GB%2FbtsjO7y7x2l%2FNUqLkF7RnaSuy6mFkFsZO0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;649&quot; height=&quot;82&quot; data-origin-width=&quot;649&quot; data-origin-height=&quot;82&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;405&quot; data-origin-height=&quot;101&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dvbJ0X/btsjGIgIcMb/JXJm2hCcVBtOc81GS3Rs0K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dvbJ0X/btsjGIgIcMb/JXJm2hCcVBtOc81GS3Rs0K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dvbJ0X/btsjGIgIcMb/JXJm2hCcVBtOc81GS3Rs0K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdvbJ0X%2FbtsjGIgIcMb%2FJXJm2hCcVBtOc81GS3Rs0K%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;405&quot; height=&quot;101&quot; data-origin-width=&quot;405&quot; data-origin-height=&quot;101&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;  &lt;span style=&quot;color: #000000;&quot;&gt;무중단 배포 실습&lt;/span&gt;&lt;/h4&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&lt;b&gt;- 무중단 배포에 사용할 deployment 설정&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;ing-test-deployment.yaml&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;
&lt;pre id=&quot;code_1686636758255&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: apps/v1
kind: Deployment
metadata:
  name: websample
spec:
  selector:
    matchLabels:
      run: websample
  strategy:
    # 디폴로이먼트를 업데이트하는 동안 기본 파드 개수의 25% 파드를 추가하고#
    # 업데이트 중에도 최소 25% 파드는 보장한다.
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      labels:
        run: websample
    spec:
      containers:
      - image: acadx0/190713:v1
        imagePullPolicy: Always
        name: websample
        ports:
        - containerPort: 5000
          protocol: TCP
        # HTTP GET요청을 보내 컨테이너 상태를 진단
        livenessProbe:
          httpGet:
            path: /liveness
            port: 5000
        readinessProbe:
          httpGet:
            path: /readiness
            port: 5000
        lifecycle:
          preStop:
            httpGet:
              path: /prestop
              port: 5000
      terminationGracePeriodSeconds: 30&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&lt;b&gt;- 무중단 배포에 사용할 ingress 설정&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;ing-test-ingress.yaml&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;
&lt;pre id=&quot;code_1686636890910&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: websample-ing
spec:
  rules:
  # xip.io는 모든 ip 주소에 와일드카드 DNS를 제공
  - host: 127.0.0.1.xip.io
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: websample
            port:
              number: 5000&lt;/code&gt;&lt;/pre&gt;
&lt;/div&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;b&gt;- 디플로이먼트, 서비스, 인그레스를 생성&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1686636994249&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl apply -f ing-test-deployment.yaml
$ kubectl expose deployment websample
$ kubectl apply -f ing-test-ingress.yaml&lt;/code&gt;&lt;/pre&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;b&gt;- 베게타(부하테스트 도구 설치)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://github.com/tsenart/vegeta&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/tsenart/vegeta&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1686637130656&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - tsenart/vegeta: HTTP load testing tool and library. It's over 9000!&quot; data-og-description=&quot;HTTP load testing tool and library. It's over 9000! - GitHub - tsenart/vegeta: HTTP load testing tool and library. It's over 9000!&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/tsenart/vegeta&quot; data-og-url=&quot;https://github.com/tsenart/vegeta&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/d92ssc/hySYFIflQa/kKz9aol8VizIDXktSm1NsK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/tsenart/vegeta&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/tsenart/vegeta&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/d92ssc/hySYFIflQa/kKz9aol8VizIDXktSm1NsK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&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;GitHub - tsenart/vegeta: HTTP load testing tool and library. It's over 9000!&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;HTTP load testing tool and library. It's over 9000! - GitHub - tsenart/vegeta: HTTP load testing tool and library. It's over 9000!&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;pre id=&quot;code_1686637621895&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 베게타 최신 릴리즈 버전 다운
$ curl -Lo vegeta.tar.gz &quot;https://github.com/tsenart/vegeta/releases/download/v12.8.4/vegeta_12.8.4_linux_amd64.tar.gz&quot;

$ mkdir vegeta-temp
$ tar xf vegeta.tar.gz -C vegeta-temp

$ sudo mv vegeta-temp/vegeta /usr/local/bin

$ rm -rf vegeta.tar.gz
$ rm -rf vegeta-temp&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Infra/Kubernetes</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/328</guid>
      <comments>https://miinsun.tistory.com/328#entry328comment</comments>
      <pubDate>Tue, 13 Jun 2023 15:50:03 +0900</pubDate>
    </item>
    <item>
      <title>[이론] 쿠버네티스 Ingress</title>
      <link>https://miinsun.tistory.com/327</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;유튜브 강의 '따배쿠'와 책 '쿠버네티스 입문'을 정리한 자료입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;b&gt; &lt;/b&gt;Kubernetes Ingress란?&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;754&quot; data-origin-height=&quot;218&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oBUjc/btsjGjgJHlq/RMC5BjTxREuzmgn1KEyUck/tfile.svg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oBUjc/btsjGjgJHlq/RMC5BjTxREuzmgn1KEyUck/tfile.svg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oBUjc/btsjGjgJHlq/RMC5BjTxREuzmgn1KEyUck/tfile.svg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoBUjc%2FbtsjGjgJHlq%2FRMC5BjTxREuzmgn1KEyUck%2Ftfile.svg&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; loading=&quot;lazy&quot; width=&quot;605&quot; height=&quot;175&quot; data-origin-width=&quot;754&quot; data-origin-height=&quot;218&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;쿠버네티스의 인그레스는 주로 클러스터 외부에서 안에 있는 파드에 접근할 때 사용하는 방법이다. 서비스와의 차이점은 주로 L7 영역의 통신을 담당해서 처리한다는 것이다.&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인그레스는 임의의 포트 또는 프로토콜을 노출시키지 않는다. HTTP와 HTTPS 이외의 서비스를 인터넷에 노출하려면 보통&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://kubernetes.io/ko/docs/concepts/services-networking/service/#type-nodeport&quot;&gt;Service.Type=NodePort&lt;/a&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;또는&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;u&gt;Service.Type=LoadBalancer&lt;/u&gt;&amp;nbsp;&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;HTTP나 HTTPS를 통해 클러스터 내부의 서비스를 외부로 노출&lt;/li&gt;
&lt;li&gt;Service에 외부 URL을 제공&lt;/li&gt;
&lt;li&gt;트래픽을 로드밸런싱&lt;/li&gt;
&lt;li&gt;SSL 인증서 처리&lt;/li&gt;
&lt;li&gt;Virtual hosting을 지정&lt;/li&gt;
&lt;/ul&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: #000000;&quot;&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;color: #000000;&quot;&gt;클라우드 서비스로 쿠버네티스를 구성하면 별다른 설정없이 자체 로드밸런서 서비스와 연동해 인그레스를 사용할 수 있다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;클라우드 서비스를 사용하지 않고 직접 쿠버네티스 클러스터를 구축한다면 인그레스 컨트롤러를 직접 인그레스와 연동해야 한다.&lt;b&gt; 이때 가장 많이 사용되는 도구는 쿠버네티스에서 제공하는 ingress-nginx이다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&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;h3 style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt; &lt;/b&gt; ingress-nginx 컨트롤러&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ingress-nginx는 NGINX를 리버스 프록시 및 로드 밸런서를 위해 사용할 수 있는 쿠버네티스용 ingress controller이다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a href=&quot;https://github.com/kubernetes/ingress-nginx/blob/main/README.md#readme&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/kubernetes/ingress-nginx/blob/main/README.md#readme&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1686629827911&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - kubernetes/ingress-nginx: Ingress-NGINX Controller for Kubernetes&quot; data-og-description=&quot;Ingress-NGINX Controller for Kubernetes. Contribute to kubernetes/ingress-nginx development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/kubernetes/ingress-nginx/blob/main/README.md#readme&quot; data-og-url=&quot;https://github.com/kubernetes/ingress-nginx&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dVWmvp/hySYAGNTLL/dnDqxbMpgV9orXGGVG6VK0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/kubernetes/ingress-nginx/blob/main/README.md#readme&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/kubernetes/ingress-nginx/blob/main/README.md#readme&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dVWmvp/hySYAGNTLL/dnDqxbMpgV9orXGGVG6VK0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&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;GitHub - kubernetes/ingress-nginx: Ingress-NGINX Controller for Kubernetes&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Ingress-NGINX Controller for Kubernetes. Contribute to kubernetes/ingress-nginx development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;nginx를 이용하는 인그레스 컨트롤러 외에도 HAProxy, Envoy, Kong 등 소프트웨어를 이용하는 인그레스 컨트롤러가 있고, Citrix, F5와 같은 로드밸런서 장비 회사에서 제공하는 인그레스 컨트롤러도 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;더 다양한 ingress controller은 공식 문서에서 확인 가능하다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a href=&quot;https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #5c5c5c;&quot;&gt;  &lt;/span&gt;&lt;/b&gt;&lt;b&gt;인그레스를 활용한 무중단 배포&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;405&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cz6zE8/btsjG0HSl78/HlTkkKj5vL9Qip7a3A7SY0/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cz6zE8/btsjG0HSl78/HlTkkKj5vL9Qip7a3A7SY0/img.gif&quot; data-alt=&quot;tech.kakao&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cz6zE8/btsjG0HSl78/HlTkkKj5vL9Qip7a3A7SY0/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/cz6zE8/btsjG0HSl78/HlTkkKj5vL9Qip7a3A7SY0/img.gif&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; loading=&quot;lazy&quot; width=&quot;720&quot; height=&quot;405&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;405&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;tech.kakao&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;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;span style=&quot;color: #000000;&quot;&gt;운영중인 서비스에 맞게 maxSurge와 maxUnavailable 필드 설정&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;readinessProbe 지원 확인&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;readinessProbe는 컨테이너가 서비스 요청을 처리할 준비가 보장되었을 때 트래픽 처리를 요청하는 것&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;livenessProbe 결과가 OK더라도 컨테이너가 readinessProbe를 지원하지 않으면 아직 초기화 과정이 진행되지 못한 컨테이너는 요청이 가도 응답을 제대로 하지 못할&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;쿠버네티스와 컨테이너 안에 그레이스풀 종료 설정&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그레이스 풀 종료는 컨테이너에서 SIGTERM 신호를 받았을 때 기존에 받은 요청만 처리하고 새 요청은 받지 않는 것을 의미&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그레이스 풀 종료 옵션을 사용할 수 없을 때는 프리스톱 훅을 이용할 수 있다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Infra/Kubernetes</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/327</guid>
      <comments>https://miinsun.tistory.com/327#entry327comment</comments>
      <pubDate>Tue, 13 Jun 2023 13:39:23 +0900</pubDate>
    </item>
    <item>
      <title>[실습] minikube로 앱 외부로 노출하기</title>
      <link>https://miinsun.tistory.com/326</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;994&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blCDBD/btsjiHvvNEB/S3ah21Iuwct1WTAkcLTkuk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blCDBD/btsjiHvvNEB/S3ah21Iuwct1WTAkcLTkuk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blCDBD/btsjiHvvNEB/S3ah21Iuwct1WTAkcLTkuk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblCDBD%2FbtsjiHvvNEB%2FS3ah21Iuwct1WTAkcLTkuk%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;180&quot; height=&quot;175&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;994&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;  실습 환경&lt;/b&gt;&lt;/h3&gt;
&lt;blockquote style=&quot;background-color: #ffffff; color: #666666; text-align: start;&quot; data-ke-style=&quot;style2&quot;&gt;MacBook M1 Pro&lt;br /&gt;iterm&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;  Minikube&lt;span&gt;&amp;nbsp;&lt;/span&gt;설치&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1686301557809&quot; class=&quot;bash&quot; style=&quot;background-color: #f6f7f8; color: #555555; text-align: start;&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ vim deploy-controller.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: deploy-app
spec:
  replicas: 5
  selector:
    matchLabels:
      app: webui
  template:
    metadata:
      labels:
        app: webui
    spec:
      containers:
        - name: nginx-container
          image: nginx:1.14

# deploy 생성
$ kubectl create -f deploy-controller.yaml
deployment.apps/deploy-app created&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;    minikube service로 앱 배포&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서 만들었던 nginx deploy를 80번 포트로 노출시킨다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;minikube의 service로 쿠버네티스 서비스를 외부로 노출시키면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1686301697891&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl expose deployment deploy-app --type=NodePort --port=80

$ kubectl get service deploy-app

$ minikube service deploy-app&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Infra/Kubernetes</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/326</guid>
      <comments>https://miinsun.tistory.com/326#entry326comment</comments>
      <pubDate>Fri, 9 Jun 2023 18:09:56 +0900</pubDate>
    </item>
    <item>
      <title>[세팅] minikube로 쿠버네티스 클러스터 구축하기</title>
      <link>https://miinsun.tistory.com/325</link>
      <description>&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-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;994&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WInhj/btsjkGBKglU/LYQyKheKMft7KFEJOsEhI0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WInhj/btsjkGBKglU/LYQyKheKMft7KFEJOsEhI0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WInhj/btsjkGBKglU/LYQyKheKMft7KFEJOsEhI0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWInhj%2FbtsjkGBKglU%2FLYQyKheKMft7KFEJOsEhI0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;140&quot; height=&quot;136&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;994&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;  실습 환경&lt;/b&gt;&lt;/h3&gt;
&lt;blockquote style=&quot;background-color: #ffffff; color: #666666; text-align: start;&quot; data-ke-style=&quot;style2&quot;&gt;MacBook M1 Pro&lt;br /&gt;iterm&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;  Minikube&lt;span&gt;&amp;nbsp;&lt;/span&gt;설치&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1686299357855&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ brew install minikube&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;  Docker Desktop 설치&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://docs.docker.com/desktop/install/mac-install/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://docs.docker.com/desktop/install/mac-install/&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;docker desktop을 설치하고 minikube의 driver를 docker로 지정한 채 실행하자&lt;/p&gt;
&lt;pre id=&quot;code_1686299444762&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ open -a docker
$ minikube start --drive=docker&lt;/code&gt;&lt;/pre&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;h3 style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; &amp;nbsp; Master 1개 , Node 2개 구성&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에 get nodes를 하면 master(control-plane)인 minikube만 보인다.&lt;/p&gt;
&lt;pre id=&quot;code_1686299581477&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl get nodes
NAME       STATUS   ROLES           AGE     VERSION
minikube   Ready    control-plane   9m35s   v1.26.3&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;node 2개를 더 추가로 하면, 진행 로그가 뜨고 얼마 있다가 새로운 노드 2개가 Ready 상태인 걸 확인 할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1686299759207&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 노드 추가
$ minikube node add

# 노드 확인
$ kubectl get nodes
NAME           STATUS   ROLES           AGE   VERSION
minikube       Ready    control-plane   25m   v1.26.3
minikube-m02   Ready    &amp;lt;none&amp;gt;          12m   v1.26.3
minikube-m03   Ready    &amp;lt;none&amp;gt;          11m   v1.26.3&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Infra/Kubernetes</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/325</guid>
      <comments>https://miinsun.tistory.com/325#entry325comment</comments>
      <pubDate>Fri, 9 Jun 2023 17:41:39 +0900</pubDate>
    </item>
    <item>
      <title>[실습] 쿠버네티스 Controller 활용</title>
      <link>https://miinsun.tistory.com/324</link>
      <description>&lt;h3 style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;  실습 환경&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;blockquote style=&quot;background-color: #ffffff; color: #666666; text-align: start;&quot; data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;OS :&amp;nbsp; Ubuntu 20.04 LTS&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;RAM : &amp;lt;= 4GIB&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;CPU : &amp;lt;= 2Core&lt;/span&gt;&lt;/blockquote&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;b&gt; ReplicaSet &amp;amp; 스케일 아웃&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;마스터에서 노드 'rs-controller.yaml' 템플릿을 생성한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1686290911856&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ vim rs-controller.yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: app-rs
spec:
  replicas: 3
  selector:
    matchLabels:
      app: webui
  template:
    metadata:
      labels:
        app: webui
    spec:
      containers:
        - name: nginx
          image: nginx:1.14

# ReplicaSet 생성
$ kubectl create -f rs-controller.yaml

# pod 확인
$ kubectl get pods
NAME           READY   STATUS    RESTARTS   AGE   IP          NODE                NOMINATED NODE   READINESS GATES
app-rs-ck4n7   1/1     Running   0          3s    10.36.0.1   node1.example.com   &amp;lt;none&amp;gt;           &amp;lt;none&amp;gt;
app-rs-j7mxm   1/1     Running   0          3s    10.44.0.2   node2.example.com   &amp;lt;none&amp;gt;           &amp;lt;none&amp;gt;
app-rs-v9dd8   1/1     Running   0          3s    10.44.0.1   node2.example.com   &amp;lt;none&amp;gt;           &amp;lt;none&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성된 Pod를 보면 Node1과 Node2에 모두 app이 생성된 것을 확인 할 수 있다.&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;b&gt;※ label 주의&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;replicaset은 label로 Pod를 식별함&lt;/p&gt;
&lt;pre id=&quot;code_1686291037823&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# pod의 라벨 확인
$ kubectl get pod --show-labels
NAME           READY   STATUS    RESTARTS   AGE    LABELS
app-rs-ck4n7   1/1     Running   0          117s   app=webui
app-rs-j7mxm   1/1     Running   0          117s   app=webui
app-rs-v9dd8   1/1     Running   0          117s   app=webui

# label 제거
$ kubectl label pod/app-rs-ck4n7 app-
pod/app-rs-ck4n7 unlabeled

# label 확인
# replica에 해당하는 라벨이 3개에서 2개로 줄었기 때문에, 다시 1개가 생성된 것을 확인할 수 있다.
$ kubectl get pod --show-labels
NAME           READY   STATUS    RESTARTS   AGE     LABELS
app-rs-ck4n7   1/1     Running   0          3m51s   &amp;lt;none&amp;gt;
app-rs-j7mxm   1/1     Running   0          3m51s   app=webui
app-rs-thwjb   1/1     Running   0          8s      app=webui
app-rs-v9dd8   1/1     Running   0          3m51s   app=webui

# label 추가
$ kubectl label pod/app-rs-ck4n7 app=webui
pod/app-rs-ck4n7 labeled
# webui를 갖는 라벨이 4개가 됐기 때문에, 생성 시간이 가장 짧은 app-rs-thwjb가 제거 되었다
root@master:~/test# kubectl get pod --show-labels
NAME           READY   STATUS    RESTARTS   AGE     LABELS
app-rs-ck4n7   1/1     Running   0          7m20s   app=webui
app-rs-j7mxm   1/1     Running   0          7m20s   app=webui
app-rs-v9dd8   1/1     Running   0          7m20s   app=webui&lt;/code&gt;&lt;/pre&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;b&gt;- ReplicaSet ScaleOut&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동작 중인 pod의&amp;nbsp; scale을 수정할 수 있는 방법은 edit, scale, apply로 3가지가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 중 scale을 이용해 동작중인 replicaSet의 scale을 업데이트를 진행하였다.&lt;/p&gt;
&lt;pre id=&quot;code_1686291718568&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# scale을 사용한 update
$ kubectl scale rs app-rs --replicas=10
replicaset.apps/app-rs scaled

# pod가 3개에서 10개로 늘었다
$ kubectl get pods -o wide
NAME           READY   STATUS    RESTARTS   AGE   IP          NODE                NOMINATED NODE   READINESS GATES
app-rs-8m7m5   1/1     Running   0          18s   10.36.0.3   node1.example.com   &amp;lt;none&amp;gt;           &amp;lt;none&amp;gt;
app-rs-ck4n7   1/1     Running   0          10m   10.36.0.1   node1.example.com   &amp;lt;none&amp;gt;           &amp;lt;none&amp;gt;
app-rs-dw2f2   1/1     Running   0          18s   10.44.0.4   node2.example.com   &amp;lt;none&amp;gt;           &amp;lt;none&amp;gt;
app-rs-j7mxm   1/1     Running   0          10m   10.44.0.2   node2.example.com   &amp;lt;none&amp;gt;           &amp;lt;none&amp;gt;
app-rs-lgx8f   1/1     Running   0          18s   10.36.0.5   node1.example.com   &amp;lt;none&amp;gt;           &amp;lt;none&amp;gt;
app-rs-nmtc6   1/1     Running   0          18s   10.36.0.4   node1.example.com   &amp;lt;none&amp;gt;           &amp;lt;none&amp;gt;
app-rs-q7xtb   1/1     Running   0          18s   10.44.0.3   node2.example.com   &amp;lt;none&amp;gt;           &amp;lt;none&amp;gt;
app-rs-qf7pz   1/1     Running   0          18s   10.44.0.5   node2.example.com   &amp;lt;none&amp;gt;           &amp;lt;none&amp;gt;
app-rs-rgglj   1/1     Running   0          18s   10.36.0.2   node1.example.com   &amp;lt;none&amp;gt;           &amp;lt;none&amp;gt;
app-rs-v9dd8   1/1     Running   0          10m   10.44.0.1   node2.example.com   &amp;lt;none&amp;gt;           &amp;lt;none&amp;gt;

# nginx 접속
$ curl 10.36.0.3
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
...&lt;/code&gt;&lt;/pre&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;b&gt;- ReplicaSet delete&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 동작중인 pod들은 replicaSet에 종속되기 때문에 replicaSet을 삭제하면 모든 노드가 삭제된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇지만 replicaSet을 삭제할 때 --cascade 옵션을 추가하면 replicaSet만을 삭제 할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1686292205256&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# Replicaset을 삭제하면 연관된 모든 pod가 삭제된다.
$ kubectl delete rs app-rs
replicaset.apps &quot;app-rs&quot; deleted
$ kubectl get pod
No resources found in default namespace.

# cascade 옵션 추가
$ kubectl delete rs app-rs --cascade=false

# ReplicaSet은 삭제되었지만 pod는 삭제되지 않았다
$ kubectl get pods
NAME           READY   STATUS    RESTARTS   AGE
app-rs-8m7m5   1/1     Running   0          6m36s
app-rs-ck4n7   1/1     Running   0          17m
app-rs-dw2f2   1/1     Running   0          6m36s
app-rs-j7mxm   1/1     Running   0          17m
app-rs-v9dd8   1/1     Running   0          17m&lt;/code&gt;&lt;/pre&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;h3 style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;b&gt;&lt;span&gt; Deploy&lt;/span&gt; &amp;amp; RollingUpdate&lt;span style=&quot;background-color: #ffffff; color: #2c3e50; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;마스터에서 노드 'deploy-controller.yaml' 템플릿을 생성한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1686292492337&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ vim deploy-controller.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: deploy-app
spec:
  replicas: 5
  selector:
    matchLabels:
      app: webui
  template:
    metadata:
      labels:
        app: webui
    spec:
      containers:
        - name: nginx-container
          image: nginx:1.14

# deploy 생성
$ kubectl create -f deploy-controller.yaml
deployment.apps/deploy-app created

# 생성된 resource 확인
$ kubectl get po,rs,deploy
NAME                              READY   STATUS    RESTARTS   AGE
pod/deploy-app-7944565747-2vh77   1/1     Running   0          17s
pod/deploy-app-7944565747-dcdgw   1/1     Running   0          17s
pod/deploy-app-7944565747-j7w4b   1/1     Running   0          17s
pod/deploy-app-7944565747-mr972   1/1     Running   0          17s
pod/deploy-app-7944565747-nnmct   1/1     Running   0          17s

NAME                                    DESIRED   CURRENT   READY   AGE
replicaset.apps/deploy-app-7944565747   5         5         5       17s

NAME                         READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/deploy-app   5/5     5            5           17s&lt;/code&gt;&lt;/pre&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;b&gt;- RollingUpdate&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;nginx이미지를 기존 1.14에서 1.15로 업그레이드 한다.&lt;/p&gt;
&lt;pre id=&quot;code_1686292985120&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# nginx 이미지 upgrade
$ kubectl set image deploy deploy-app nginx-container=nginx:1.15 --record
deployment.apps/deploy-app image updated

# 배포 중지
$ kubectl rollout pause deploy deploy-app

# 배포 재실행
$ kubectl rollout resume deploy deploy-app&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 사진을 보면 새로운 버전의 컨테이너가 생기고, 기존의 컨테이너는 삭제되는 모습을 확인 할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;670&quot; data-origin-height=&quot;192&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ck1Epd/btsjcqVaEh2/Nqnx7VixmWCVBkz5GvvSV1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ck1Epd/btsjcqVaEh2/Nqnx7VixmWCVBkz5GvvSV1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ck1Epd/btsjcqVaEh2/Nqnx7VixmWCVBkz5GvvSV1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fck1Epd%2FbtsjcqVaEh2%2FNqnx7VixmWCVBkz5GvvSV1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;670&quot; height=&quot;192&quot; data-origin-width=&quot;670&quot; data-origin-height=&quot;192&quot;/&gt;&lt;/span&gt;&lt;/figure&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;&lt;b&gt;- Update 버전 관리&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금까지 버전을 바꿨던 기록을 명령어를 통해 확인할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1686293915607&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 버전 기록 확인
$ kubectl rollout history deployment deploy-app
deployment.apps/deploy-app
REVISION  CHANGE-CAUSE
1         kubectl set image deploy deploy-app web=nginx:1.15 --record=true
2         kubectl set image deploy deploy-app nginx-container=nginx:1.15 --record=true
3         kubectl set image deploy deploy-app nginx-container=nginx:1.16 --record=true
4         kubectl set image deploy deploy-app nginx-container=nginx:1.17 --record=true
6         kubectl set image deploy deploy-app nginx-container=nginx:1.17 --record=true
7         kubectl set image deploy deploy-app nginx-container=nginx:1.18 --record=true

# 버전 1.15(2)로 롤백
$ kubectl rollout undo deployment deploy-app --to-revision=2
deployment.apps/deploy-app rolled back

# Pod 확인
$ kubectl describe pod deploy-app-78444bbfbb-4kq4w
...
Containers:
  nginx-container:
    Container ID:   docker://7b738c9728153f190184394ef8353585e2904c33327509b424142e7af910ee3f
    Image:          nginx:1.15
    Image ID:       docker-pullable://nginx@sha256:23b4dcdf0d34d4a129755fc6f52e1c6e23bb34ea011b315d87e193033bcd1b68
    Port:           &amp;lt;none&amp;gt;
    Host Port:      &amp;lt;none&amp;gt;
    State:          Running&lt;/code&gt;&lt;/pre&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;b&gt;-&amp;nbsp; Annotation을 이용한 history 관리&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1686294665913&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# nginx:1.14로 deploy template 생성
$ vim deploy-controller.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: deploy-app
  annotations:
    kubernetes.io/change-cause: version 1.14
spec:
  replicas: 5
  selector:
    matchLabels:
      app: webui
  template:
    metadata:
      labels:
        app: webui
    spec:
      containers:
        - name: nginx-container
          image: nginx:1.14

# deploy 생성
$ kubectl create -f deploy-controller.yaml

# nginx:1.15로 수정
$ vim deploy-controller.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: deploy-app
  annotations:
    kubernetes.io/change-cause: version 1.15
spec:
  replicas: 5
  selector:
    matchLabels:
      app: webui
  template:
    metadata:
      labels:
        app: webui
    spec:
      containers:
        - name: nginx-container
          image: nginx:1.15
        
# 바뀐 내역 적용
$ kubectl apply -f deploy-controller.yaml

# 버전 확인
$ kubectl rollout history deployment deploy-app
deployment.apps/deploy-app
REVISION  CHANGE-CAUSE
1         version 1.14
2         version 1.15&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Infra/Kubernetes</category>
      <category>deploy</category>
      <category>Kubernetes</category>
      <category>따배쿠</category>
      <category>쿠버네티스</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/324</guid>
      <comments>https://miinsun.tistory.com/324#entry324comment</comments>
      <pubDate>Fri, 9 Jun 2023 16:11:34 +0900</pubDate>
    </item>
    <item>
      <title>[이론] 쿠버네티스 Controller</title>
      <link>https://miinsun.tistory.com/323</link>
      <description>&lt;p style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;유튜브 강의 '따배쿠'와 책 '쿠버네티스 입문'을 정리한 자료입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot; 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;h3 style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;b&gt;&amp;nbsp;&lt;/b&gt;  Kubernetes Contoroller란?&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;308&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Wepat/btsi61Bb8sk/IOjzKKYDRKQue3B2TpQ9K1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Wepat/btsi61Bb8sk/IOjzKKYDRKQue3B2TpQ9K1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Wepat/btsi61Bb8sk/IOjzKKYDRKQue3B2TpQ9K1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWepat%2Fbtsi61Bb8sk%2FIOjzKKYDRKQue3B2TpQ9K1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;618&quot; height=&quot;238&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;308&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;쿠버네티스의 컨트롤러는 파드들을 관리하는 역할을 한다. 또한 파드의 개수를 보장해준다. 또한&amp;nbsp;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;쿠버네티스 안에는 다양한 역할을 하는 컨트롤러들이 존재한다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&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;웹 서비스처럼 오랜 시간동안 계속 실행되어야하는 파드 --&amp;gt; Replication Controller, Replicaset, Deployment 등&lt;/li&gt;
&lt;li&gt;클러스터의 전체 노드에 같은 파드를 실행할 때 --&amp;gt; DaemonSet&lt;/li&gt;
&lt;li&gt;1회성 작업을 할 때 사용하는 Job, 주기적인 배치 작업을 할때 CronJob 컨트롤러 등이 있다&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;b&gt;&amp;nbsp;&lt;/b&gt;  Replication Contoroller&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Replication Contoller는 쿠버네티스 프로젝트의 초기부터 있었던 가장 기본적인 컨트롤러이다. RC는 요구하는 Pod의 개수를 보장하며 파드 집합의 실행을 항상 안정적으로 유지하는 것을 목표로 한다. 요즘은 RC보다는 비슷한 역할을 하는 레플리카세트와 Deployment를 주로 사용하는 추세이다.&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- Replication Controller의 특징&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요구하는 Pod의 개수가 부족하면 template를 이용해 Pod를 추가&lt;/li&gt;
&lt;li&gt;요구하는 Pod 수 보다 많으면 최근에 생성된 Pod를 삭제&lt;/li&gt;
&lt;li&gt;기본 구성 - selector, replicas, template&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1686277678397&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# replication-controller.yaml

apiVersion: v1
kind: ReplicationController
metadata:
  name: &amp;lt;RC_NAME&amp;gt;
spec:
  replicas: &amp;lt;DEPLOY_NUM&amp;gt;
  selector:
    &amp;lt;KEY&amp;gt;: &amp;lt;VALUE&amp;gt;
  template:
    &amp;lt;CONTAINER TEMPLATE&amp;gt;
    
# label 확인
$ kubectl get pod --show-labels&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;b&gt;&amp;nbsp;&lt;/b&gt;  Replica Set&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Replica Set는 레플리케이션 컨트롤러의 발전형이다. RC와 같은 동작을 하지만 집합 기반의 select를 지원하는 차이점이 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;또한,&amp;nbsp; RC는 kubectl에서 rolling-update 옵션을 사용할 수 있지만 RS는 사용할 수 없다는 차이점도 있다. 대안법으로 rolling-update옵션이 필요하다면 Deployment를 사용해야한다.&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- Replica set Template 확인&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1686278697099&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: v1
kind: Replica Set
metadata:
  name: &amp;lt;RS_NAME&amp;gt;
spec:
  selector:
    matchLabels:
      component: redis
    matchExpressions:
      - {key: tier, operator: In, values: [cache]}
      - {key: environment, operator: NotIn, values: [dev]
    replicas: 3
    tempalte:&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;spect.selector : label 체크 조건&lt;/li&gt;
&lt;li&gt;spec.replicas : 원하는 Pod의 개수&lt;/li&gt;
&lt;li&gt;spec.template : 생성할 Pod의 명세&lt;/li&gt;
&lt;/ul&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;b&gt;- label 주의점&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ReplicaSet은 label을 체크해서 원하는 수의 Pod가 없으면 새로운 Pod를 생성한다. 그렇기 때문에 생성 될 Pod의 label을 신경써서 작성해줘야한다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;b&gt;- matchExpression 연산자&lt;/b&gt;&lt;br /&gt;In : key와 values를 지정하여 key, value가 일치하는 Pod만 연결&lt;br /&gt;NotIn : key는 일치하고 value는 일치하지 않는 Pod에 연결 &lt;br /&gt;Exists : key에 맞는 label의 pod를 연결&lt;br /&gt;DoesNotExist : key와 다른 label의 pod를 연결&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&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;h3 style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;b&gt;&amp;nbsp;&lt;/b&gt;  Rolling Update를 위한 Deployment&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Deployment는 ReplicaSet을 컨트롤해서 Pod의 수를 조절하고 앱 배포를 더 세밀하게 관리한다. Deployment는 파드 개수를 보장하는 것 뿐만아니라 앱을 배포할 때 Rolling Update &amp;amp; Rolling Back 등의 기능도 지원한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;801&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zUz4L/btsjeZIaS64/SzVBnEZ2BKNUp7qR3xAEY0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zUz4L/btsjeZIaS64/SzVBnEZ2BKNUp7qR3xAEY0/img.jpg&quot; data-alt=&quot;Deployment의 Rolling Update&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zUz4L/btsjeZIaS64/SzVBnEZ2BKNUp7qR3xAEY0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzUz4L%2FbtsjeZIaS64%2FSzVBnEZ2BKNUp7qR3xAEY0%2Fimg.jpg&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; loading=&quot;lazy&quot; width=&quot;429&quot; height=&quot;286&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;801&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Deployment의 Rolling Update&lt;/figcaption&gt;
&lt;/figure&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;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- Deployment Template 확인&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1686280279075&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-deploy
spec:
  replicas: 4
  selector:
    matchLabels:
      app: webui
  template:
    metadata:
      labels:
        app: webui
    spec:
      containers:
        - name: web
          image: nginx:1.14
          ports:
          - containerPort: 80&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;template를 확인해보면 type을 제외하곤 ReplicaSet과 완전히 동일하다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- Deployment 동작 원리&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;802&quot; data-origin-height=&quot;491&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TO7tV/btsjbpujshl/TEHLzXssHEd9BAxqn1Aas1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TO7tV/btsjbpujshl/TEHLzXssHEd9BAxqn1Aas1/img.png&quot; data-alt=&quot;https://subicura.com/k8s/guide/&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TO7tV/btsjbpujshl/TEHLzXssHEd9BAxqn1Aas1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTO7tV%2Fbtsjbpujshl%2FTEHLzXssHEd9BAxqn1Aas1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;612&quot; height=&quot;375&quot; data-origin-width=&quot;802&quot; data-origin-height=&quot;491&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://subicura.com/k8s/guide/&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #2c3e50; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Deployment Controller는 Deployment조건을 감시하면서 현재 상태와 원하는 상태가 다른 것을 체크&lt;/li&gt;
&lt;li&gt;Deployment Controller가 원하는 상태가 되도록&lt;span&gt;&amp;nbsp;&lt;/span&gt;ReplicaSet&lt;span&gt;&amp;nbsp;&lt;/span&gt;설정&lt;/li&gt;
&lt;li&gt;ReplicaSet Controller는 ReplicaSet조건을 감시하면서 현재 상태와 원하는 상태가 다른 것을 체크&lt;/li&gt;
&lt;li&gt;ReplicaSet Controller가 원하는 상태가 되도록&lt;span&gt;&amp;nbsp;&lt;/span&gt;Pod을 생성하거나 제거&lt;/li&gt;
&lt;li&gt;Scheduler는 API서버를 감시하면서 할당되지 않은unassigned&lt;span&gt;&amp;nbsp;&lt;/span&gt;Pod이 있는지 체크&lt;/li&gt;
&lt;li&gt;Scheduler는 할당되지 않은 새로운&lt;span&gt;&amp;nbsp;&lt;/span&gt;Pod을 감지하고 적절한&lt;span&gt;&amp;nbsp;&lt;/span&gt;노드node에 배치&lt;/li&gt;
&lt;li&gt;이후 노드는 기존대로 동작&lt;/li&gt;
&lt;/ol&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;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- Deployment 버전 관리와 배포 전략 설정&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Deployment는 변경된 상태를 기록합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1686280875759&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 히스토리 확인
kubectl rollout history deploy/app-deploy

# revision 1 히스토리 상세 확인
kubectl rollout history deploy/app-deploy --revision=1

# 바로 전으로 롤백
kubectl rollout undo deploy/app-deploy

# 특정 버전으로 롤백
kubectl rollout undo deploy/app-deploy --to-revision=2&lt;/code&gt;&lt;/pre&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;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;Deploy는 다양한 배포 전략을 지원한다. 다음과 같이 미리 템플릿을 통해 지정할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;color: #cccccc; text-align: left;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;maxSurge로 업데이트&amp;nbsp; 시, 동시에 Running 중인 최대 파드의 수를 정할 수 있다.&lt;/li&gt;
&lt;li&gt;maxUnavailable은 업데이트 시, 사용할 수 없는 최대 파드의 수를 지정하는 선택적 필드이다.&lt;/li&gt;
&lt;li&gt;replicas를 3개 운영중이라면
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;50%&lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;일 때, 3 + 2(1.5의 반올림) = 5, 최대 5개를 운영하고&lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;25%라면, 3 + 1(0.75의 반올림) = 4, 최대 4개를 운영하라는 의미이다.&lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;[참고]&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;https://subicura.com/k8s/guide/&quot;&gt;https://subicura.com/k8s/guide/&lt;/a&gt;&lt;/p&gt;</description>
      <category>Infra/Kubernetes</category>
      <category>Deployment</category>
      <category>Kubernetes</category>
      <category>kubernetes controller</category>
      <category>따배쿠</category>
      <category>컨트롤러</category>
      <category>쿠버네티스</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/323</guid>
      <comments>https://miinsun.tistory.com/323#entry323comment</comments>
      <pubDate>Fri, 9 Jun 2023 12:31:40 +0900</pubDate>
    </item>
    <item>
      <title>[실습] 쿠버네티스 Pod 활용</title>
      <link>https://miinsun.tistory.com/322</link>
      <description>&lt;h3 style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;  실습 환경&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;blockquote style=&quot;background-color: #ffffff; color: #666666; text-align: start;&quot; data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;OS :&amp;nbsp; Ubuntu 20.04 LTS&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;RAM : &amp;lt;= 4GIB&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;CPU : &amp;lt;= 2Core&lt;/span&gt;&lt;/blockquote&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;b&gt;&amp;nbsp;&lt;/b&gt;livenessProbe를 이용해서 Self-healing Pod 만들기&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;마스터에서 노드 'pod-nginx-liveness.yaml'템플릿을 생성한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1686208851450&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ vim pod-nginx-liveness.yaml

apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod-liveness
spec:
  containers:
  - name: nginx-container
    image: nginx:1.14
    ports:
    - containerPort: 80
      protocol: TCP
    livenessProbe:
      httpGet:
        path: /
        port: 80
      successThreshold: 1
      timeoutSeconds: 3
      periodSeconds: 30
      failureThreshold: 3&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다음 명령어로 파드를 생성하고, 확인 할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1686209043635&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 파드 생성
$ kubectl create -f pod-nginx-liveness.yaml

# 파드 확인
$ kubectl get pod nginx-pod-liveness -o yaml&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;b&gt; Static Pod 만들기&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;노드01번에서만 동작하는 stastic pod를 만들어준다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1686210170736&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# static pod 디렉토리 위치로 이동
$ cd /etc/kubernetes/manifests/

# nginx 서버 파드 생성
$ cat &amp;gt; nginx.yaml
apiVersion: v1
kind: Pod
metadata:
  name: static-pod
spec:
  containers:
  - name: nginx-container
    image: nginx:1.14
    ports:
    - containerPort: 80
      protocol: TCP

# static pod 수정 --&amp;gt; 바꾸는 즉시 반영 됨
$ vim nginx.yaml

# stastic pod 삭제 --&amp;gt; 바꾸는 즉시 반영 됨
$ rm nginx.yaml&lt;/code&gt;&lt;/pre&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: #000000;&quot;&gt;static pod는 master에서 조회만 가능하고, 따로 명령을 줄 수 는 없다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1686210238186&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 마스터에서 삭제해도 다시 실행 됨
$ kubectl delete pod nginx-pod-liveness-node1.example.com
pod &quot;nginx-pod-liveness-node1.example.com&quot; deleted&lt;/code&gt;&lt;/pre&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: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;※ static pod 디렉토리 경로 바꾸기&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;node01의 kubelet confing 파일을 수정해줌&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1686210321701&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# config 파일 수정
$ vim /var/lib/kubelet/config.yaml

# 이부분을 원하는 위치로 바꿔줌
staticPodPath: /etc/kubernetes/manifests

# kubelet 재실행해서 반영
$ sudo systemctl restart kubelet&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;b&gt;&lt;span&gt; &lt;/span&gt;Pod 환경변수 설정&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;pod 내부의 컨테이너를 제작 시 환경 변수를 미리 정의할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이후, Pod 동작 중에 수정을 할 때는 미리 정의된 컨테이너 환경 변수를 수정 할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Infra/Kubernetes</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/322</guid>
      <comments>https://miinsun.tistory.com/322#entry322comment</comments>
      <pubDate>Thu, 8 Jun 2023 16:53:02 +0900</pubDate>
    </item>
    <item>
      <title>[MySQL] MySQL 튜닝 용어 정리</title>
      <link>https://miinsun.tistory.com/321</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;오브젝트 스캔 유형&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;748&quot; data-origin-height=&quot;560&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2p3fY/btrWcLmArih/pYnTHbKPOhhkzU5McrE5pK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2p3fY/btrWcLmArih/pYnTHbKPOhhkzU5McrE5pK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2p3fY/btrWcLmArih/pYnTHbKPOhhkzU5McrE5pK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2p3fY%2FbtrWcLmArih%2FpYnTHbKPOhhkzU5McrE5pK%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;299&quot; data-origin-width=&quot;748&quot; data-origin-height=&quot;560&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. 테이블 스캔&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테이블 풀 스캔 : 테이블 스캔은 인덱스를 거치지 않고바로 디스크에 위치한 테이블 데이터에 접근하는 것을 의미한다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. 인덱스 스캔&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인덱스 스캔은 인덱스로 테이블 데이터를 찾아가는 것을 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;종류로는 인덱스 범위 스캔, 인덱스 풀 스캔, 인덱스 고유 스캔, 인덱스 루스 스캔, 인덱스 병합 스캔 등이 있다.&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-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;722&quot; data-origin-height=&quot;416&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FzZYC/btrWisZZGaU/VQNCaF9TP8KVmSQn2l9GN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FzZYC/btrWisZZGaU/VQNCaF9TP8KVmSQn2l9GN0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FzZYC/btrWisZZGaU/VQNCaF9TP8KVmSQn2l9GN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFzZYC%2FbtrWisZZGaU%2FVQNCaF9TP8KVmSQn2l9GN0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;230&quot; data-origin-width=&quot;722&quot; data-origin-height=&quot;416&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;* 인덱스 범위 스캔&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인덱스를 범위 기준으로 스캔한 뒤, 스캔 결과를 토대로 데이터를 찾아감&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;장) 좁은 범위를 스캔 할 때는 성능적으로 매우 효율적인 편이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단) 넓은 범위에서는 비효율적일 수 있다.&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-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;742&quot; data-origin-height=&quot;440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kFYqb/btrWdIQten8/mBlRDHTpcNMkaP3JQCJRZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kFYqb/btrWdIQten8/mBlRDHTpcNMkaP3JQCJRZ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kFYqb/btrWdIQten8/mBlRDHTpcNMkaP3JQCJRZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkFYqb%2FbtrWdIQten8%2FmBlRDHTpcNMkaP3JQCJRZ1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;237&quot; data-origin-width=&quot;742&quot; data-origin-height=&quot;440&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;* 인덱스 풀 스캔&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터를 찾을 때 인덱스를 처음부터 끝까지 수행하는 방식이다. 이때 테이블 풀 스캔과의 차이점은 테이블에 직접 접근하지 않고 인덱스로 구성된 열 정보만 요구하는 SQL 문에서 인덱스 풀 스캔을 진행한다는 점이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;장) 테이블 풀 스캔보다 성능적으로 우위를 차지한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단) 검색 범위를&amp;nbsp; 줄이는 방향으로 SQL 튜닝이 되야한다.&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-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;722&quot; data-origin-height=&quot;416&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yZcbi/btrWdgfCGxO/ldkkKxn06XYHKpgwGatF40/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yZcbi/btrWdgfCGxO/ldkkKxn06XYHKpgwGatF40/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yZcbi/btrWdgfCGxO/ldkkKxn06XYHKpgwGatF40/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyZcbi%2FbtrWdgfCGxO%2FldkkKxn06XYHKpgwGatF40%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;230&quot; data-origin-width=&quot;722&quot; data-origin-height=&quot;416&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;* 인덱스 고유 스캔&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;인덱스 기본 키나 고유 익덱스로 테이블에 접근, 가장 효율적인 스캔 방법이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;WHERE절에 '=' 조건을 사용해서 작성한다.&lt;/span&gt;&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-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;724&quot; data-origin-height=&quot;412&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dNhtIJ/btrWb3gTWvz/k7wosnn3NEtK03h4WnIj51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dNhtIJ/btrWb3gTWvz/k7wosnn3NEtK03h4WnIj51/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dNhtIJ/btrWb3gTWvz/k7wosnn3NEtK03h4WnIj51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdNhtIJ%2FbtrWb3gTWvz%2Fk7wosnn3NEtK03h4WnIj51%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;228&quot; data-origin-width=&quot;724&quot; data-origin-height=&quot;412&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;* 인덱스 루스 스캔&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인덱스의 필요한 부분만 골라 스캔하는 방식이다. 인덱스 범위 스캔처럼 넓은 범위에 전부 접근하지 않고, WHERE 조건문 기준으로 불필요한 인덱스는 무시한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;- 보통 GROUP BY 구문이나 MAX(), MIN() 함수가 포함되면 동작한다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #666666;&quot;&gt;- 이미 오름차 순으로 정렬 된 인덱스에서 최댓 값, 최솟 값을 찾을 때 사용된다.&lt;/span&gt;&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-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;748&quot; data-origin-height=&quot;698&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3RfjY/btrWhujotBm/ViQI5tHyl3PzRG6KiGlSm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3RfjY/btrWhujotBm/ViQI5tHyl3PzRG6KiGlSm0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3RfjY/btrWhujotBm/ViQI5tHyl3PzRG6KiGlSm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3RfjY%2FbtrWhujotBm%2FViQI5tHyl3PzRG6KiGlSm0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;373&quot; data-origin-width=&quot;748&quot; data-origin-height=&quot;698&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;* 인덱스 병합 스캔&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테이블 내에서 생성된 인덱스들을 통합해서 스캔하는 방식, 서로 다른 인덱스들을 '결합'과 '교차'하는 방법이 있다. 이들 방식은 모두 실행 계획으로 출력 됨.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인덱스 병합 스캔은 물리적으로 존재하는 인덱스를 각각 수행하기 때문에 시간이 몇배로 걸림. 따라서 보통 하나의 인덱스로 통합하거나, SQL문이 독립된 인덱스에서 수행하도록 튜닝함&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. 디스크 접근 방식&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;* 시퀀셜 액세스&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;668&quot; data-origin-height=&quot;256&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2V183/btrWhujotFx/rCksYzvafP0aYwjlDet151/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2V183/btrWhujotFx/rCksYzvafP0aYwjlDet151/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2V183/btrWhujotFx/rCksYzvafP0aYwjlDet151/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2V183%2FbtrWhujotFx%2FrCksYzvafP0aYwjlDet151%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;153&quot; data-origin-width=&quot;668&quot; data-origin-height=&quot;256&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;&lt;b&gt;* 랜덤 액세스&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;670&quot; data-origin-height=&quot;304&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/baEBDk/btrWjk1Ur3y/UN2TBPkd1qARS7yLXkfmGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/baEBDk/btrWjk1Ur3y/UN2TBPkd1qARS7yLXkfmGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/baEBDk/btrWjk1Ur3y/UN2TBPkd1qARS7yLXkfmGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbaEBDk%2FbtrWjk1Ur3y%2FUN2TBPkd1qARS7yLXkfmGk%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;181&quot; data-origin-width=&quot;670&quot; data-origin-height=&quot;304&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;4. 조건 유형&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SQL은 WHERE절 조건문을 기준으로 데이터가 저장된 디스크에 접근 함.&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;b&gt;* 액세스 조건&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;디스크에 있는 데이터에 처음 접근하는 조건으로 SQL튜닝의 핵심이다.&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;b&gt;* 필터 조건&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;5. 응용 용어 정리&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;* 선택도 Selectivity&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;선택도&lt;/b&gt; = 선택한 데이터 건수 % 전체 데이터 건수&lt;br /&gt;&lt;b&gt;변형된 선택도&lt;/b&gt; = 1 % DISTINCT(COUNT 열명)&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;b&gt;선택도가 높을 때&lt;/b&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;선택도가 높다 =&amp;gt; 해당 열에 중복되는 데이터가 많다 =&amp;gt; 대량의 데이터 출력&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;선택도가 낮을 때&lt;/b&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;선택도가 낮다 =&amp;gt; 대량의 데이터 중 원 하는 데이터를 고를 수 있다 =&amp;gt; 인덱스열을 생성할 때, 주요 고려 대상이 된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;b&gt;* 카디널리티 Cardinality&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하나의 데이터 유형으로 정의되는 데이터 행의 개수, 현업에서는 중복 수치를 나타내는 지표&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중복도가 높으면 카디널리티가 낮고, 중복도가 낮으면 카디널리티가 높다&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;카디널리티&lt;/b&gt; = 전체 데이터 건수 X 선택도&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 주민등록 번호 = 카디널리티 높음, 이름 = 카디널리티 중간, 성별 = 카디널리티 낮음&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;b&gt;* 힌트 Hint&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터베이스에 힌트를 전달해 데이터를 빨리 찾을 수 있도록 돕는다.&lt;/p&gt;
&lt;pre id=&quot;code_1673717730724&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT 학번, 전공 코드
FROM 학생 /*! USE INDEX(학생_IDX01) */
WHERE 이름 = '윤민선';&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;&lt;b&gt;* 콜레이션 Collation&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특정 문자셋으로 데이터베이스에 저장된 값을 비교하거나 정렬하는 작업의 규칙을 의미&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 대표적으로 utf8_bin은 A,B,a,b 순으로 utf8_general_ci는 A,a,B,b 순으로 정렬 함&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;b&gt;* 히스토그램 histgram&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테이블의 열 값이 어떻게 분포되어 있는지를 확인하는 통계 정보이다. 옵티마이저가 실행 계획을 최적화하기 위해 사용된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MySQL에서 내부적으로 열의 분포를 저장 할 때는 '높이 균현 히스토그램' 방식을 사용. 즉, 저장된 데이터 값의 종류가 수백, 수천, 수만개 이상이므로 데이터를 그룹화하고, 정해진 양동이만큼 분리해서 열의 통계정보 데이터를 저장한다.&lt;/p&gt;</description>
      <category>DataBase/MySQL</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/321</guid>
      <comments>https://miinsun.tistory.com/321#entry321comment</comments>
      <pubDate>Sat, 14 Jan 2023 22:35:32 +0900</pubDate>
    </item>
    <item>
      <title>[MySQL] MySQL 서버 업그레이드</title>
      <link>https://miinsun.tistory.com/320</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;먼저, MySQL 서버를 업그레이드하는 방법으로 두 가지 방법이 있다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;In-Place Upgrade&lt;/b&gt; MySQL 서버의 데이터 파일을 그대로 두고 업그레이드&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Logical Upgrade&amp;nbsp;&lt;/b&gt;mysqldump 도구 등을 이용해 MySQL 서버의 데이터를 덤프 한후, 미리 준비한&amp;nbsp; 업그레이된 버전의 MySQL 서버에서 덤프된 데이터를 적재하는 방법&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1번 인플레이스 방법에는 여러 제약 사항이 있지만 업그레이드 시간을 크게 단축할 수 있다. 반대로 로지컬 방법은 버전 간 제약 사항이 거의 없지만 업그레이드 시간이 매우 많이 소요될 수 있다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;MySQL 8.0 업그레이드 시 고려 사항&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MySQL 5.7 대비 MySQL 8.0에서는 상당히 많은 기능들이 개선되거나 변경됐다. 그래서 반드시 MySQL 8.0으로 업그레이드하기 전에 다음과 같은 사항들을 검토해봐야한다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;사용자 인증 방식 변경&lt;/li&gt;
&lt;li&gt;MySQL 8.0과의 호환성 체크&lt;/li&gt;
&lt;li&gt;외래키 이름의 길이&lt;/li&gt;
&lt;li&gt;인덱스 힌트&lt;/li&gt;
&lt;li&gt;Group By에 사용된 정렬 옵션&lt;/li&gt;
&lt;li&gt;파티션을 위한 공용 테이블 스페이스&lt;/li&gt;
&lt;/ol&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;b&gt;MySQL Shell Utility Upgrade Checker&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또, MySQL Shell 유틸리티의 Upgrade Checker Utility를 이용해 쉽고 빠르게 다음과 같은 사항들을 살펴 볼 수 있다.&lt;/p&gt;
&lt;figure id=&quot;og_1673078198122&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;MySQL :: MySQL Shell 8.0 :: 11.1 Upgrade Checker Utility&quot; data-og-description=&quot;11.1&amp;nbsp;Upgrade Checker Utility The util.checkForServerUpgrade() function is an upgrade checker utility that enables you to verify whether MySQL server instances are ready for upgrade. You can select a target MySQL Server release to which you plan to upgrade&quot; data-og-host=&quot;dev.mysql.com&quot; data-og-source-url=&quot;https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-utilities-upgrade.html&quot; data-og-url=&quot;https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-utilities-upgrade.html&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-utilities-upgrade.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-utilities-upgrade.html&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; data-ke-size=&quot;size16&quot;&gt;MySQL :: MySQL Shell 8.0 :: 11.1 Upgrade Checker Utility&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;11.1&amp;nbsp;Upgrade Checker Utility The util.checkForServerUpgrade() function is an upgrade checker utility that enables you to verify whether MySQL server instances are ready for upgrade. You can select a target MySQL Server release to which you plan to upgrade&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;dev.mysql.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;MySQL Shell 설치&lt;/p&gt;
&lt;pre id=&quot;code_1673078414713&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# yum install -y mysql-shell.x86_64&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Upgrade Checker 유틸리티 실행&lt;/p&gt;
&lt;pre id=&quot;code_1673078478959&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# mysqlsh root@localhost -e &quot;util.checkForServerUpgrade();&quot;
The MySQL server at /var%2Flib%2Fmysql%2Fmysql.sock, version 5.7.27-log - MySQL
Community Server (GPL), will now be checked for compatibility issues for
upgrade to MySQL 8.0.17...

1) Usage of old temporal type
  No issues found

2) Usage of db objects with names conflicting with reserved keywords in 8.0
  No issues found

...

Errors:   0
Warnings: 1
Notices:  0&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;업그레이드를 방해하는 치명적인 오류는 발견되지 않았지만 한가지 잠재적인 문제가 발견됐다. 이 같은 경우에는 업그레이드 하기 전에 얼마나 영향을 끼치는지 꼭 확인을 하고 해결한 뒤에 업그레이드를 진행해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;인플레이스 업그레이드 제약 사항&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인플레이스 업그레이드 시 동일 메이저 버전에서 마이너 버전&amp;nbsp; 간 업그레이드는 대부분 데이터 파일의 변경 없이 진행되며, 여러 버전을 건너뛰어서 업그레이드하는 것도 허용된다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;MySQL 8.0.16 -&amp;gt; MySQL 8.0.21 : MySQL 서버만 재설치 함&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 메이저 버전 간 업그레이드는 대부분 크고 작은 데이터 파일의 변경이 필요하기 때문에 반드시 직전 버전에서만 업그레이드가 허용된다. 메이저 버전 간 업그레이드는 데이터 파일의 패치가 필요한데, MySQL 8.0 서버는 MySQL 5.7&amp;nbsp; 버전에서 사용하던 데이터 파일과 로그 포맷만 인식하기 때문이다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;MySQL 5.5 -&amp;gt; MySQL 5.6 : 업그레이드 가능&lt;/li&gt;
&lt;li&gt;MySQL 5.5 -&amp;gt; MySQL 5.7 : 업그레이드 불가능&lt;/li&gt;
&lt;li&gt;MySQL 5.5 -&amp;gt; MySQL 8.0 : 업그레이드 불가능&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;때문에 MySQL 5.1버전에서 8.0버전으로 업그레이드를 하기 위해서는 아래와 같이 4번의 업그레이드를 진행해야 한다. 그렇기 때문에 만약 두 단계 이상을 한 번에 업그레이드해야 한다면 mysqldump 프로그램으로 논리적 업그레이드를 하는 것이 더 좋은 선택일 수 있다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;MySQL 5.1 -&amp;gt; MySQL 5.5&lt;/li&gt;
&lt;li&gt;MySQL 5.5 -&amp;gt; MySQL 5.6&lt;/li&gt;
&lt;li&gt;MySQL 5.6 -&amp;gt; MySQL 5.7&lt;/li&gt;
&lt;li&gt;MySQL 5.7 -&amp;gt; MySQL 8.0&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;MySQL 8.0 인플레이스 업그레이드&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MySQL 5.7에서 MySQL 8.0으로 업그레이드 하는 과정에는 시스템 테이블의 정보와 데이터 딕셔너리 정보의 포맷이 완전히 바뀐다는 것을 유의해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MySQL 5.7에서 MySQL 8.0으로의 업그레이드는 크게 두 가지 단계로 나눠서 처리된다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;데이터 딕셔너리 업그레이드 :&lt;/b&gt; MySQL 5.7 버전까지는 데이터 딕셔너리 정보가 FRM 확장자를 가진 파일로 별도로 보관돼었는데, MySQL 8.0 버전부터는 데이터 딕셔너리 정보가 트랜잭션이 지원되는 InnoDB 테이블로 저장되도록 개선됐다. 데이터 딕셔너리 업그레이드는 기존의 FRM 파일의 내용을 InnoDB 시스템 테이블로 저장한다. MySQL 8.0 버전부터는 딕셔너리 데이터의 버전 간 호환성 관리를 위해 테이블이 생성될 때 사용된 MySQL 서버의 버전 정보도 함께 기록한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;서버 업그레이드 : &lt;/b&gt;MySQL 서버의 시스템 데이터베이스(performance_schema와 information_schema, mysql database)의 테이블 구조를 MySQL 8.0 버전에 맞게 변경한다.&lt;/li&gt;
&lt;/ol&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;b&gt;MySQL 8.0.16 부터의 업그레이드&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MySQL 서버 프로그램(mysqld)이 시작되면서 업그레이드를 자동 실행&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;MySQL 셧다운&lt;/li&gt;
&lt;li&gt;MySQL 5.7 프로그램 삭제&lt;/li&gt;
&lt;li&gt;MySQL 8.0 프로그램 설치&lt;/li&gt;
&lt;li&gt;MySQL 8.0 서버(mysqld) 시작 (MySQL 서버가 데이터 딕셔너리 업그레이드를 실행 후, 시스템 테이블 구조를 MySQL 8.0에 맞게 변환)&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>DataBase/MySQL</category>
      <category>mysql</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/320</guid>
      <comments>https://miinsun.tistory.com/320#entry320comment</comments>
      <pubDate>Sat, 7 Jan 2023 22:17:05 +0900</pubDate>
    </item>
    <item>
      <title>인턴 마지막 주차 리뷰</title>
      <link>https://miinsun.tistory.com/319</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;인턴 마지막 주차 리뷰&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-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_IMG_8036.jpg&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RYmZX/btrVv1PJ4zR/iIq0nqeokdqdXulSGnhtd1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RYmZX/btrVv1PJ4zR/iIq0nqeokdqdXulSGnhtd1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RYmZX/btrVv1PJ4zR/iIq0nqeokdqdXulSGnhtd1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRYmZX%2FbtrVv1PJ4zR%2FiIq0nqeokdqdXulSGnhtd1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;261&quot; height=&quot;348&quot; data-filename=&quot;edited_IMG_8036.jpg&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzXTab/btrVwgzi9Rr/g1zLQyj6DomF92tBbpsZg0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzXTab/btrVwgzi9Rr/g1zLQyj6DomF92tBbpsZg0/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot; data-filename=&quot;edited_IMG_8042.jpg&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzXTab/btrVwgzi9Rr/g1zLQyj6DomF92tBbpsZg0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzXTab%2FbtrVwgzi9Rr%2Fg1zLQyj6DomF92tBbpsZg0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dG9BBY/btrVqhtuz28/6ZeGYm4FGeeKc4ebgIHIZk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dG9BBY/btrVqhtuz28/6ZeGYm4FGeeKc4ebgIHIZk/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot; data-filename=&quot;edited_IMG_8043.jpg&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dG9BBY/btrVqhtuz28/6ZeGYm4FGeeKc4ebgIHIZk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdG9BBY%2FbtrVqhtuz28%2F6ZeGYm4FGeeKc4ebgIHIZk%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/buOq4X/btrVtFHadTb/rkCtkvt6JpV9xf5vLokoxk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/buOq4X/btrVtFHadTb/rkCtkvt6JpV9xf5vLokoxk/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;711&quot; data-filename=&quot;edited_IMG_8102 2.JPG&quot; style=&quot;width: 26.6294%; margin-right: 10px;&quot; data-widthpercent=&quot;27.26&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/buOq4X/btrVtFHadTb/rkCtkvt6JpV9xf5vLokoxk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbuOq4X%2FbtrVtFHadTb%2FrkCtkvt6JpV9xf5vLokoxk%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;711&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dDwnBU/btrVtG66KvE/t9F49lZImSkWOfvbZlYH11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dDwnBU/btrVtG66KvE/t9F49lZImSkWOfvbZlYH11/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot; data-filename=&quot;edited_IMG_8056.jpg&quot; data-widthpercent=&quot;36.37&quot; style=&quot;width: 35.5225%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dDwnBU/btrVtG66KvE/t9F49lZImSkWOfvbZlYH11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdDwnBU%2FbtrVtG66KvE%2Ft9F49lZImSkWOfvbZlYH11%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWG7zC/btrVtHyffeE/7Zde0qE3WajztKoREBj6Sk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWG7zC/btrVtHyffeE/7Zde0qE3WajztKoREBj6Sk/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot; data-filename=&quot;edited_IMG_8117.JPG&quot; style=&quot;width: 35.5225%;&quot; data-widthpercent=&quot;36.37&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWG7zC/btrVtHyffeE/7Zde0qE3WajztKoREBj6Sk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWG7zC%2FbtrVtHyffeE%2F7Zde0qE3WajztKoREBj6Sk%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cxYe6i/btrVtTrPRhb/pqCkxdroub252sIezSFCIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cxYe6i/btrVtTrPRhb/pqCkxdroub252sIezSFCIK/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;711&quot; data-filename=&quot;edited_IMG_8103.JPG&quot; style=&quot;width: 26.6354%; margin-right: 10px;&quot; data-widthpercent=&quot;27.27&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cxYe6i/btrVtTrPRhb/pqCkxdroub252sIezSFCIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcxYe6i%2FbtrVtTrPRhb%2FpqCkxdroub252sIezSFCIK%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;711&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdm2BC/btrVt1XvpF3/bTm0d7KVr0xisKm0wXAMj1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdm2BC/btrVt1XvpF3/bTm0d7KVr0xisKm0wXAMj1/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot; data-filename=&quot;edited_IMG_8058.jpg&quot; style=&quot;width: 35.5306%; margin-right: 10px;&quot; data-widthpercent=&quot;36.38&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdm2BC/btrVt1XvpF3/bTm0d7KVr0xisKm0wXAMj1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbdm2BC%2FbtrVt1XvpF3%2FbTm0d7KVr0xisKm0wXAMj1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7j6To/btrVxrAE9NQ/8sWGnW5Dz518jwaaKxBY1k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7j6To/btrVxrAE9NQ/8sWGnW5Dz518jwaaKxBY1k/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot; data-filename=&quot;IMG_8062.jpeg&quot; style=&quot;width: 35.5084%;&quot; data-widthpercent=&quot;36.35&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7j6To/btrVxrAE9NQ/8sWGnW5Dz518jwaaKxBY1k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7j6To%2FbtrVxrAE9NQ%2F8sWGnW5Dz518jwaaKxBY1k%2Fimg.jpg&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; loading=&quot;lazy&quot; width=&quot;3024&quot; height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_IMG_8061.PNG&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vxFX9/btrVvmfxhx0/tJG5Gj2r7elK0rE8opmHr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vxFX9/btrVvmfxhx0/tJG5Gj2r7elK0rE8opmHr0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vxFX9/btrVvmfxhx0/tJG5Gj2r7elK0rE8opmHr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvxFX9%2FbtrVvmfxhx0%2FtJG5Gj2r7elK0rE8opmHr0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;400&quot; data-filename=&quot;edited_IMG_8061.PNG&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_IMG_8099.JPG&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SV00M/btrVuHYtqnC/FrnE7zuXUOkhA20RKoo9k1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SV00M/btrVuHYtqnC/FrnE7zuXUOkhA20RKoo9k1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SV00M/btrVuHYtqnC/FrnE7zuXUOkhA20RKoo9k1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSV00M%2FbtrVuHYtqnC%2FFrnE7zuXUOkhA20RKoo9k1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;400&quot; data-filename=&quot;edited_IMG_8099.JPG&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Extracurricular Activies/2022 인턴</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/319</guid>
      <comments>https://miinsun.tistory.com/319#entry319comment</comments>
      <pubDate>Thu, 5 Jan 2023 23:55:16 +0900</pubDate>
    </item>
    <item>
      <title>인턴 9, 10주차 리뷰</title>
      <link>https://miinsun.tistory.com/318</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;인턴 7주차, 8주차(11월 15일 ~ 30일) 리뷰&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blO0w3/btrVuCiDJNe/RMQxyRwNr6MOwQ6BwlZaK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blO0w3/btrVuCiDJNe/RMQxyRwNr6MOwQ6BwlZaK1/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot; data-filename=&quot;edited_IMG_7829.jpg&quot; style=&quot;width: 32.5581%; margin-right: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blO0w3/btrVuCiDJNe/RMQxyRwNr6MOwQ6BwlZaK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblO0w3%2FbtrVuCiDJNe%2FRMQxyRwNr6MOwQ6BwlZaK1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bi0piO/btrVwgMRhig/4sCjSPdEkew7VpYOVsw3D1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bi0piO/btrVwgMRhig/4sCjSPdEkew7VpYOVsw3D1/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot; data-filename=&quot;edited_IMG_7831.jpg&quot; data-widthpercent=&quot;33.33&quot; style=&quot;width: 32.5581%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bi0piO/btrVwgMRhig/4sCjSPdEkew7VpYOVsw3D1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbi0piO%2FbtrVwgMRhig%2F4sCjSPdEkew7VpYOVsw3D1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjQYfj/btrVqIdm9gJ/PPPlOOiVVrjkfygCa5ckr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjQYfj/btrVqIdm9gJ/PPPlOOiVVrjkfygCa5ckr0/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot; data-filename=&quot;edited_IMG_7835.jpg&quot; style=&quot;width: 32.5581%;&quot; data-widthpercent=&quot;33.34&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjQYfj/btrVqIdm9gJ/PPPlOOiVVrjkfygCa5ckr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjQYfj%2FbtrVqIdm9gJ%2FPPPlOOiVVrjkfygCa5ckr0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_IMG_7836.jpg&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/by88a3/btrVvl10sJS/7h9MG9htHa1b2HVT4eK3Zk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/by88a3/btrVvl10sJS/7h9MG9htHa1b2HVT4eK3Zk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/by88a3/btrVvl10sJS/7h9MG9htHa1b2HVT4eK3Zk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fby88a3%2FbtrVvl10sJS%2F7h9MG9htHa1b2HVT4eK3Zk%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;533&quot; data-filename=&quot;edited_IMG_7836.jpg&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HBrlm/btrVtHrqzK9/EjnhOP6OJJ8YBSiacw646k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HBrlm/btrVtHrqzK9/EjnhOP6OJJ8YBSiacw646k/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot; data-filename=&quot;edited_IMG_7933.jpg&quot; style=&quot;width: 25.8626%; margin-right: 10px;&quot; data-widthpercent=&quot;26.48&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HBrlm/btrVtHrqzK9/EjnhOP6OJJ8YBSiacw646k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHBrlm%2FbtrVtHrqzK9%2FEjnhOP6OJJ8YBSiacw646k%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GyYSn/btrVt2ITWmP/O64Uz4J5rPZaUhitvnwnqK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GyYSn/btrVt2ITWmP/O64Uz4J5rPZaUhitvnwnqK/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;300&quot; data-filename=&quot;edited_IMG_7987.jpg&quot; style=&quot;width: 45.9492%; margin-right: 10px;&quot; data-widthpercent=&quot;47.04&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GyYSn/btrVt2ITWmP/O64Uz4J5rPZaUhitvnwnqK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGyYSn%2FbtrVt2ITWmP%2FO64Uz4J5rPZaUhitvnwnqK%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;300&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5Lpum/btrVt1XuYqO/525hxP51Vpf6ohUOEDl8SK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5Lpum/btrVt1XuYqO/525hxP51Vpf6ohUOEDl8SK/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot; data-filename=&quot;edited_IMG_7842.jpg&quot; style=&quot;width: 25.8626%;&quot; data-widthpercent=&quot;26.48&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5Lpum/btrVt1XuYqO/525hxP51Vpf6ohUOEDl8SK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5Lpum%2FbtrVt1XuYqO%2F525hxP51Vpf6ohUOEDl8SK%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjZvp3/btrVunTtqPJ/8kIhx3A3MWBCTfIQK7w7Ek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjZvp3/btrVunTtqPJ/8kIhx3A3MWBCTfIQK7w7Ek/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot; data-filename=&quot;edited_IMG_7925.jpg&quot; style=&quot;width: 32.5581%; margin-right: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjZvp3/btrVunTtqPJ/8kIhx3A3MWBCTfIQK7w7Ek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjZvp3%2FbtrVunTtqPJ%2F8kIhx3A3MWBCTfIQK7w7Ek%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/t2mw4/btrVsor8wXw/Q1XwJftk5cmMS6t7C94VD1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/t2mw4/btrVsor8wXw/Q1XwJftk5cmMS6t7C94VD1/img.png&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot; data-is-animation=&quot;false&quot; data-filename=&quot;edited_IMG_7936.JPG&quot; style=&quot;width: 32.5581%; margin-right: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/t2mw4/btrVsor8wXw/Q1XwJftk5cmMS6t7C94VD1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ft2mw4%2FbtrVsor8wXw%2FQ1XwJftk5cmMS6t7C94VD1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ecK5g2/btrVtTk5TuE/VxeMXoKtGeg0fqpkv958SK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ecK5g2/btrVtTk5TuE/VxeMXoKtGeg0fqpkv958SK/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot; data-filename=&quot;edited_IMG_7942.jpg&quot; style=&quot;width: 32.5581%;&quot; data-widthpercent=&quot;33.34&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ecK5g2/btrVtTk5TuE/VxeMXoKtGeg0fqpkv958SK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FecK5g2%2FbtrVtTk5TuE%2FVxeMXoKtGeg0fqpkv958SK%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&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&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dcwzRb/btrVwfmRKdN/HBnz0JXXnDHvdzgeJVx7T1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dcwzRb/btrVwfmRKdN/HBnz0JXXnDHvdzgeJVx7T1/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot; data-filename=&quot;edited_IMG_7945.jpg&quot; data-widthpercent=&quot;36.03&quot; style=&quot;width: 35.6099%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dcwzRb/btrVwfmRKdN/HBnz0JXXnDHvdzgeJVx7T1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdcwzRb%2FbtrVwfmRKdN%2FHBnz0JXXnDHvdzgeJVx7T1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b8zdMn/btrVt4s57nh/at3l79pmrCeYkfWg8zAB60/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b8zdMn/btrVt4s57nh/at3l79pmrCeYkfWg8zAB60/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;533&quot; data-origin-height=&quot;400&quot; data-filename=&quot;edited_IMG_7946.jpg&quot; style=&quot;width: 63.2273%;&quot; data-widthpercent=&quot;63.97&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b8zdMn/btrVt4s57nh/at3l79pmrCeYkfWg8zAB60/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb8zdMn%2FbtrVt4s57nh%2Fat3l79pmrCeYkfWg8zAB60%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;533&quot; height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cHCwb1/btrVt2vkEYj/isMcLzERx4ke5arkbqD9Y1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cHCwb1/btrVt2vkEYj/isMcLzERx4ke5arkbqD9Y1/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot; data-filename=&quot;edited_IMG_7962.jpg&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cHCwb1/btrVt2vkEYj/isMcLzERx4ke5arkbqD9Y1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcHCwb1%2FbtrVt2vkEYj%2FisMcLzERx4ke5arkbqD9Y1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eh6NrJ/btrVwff6qwy/speiGYkNzEPTmvdqg3but0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eh6NrJ/btrVwff6qwy/speiGYkNzEPTmvdqg3but0/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot; data-filename=&quot;edited_IMG_7958.jpg&quot; data-widthpercent=&quot;50&quot; style=&quot;width: 49.4186%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eh6NrJ/btrVwff6qwy/speiGYkNzEPTmvdqg3but0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Feh6NrJ%2FbtrVwff6qwy%2FspeiGYkNzEPTmvdqg3but0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&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-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_IMG_7881.jpg&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xlA61/btrVqKa9DC3/ToXSwkkeGnPVyKB5LvQRyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xlA61/btrVqKa9DC3/ToXSwkkeGnPVyKB5LvQRyK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xlA61/btrVqKa9DC3/ToXSwkkeGnPVyKB5LvQRyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxlA61%2FbtrVqKa9DC3%2FToXSwkkeGnPVyKB5LvQRyK%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;533&quot; data-filename=&quot;edited_IMG_7881.jpg&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Extracurricular Activies/2022 인턴</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/318</guid>
      <comments>https://miinsun.tistory.com/318#entry318comment</comments>
      <pubDate>Thu, 5 Jan 2023 23:40:00 +0900</pubDate>
    </item>
    <item>
      <title>인턴 7, 8주차 리뷰</title>
      <link>https://miinsun.tistory.com/317</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;인턴 7주 차, 8주 차(11월 1일 ~ 14일) 리뷰&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dEBJtp/btrVsJps0S5/yBuviJDZh9MsefyMOCJ8P0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dEBJtp/btrVsJps0S5/yBuviJDZh9MsefyMOCJ8P0/img.png&quot; style=&quot;width: 38.1116%; margin-right: 10px;&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;300&quot; data-filename=&quot;edited_edited_IMG_7575.jpg&quot; data-widthpercent=&quot;39.02&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dEBJtp/btrVsJps0S5/yBuviJDZh9MsefyMOCJ8P0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdEBJtp%2FbtrVsJps0S5%2FyBuviJDZh9MsefyMOCJ8P0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;300&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xgMOr/btrVuBKMrBi/7dXX3XDnb11oPcJY1Am1jK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xgMOr/btrVuBKMrBi/7dXX3XDnb11oPcJY1Am1jK/img.png&quot; style=&quot;width: 38.1116%; margin-right: 10px;&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;300&quot; data-filename=&quot;edited_edited_IMG_7739.jpg&quot; data-widthpercent=&quot;39.02&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xgMOr/btrVuBKMrBi/7dXX3XDnb11oPcJY1Am1jK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxgMOr%2FbtrVuBKMrBi%2F7dXX3XDnb11oPcJY1Am1jK%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;300&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bszmkD/btrVtF1tiBA/mKEDAN15MKbPwkMC4SxT71/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bszmkD/btrVtF1tiBA/mKEDAN15MKbPwkMC4SxT71/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot; data-filename=&quot;edited_IMG_7584.JPG&quot; style=&quot;width: 21.4512%;&quot; data-widthpercent=&quot;21.96&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bszmkD/btrVtF1tiBA/mKEDAN15MKbPwkMC4SxT71/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbszmkD%2FbtrVtF1tiBA%2FmKEDAN15MKbPwkMC4SxT71%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요새 사이드 메뉴로 타코야끼가 자주 나오는데, 너무 맛있어서 두 그릇씩 먹고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동기들이랑 처음으로 카페에서 빵도 사 먹어 봤다. 회사 내 카페 빵이 싸고 생각보다 엄청 맛있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&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-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_IMG_7601.jpg&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bD5gJs/btrVsKongOb/s3Qy9sowoLqc5FhBYW44Xk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bD5gJs/btrVsKongOb/s3Qy9sowoLqc5FhBYW44Xk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bD5gJs/btrVsKongOb/s3Qy9sowoLqc5FhBYW44Xk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbD5gJs%2FbtrVsKongOb%2Fs3Qy9sowoLqc5FhBYW44Xk%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;533&quot; data-filename=&quot;edited_IMG_7601.jpg&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫 월급을 받고 지원이랑 대게를 먹기로 했다. 입구에는 대게랑 킹크랩, 랍스터가 수조 가득 있었다.  &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;잘 몰랐는데 킹크랩이랑 대게랑 크기 차이가 엄청난다는 것을 알게 되었다. 이번은 대게를 먹었지만 나중에 정규직 되면 킹크랩을 먹어봐야지!!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9Lwqd/btrVukWPAkf/4KDDF7Rxkd9dh0zWybyXGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9Lwqd/btrVukWPAkf/4KDDF7Rxkd9dh0zWybyXGk/img.png&quot; style=&quot;width: 32.5581%; margin-right: 10px;&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot; data-filename=&quot;edited_IMG_7588.jpg&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9Lwqd/btrVukWPAkf/4KDDF7Rxkd9dh0zWybyXGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9Lwqd%2FbtrVukWPAkf%2F4KDDF7Rxkd9dh0zWybyXGk%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pCHh3/btrVujDBsg1/JHEskkVgGK6aTpuRlCD6l0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pCHh3/btrVujDBsg1/JHEskkVgGK6aTpuRlCD6l0/img.png&quot; style=&quot;width: 32.5581%; margin-right: 10px;&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot; data-filename=&quot;edited_IMG_7592.jpg&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pCHh3/btrVujDBsg1/JHEskkVgGK6aTpuRlCD6l0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpCHh3%2FbtrVujDBsg1%2FJHEskkVgGK6aTpuRlCD6l0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dYPYny/btrVt3nrXgT/X3GYNoSmWgwEeDnhlb2DMK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dYPYny/btrVt3nrXgT/X3GYNoSmWgwEeDnhlb2DMK/img.png&quot; style=&quot;width: 32.5581%;&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot; data-filename=&quot;edited_IMG_7597.jpg&quot; data-widthpercent=&quot;33.34&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dYPYny/btrVt3nrXgT/X3GYNoSmWgwEeDnhlb2DMK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdYPYny%2FbtrVt3nrXgT%2FX3GYNoSmWgwEeDnhlb2DMK%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;의외였던 건 메인인 대게보다 같이 나왔던 랍스터가 훨씬 맛있었다. 태어나서 랍스터 회는 처음 먹어봤는데 너무 쫀득하고 달달했었다. 마지막에 나왔던 게딱지 볶음밥도 맛있었는데, 후다닥 먹느라 사진을 못 찍었네ㅜ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&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-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_IMG_7613.jpg&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;300&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cxowey/btrVqKhVbHt/5y6cg5xSYqRzOrveYjCduk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cxowey/btrVqKhVbHt/5y6cg5xSYqRzOrveYjCduk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cxowey/btrVqKhVbHt/5y6cg5xSYqRzOrveYjCduk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcxowey%2FbtrVqKhVbHt%2F5y6cg5xSYqRzOrveYjCduk%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;300&quot; data-filename=&quot;edited_IMG_7613.jpg&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;300&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요즘은 과제를 하며 틈틈이 사내 게임 대회 준비를 하고 있다. 게임 회사라서 좋은 점이 점심시간에 눈치 안 보고 게임을 맘껏 즐길 수 있다는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;준비하고 있는 게임은 '카즈'라는 게임인데 하스스톤, 레전드 오브 룬테라 같은 전략 카드 게임이다. 세계 2차 대전을 콘셉트로 한 게임인데 다른 게임들과 조금 다른 게 '최전방' 개념이 있어서 카드를 내기 전에 한번 더 생각해야 됐다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;근데 내 책상 왜 이렇게 더럽지;; ㅋ&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rFkMv/btrVv2HSw8j/kKG3KaZ72I4dbBMOeLaMA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rFkMv/btrVv2HSw8j/kKG3KaZ72I4dbBMOeLaMA1/img.png&quot; style=&quot;width: 56.4633%; margin-right: 10px;&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;400&quot; data-filename=&quot;edited_edited_IMG_7670.JPG&quot; data-widthpercent=&quot;57.13&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rFkMv/btrVv2HSw8j/kKG3KaZ72I4dbBMOeLaMA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrFkMv%2FbtrVv2HSw8j%2FkKG3KaZ72I4dbBMOeLaMA1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4HMwC/btrVt14fYT7/wA01o9XMVtJAybXICLQIt0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4HMwC/btrVt14fYT7/wA01o9XMVtJAybXICLQIt0/img.png&quot; style=&quot;width: 42.373937535830905%;&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot; data-filename=&quot;edited_IMG_7662.jpg&quot; data-widthpercent=&quot;42.87&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4HMwC/btrVt14fYT7/wA01o9XMVtJAybXICLQIt0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4HMwC%2FbtrVt14fYT7%2FwA01o9XMVtJAybXICLQIt0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 오전 반차를 쓰고 삼성 SDS에 면접을 보러 왔다. 아침 일찍이부터 면접이라&amp;nbsp;새벽 5시에 일어나서 부랴부랴 준비했다. 같이 붙은 대학 동기 친구랑 대기 시간에 사진도 남겼다~  &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오전 조에서 가장 끝 번호로 면접을 봐서 남들보다 2시간은 더 대기를 한 거 같다ㅠ 면접을 꽤나 자주 본 거 같은데 항상 면접 대기 시간이 그렇게 떨리고 힘들다. 인턴 과제 준비하면서 따로 면접 준비를 못했는데, 그래서 그런지 횡설수설 제대로 대답도 못했던 거 같다. 미리미리 준비 좀 해둘걸...ㅠ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마라라멘 야무지게 조지고 다시 회사 가기~&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/o0pff/btrVt2B6QaN/k0pfCt0hQUCLdECxUxMIf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/o0pff/btrVt2B6QaN/k0pfCt0hQUCLdECxUxMIf1/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot; data-filename=&quot;edited_IMG_7687.jpg&quot; style=&quot;width: 32.5581%; margin-right: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/o0pff/btrVt2B6QaN/k0pfCt0hQUCLdECxUxMIf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo0pff%2FbtrVt2B6QaN%2Fk0pfCt0hQUCLdECxUxMIf1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cRiKYX/btrVuiSeyEi/IzvChJjdd4G7VYX0RIxGX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cRiKYX/btrVuiSeyEi/IzvChJjdd4G7VYX0RIxGX0/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot; data-filename=&quot;edited_IMG_7746.jpg&quot; style=&quot;width: 32.5581%; margin-right: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cRiKYX/btrVuiSeyEi/IzvChJjdd4G7VYX0RIxGX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcRiKYX%2FbtrVuiSeyEi%2FIzvChJjdd4G7VYX0RIxGX0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dO9rwu/btrVvs7Oxaa/CLHJA9bVooyriilWg2yk51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dO9rwu/btrVvs7Oxaa/CLHJA9bVooyriilWg2yk51/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot; data-filename=&quot;edited_IMG_7797.jpg&quot; data-widthpercent=&quot;33.34&quot; style=&quot;width: 32.5581%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dO9rwu/btrVvs7Oxaa/CLHJA9bVooyriilWg2yk51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdO9rwu%2FbtrVvs7Oxaa%2FCLHJA9bVooyriilWg2yk51%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;할로윈 이벤트가 끝나고 이번엔 로스크아크 4주년 이벤트가 시작됐다  &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;랜덤 뽑기로 상품도 받을 수 있었다. 열댓 번의 트라이 끝에 1등 상에 당첨됐다 헤헤&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>Extracurricular Activies/2022 인턴</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/317</guid>
      <comments>https://miinsun.tistory.com/317#entry317comment</comments>
      <pubDate>Thu, 5 Jan 2023 23:23:52 +0900</pubDate>
    </item>
    <item>
      <title>인턴 5, 6주차 리뷰</title>
      <link>https://miinsun.tistory.com/316</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;인턴 5주 차, 6주 차(10월 11일 ~ 30일) 리뷰&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCo5VR/btrVuokuGlo/RVfz5xxwg9hGdcZKuzNjC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCo5VR/btrVuokuGlo/RVfz5xxwg9hGdcZKuzNjC0/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot; data-filename=&quot;edited_IMG_7479.jpg&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCo5VR/btrVuokuGlo/RVfz5xxwg9hGdcZKuzNjC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCo5VR%2FbtrVuokuGlo%2FRVfz5xxwg9hGdcZKuzNjC0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bd5SG1/btrVsIYl0ot/VFkEpQf70Q5RW6xBjVq9L1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bd5SG1/btrVsIYl0ot/VFkEpQf70Q5RW6xBjVq9L1/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot; data-filename=&quot;edited_IMG_7493.jpg&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bd5SG1/btrVsIYl0ot/VFkEpQf70Q5RW6xBjVq9L1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbd5SG1%2FbtrVsIYl0ot%2FVFkEpQf70Q5RW6xBjVq9L1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 주 가장 맛있었던 식사들~&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하루는 할머니 국수랑 손만두가 나왔고, 하루는 베트남식 쌀국수가 나왔다. 사내식은 4가지 코스로 나오는데 유독 A코스인 면요리 코스가 가장 입맛에 잘 맞는 거 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WUzeX/btrVvkIKPvd/q5Qr1zgnANdM3uZU81W0Ok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WUzeX/btrVvkIKPvd/q5Qr1zgnANdM3uZU81W0Ok/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot; data-filename=&quot;edited_IMG_7487.jpg&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WUzeX/btrVvkIKPvd/q5Qr1zgnANdM3uZU81W0Ok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWUzeX%2FbtrVvkIKPvd%2Fq5Qr1zgnANdM3uZU81W0Ok%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LVznJ/btrVq3oamUf/ayK4JA9do6kg140K15SCg0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LVznJ/btrVq3oamUf/ayK4JA9do6kg140K15SCg0/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot; data-filename=&quot;edited_IMG_7480.jpg&quot; data-widthpercent=&quot;50&quot; style=&quot;width: 49.4186%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LVznJ/btrVq3oamUf/ayK4JA9do6kg140K15SCg0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLVznJ%2FbtrVq3oamUf%2FayK4JA9do6kg140K15SCg0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&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-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HN8ys/btrVxOXyXlK/yBrfpEgaWd56Dke8WDYsdk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HN8ys/btrVxOXyXlK/yBrfpEgaWd56Dke8WDYsdk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HN8ys/btrVxOXyXlK/yBrfpEgaWd56Dke8WDYsdk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHN8ys%2FbtrVxOXyXlK%2FyBrfpEgaWd56Dke8WDYsdk%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;533&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또 2주가 빠르게 지나갔다. 이번 주차는 유독 정신이 없었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왜냐하면,,, 먼저,, 술 먹고 핸드폰이&lt;span&gt;&amp;nbsp;&lt;/span&gt;고장 나서&lt;span&gt;&amp;nbsp;&lt;/span&gt;새로 핸드폰을 맞춰야 했다. 또, 과제가 도중에 새로 바뀌었기 때문에 과제 환경 세팅을 처음부터 했어야 됐다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;거기다가 엎친데 덮친 격으로 동기가 코로나에 확진되서&lt;span&gt;&amp;nbsp;&lt;/span&gt;재택근무&lt;span&gt;&amp;nbsp;&lt;/span&gt;환경 세팅을 하느라 정말 정신이 하나도 없었다.&lt;/p&gt;</description>
      <category>Extracurricular Activies/2022 인턴</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/316</guid>
      <comments>https://miinsun.tistory.com/316#entry316comment</comments>
      <pubDate>Thu, 5 Jan 2023 22:49:14 +0900</pubDate>
    </item>
    <item>
      <title>[API 마켓 플레이스 서포터즈] 성과 공유회 후기</title>
      <link>https://miinsun.tistory.com/315</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요~ API 마켓 플레이스 글로벌 서포터즈&amp;nbsp;개발 2팀 윤민선입니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 API 마켓 플레이스 서포터즈 1기 성과 공유회 포스팅을 들고 왔습니다.&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-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_blob&quot; data-origin-width=&quot;2250&quot; data-origin-height=&quot;2250&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ckoRBU/btrSPPRWogw/hfrJ8nlXwGzUuNQbuWDJH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ckoRBU/btrSPPRWogw/hfrJ8nlXwGzUuNQbuWDJH0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ckoRBU/btrSPPRWogw/hfrJ8nlXwGzUuNQbuWDJH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FckoRBU%2FbtrSPPRWogw%2FhfrJ8nlXwGzUuNQbuWDJH0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;450&quot; height=&quot;338&quot; data-filename=&quot;edited_blob&quot; data-origin-width=&quot;2250&quot; data-origin-height=&quot;2250&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;드디어 3개월간의 모든 서포터즈 일정이 끝이 났습니다╰(*&amp;deg;▽&amp;deg;*)╯&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;반차 쓰고 부랴부랴 왔는데, 발대식과 같은 장소에서 행사가 진행돼&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;기념품도 따로 챙겨주셨는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;무선 충전이 가능한 장패드랑 다이어리도 받았습니다&lt;/p&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b75f47/btrSPRoFYxN/i0sXhPbCDKHhS1GP17xK10/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b75f47/btrSPRoFYxN/i0sXhPbCDKHhS1GP17xK10/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b75f47/btrSPRoFYxN/i0sXhPbCDKHhS1GP17xK10/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb75f47%2FbtrSPRoFYxN%2Fi0sXhPbCDKHhS1GP17xK10%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;450&quot; height=&quot;338&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;얼마 되지 않아 본격적으로 성과공유회가 진행되고&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-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJfRMl/btrSOyivONz/yfLewCou1qhoKmrsCEGuhk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJfRMl/btrSOyivONz/yfLewCou1qhoKmrsCEGuhk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJfRMl/btrSOyivONz/yfLewCou1qhoKmrsCEGuhk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJfRMl%2FbtrSOyivONz%2FyfLewCou1qhoKmrsCEGuhk%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;450&quot; height=&quot;338&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서포터즈들의 활동을 통해서 어떤 성과들이 있었는지&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Xq2qH/btrSJajeW7P/MLL8gipz0Z3PkT3eUTHnO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Xq2qH/btrSJajeW7P/MLL8gipz0Z3PkT3eUTHnO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Xq2qH/btrSJajeW7P/MLL8gipz0Z3PkT3eUTHnO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXq2qH%2FbtrSJajeW7P%2FMLL8gipz0Z3PkT3eUTHnO1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;450&quot; height=&quot;338&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우수상 시상 전에 깜짝 게릴라 어워즈를 진행했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;'재가 제일 빨리 제출했상', 'API에 퐁당 빠졌상', '마케팅은 내가 담당했상'&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;수상 명이 너무 귀여워서 더 기억에 남았습니다.&lt;/span&gt;&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-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;2268&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/buzV19/btrSJyREOF3/8QXrlD8gwUmwq2b8zUYmBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/buzV19/btrSJyREOF3/8QXrlD8gwUmwq2b8zUYmBk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/buzV19/btrSJyREOF3/8QXrlD8gwUmwq2b8zUYmBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbuzV19%2FbtrSJyREOF3%2F8QXrlD8gwUmwq2b8zUYmBk%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;450&quot; height=&quot;253&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;2268&quot;/&gt;&lt;/span&gt;&lt;/figure&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;그동안 고생한 우리 개발 2팀 친구들이랑도 인증샷을 남겼습니다 (●'◡'●)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;API 서포터즈를 통해 개발 지식도 많이 공유하고, 더 친해질 수 있었던 계기가 된 것 같아요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3개월 동안 다들 고생 많았고, 앞으로도 오래오래 친하게 만났으면 좋겠습니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Extracurricular Activies/2022 API MarkectPlace 서포터즈</category>
      <category>apimarketplace</category>
      <category>apl marketplace 글로벌 서포터즈</category>
      <category>appetizer</category>
      <category>대학생 대외활동</category>
      <category>대학생 서포터즈</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/315</guid>
      <comments>https://miinsun.tistory.com/315#entry315comment</comments>
      <pubDate>Sun, 4 Dec 2022 20:02:11 +0900</pubDate>
    </item>
    <item>
      <title>[2022 웨일대학] 내맘대로 꾸며보자! 웨일 커스터마이징  </title>
      <link>https://miinsun.tistory.com/314</link>
      <description>&lt;p data-ke-size=&quot;size14&quot;&gt;매일 열어보는 브라우저, 지겨우신가요?&lt;br&gt;자신만의 개성이 넘쳐나는 브라우저를 원한다면 웨일 브라우저를 추천합니다 :)&lt;br&gt;&lt;br&gt;1. 배경 테마 추가&lt;br&gt;좋아하는 이미지를 메인화면의 배경으로 넣어 나만의 브라우저를 만들 수 있습니다. 우측 하단의 설정 상자를 열어 웨일 기본 테마를 선택할 수도 있고, 내 컴퓨터에서 직접 커스텀 사진을 추가 할 수도 있습니다.&lt;br&gt; &lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;690&quot; data-origin-height=&quot;459&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cBVIrx/btrRjXw8ZwN/hQUqmPKpRYmVhCWJy8Awhk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cBVIrx/btrRjXw8ZwN/hQUqmPKpRYmVhCWJy8Awhk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cBVIrx/btrRjXw8ZwN/hQUqmPKpRYmVhCWJy8Awhk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcBVIrx%2FbtrRjXw8ZwN%2FhQUqmPKpRYmVhCWJy8Awhk%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;690&quot; height=&quot;459&quot; data-origin-width=&quot;690&quot; data-origin-height=&quot;459&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;더 많은 배경 테마를 원한다면 ‘배경 테마 더보기’링크를 클릭해 웨일 스토어로 이동하세요.&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1035&quot; data-origin-height=&quot;611&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHTfb5/btrRhInYmMn/oGi6chtCucZsPl9dZYIPoK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHTfb5/btrRhInYmMn/oGi6chtCucZsPl9dZYIPoK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHTfb5/btrRhInYmMn/oGi6chtCucZsPl9dZYIPoK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHTfb5%2FbtrRhInYmMn%2FoGi6chtCucZsPl9dZYIPoK%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;1035&quot; height=&quot;611&quot; data-origin-width=&quot;1035&quot; data-origin-height=&quot;611&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;저는 웨일에서 제공되는 ‘야코, 아이콩’ 테마를 이용해 메인 화면을 꾸며봤습니다.&lt;br&gt;&lt;br&gt;기본 테마에도 퀄리티 높은 작품들이 많아 따로 사진을 구하는 번거로움이 없었습니다&lt;br&gt;&lt;br&gt;2. 인터페이스, 툴바 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웨일의 인터페이스는 기존 브라우저의 익숙함을 유지하면서도 다채로운 스킨과 유용한 툴바로 웨일만의 개성을 드러냅니다. &lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;796&quot; data-origin-height=&quot;275&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTEILe/btrRhXrA1pu/SAYMNVeOjtBBKLDDiyH0o0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTEILe/btrRhXrA1pu/SAYMNVeOjtBBKLDDiyH0o0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTEILe/btrRhXrA1pu/SAYMNVeOjtBBKLDDiyH0o0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTEILe%2FbtrRhXrA1pu%2FSAYMNVeOjtBBKLDDiyH0o0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;796&quot; height=&quot;275&quot; data-origin-width=&quot;796&quot; data-origin-height=&quot;275&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;저는 ‘슬림 모드’를 활성화해서 더 컴팩트한 브라우저를 만들었습니다&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;798&quot; data-origin-height=&quot;555&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cZgnse/btrRjWZkKES/hiVmhawaQPykSQkm76EHIk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cZgnse/btrRjWZkKES/hiVmhawaQPykSQkm76EHIk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cZgnse/btrRjWZkKES/hiVmhawaQPykSQkm76EHIk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcZgnse%2FbtrRjWZkKES%2FhiVmhawaQPykSQkm76EHIk%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;798&quot; height=&quot;555&quot; data-origin-width=&quot;798&quot; data-origin-height=&quot;555&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;툴바도 자주 쓰는 기능만 입맛에 맞게 남겨뒀습니다.&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1042&quot; data-origin-height=&quot;96&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bc3DZo/btrRhXrBb1M/kv7NluEuNAwD1h7KoE7lU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bc3DZo/btrRhXrBb1M/kv7NluEuNAwD1h7KoE7lU1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bc3DZo/btrRhXrBb1M/kv7NluEuNAwD1h7KoE7lU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbc3DZo%2FbtrRhXrBb1M%2Fkv7NluEuNAwD1h7KoE7lU1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;1042&quot; height=&quot;96&quot; data-origin-width=&quot;1042&quot; data-origin-height=&quot;96&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br&gt;3. 위젯 설정&lt;br&gt;날씨, 미세먼지, 시계, 자주 가는 사이트 등 자주 사용하는 정보 및 기능을 새 탭에 위젯으로 추가했습니다.&lt;br&gt;&lt;br&gt;위젯의 정보는 실시간으로 업데이트되며 새 탭의 활용도를 높여줍니다.&lt;br&gt;&lt;br&gt;위젯은 새 탭 설정 대화 상자의 &lt;b&gt;화면 모드&lt;/b&gt; 탭에서 추가할 수 있습니다. 미니 위젯은 오른쪽 아래에 한 줄로 나열됩니다. 메인 위젯에 따라 선택 가능한 미니 위젯이 조금씩 달라집니다!!&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1018&quot; data-origin-height=&quot;606&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4dY2k/btrRhI9gdYi/OqebxS4KKnVbA8wuB0MYaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4dY2k/btrRhI9gdYi/OqebxS4KKnVbA8wuB0MYaK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4dY2k/btrRhI9gdYi/OqebxS4KKnVbA8wuB0MYaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4dY2k%2FbtrRhI9gdYi%2FOqebxS4KKnVbA8wuB0MYaK%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;1018&quot; height=&quot;606&quot; data-origin-width=&quot;1018&quot; data-origin-height=&quot;606&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;</description>
      <category>Extracurricular Activies/2022 웨일대학</category>
      <category>네이버웨일</category>
      <category>대학생서포터즈</category>
      <category>웨일</category>
      <category>웨일대학</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/314</guid>
      <comments>https://miinsun.tistory.com/314#entry314comment</comments>
      <pubDate>Tue, 15 Nov 2022 23:42:01 +0900</pubDate>
    </item>
    <item>
      <title>인턴 3, 4주차  리뷰</title>
      <link>https://miinsun.tistory.com/313</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;집 와서 자기 전에 마저 공부해야 되는데&amp;hellip; 조금 쉴 겸 그동안의 일들을 기록해 보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dgcf6T/btrOQGeulrl/Y7iCXC7mRst45vmzovFSv1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dgcf6T/btrOQGeulrl/Y7iCXC7mRst45vmzovFSv1/img.jpg&quot; width=&quot;336&quot; height=&quot;336&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dgcf6T/btrOQGeulrl/Y7iCXC7mRst45vmzovFSv1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdgcf6T%2FbtrOQGeulrl%2FY7iCXC7mRst45vmzovFSv1%2Fimg.jpg&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; loading=&quot;lazy&quot; width=&quot;3024&quot; height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnDEXx/btrOQFfwLWL/M6j4CIfKKRXfgT4XyoweOK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnDEXx/btrOQFfwLWL/M6j4CIfKKRXfgT4XyoweOK/img.jpg&quot; width=&quot;351&quot; height=&quot;351&quot; data-origin-width=&quot;2705&quot; data-origin-height=&quot;2705&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot; style=&quot;width: 49.4186%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnDEXx/btrOQFfwLWL/M6j4CIfKKRXfgT4XyoweOK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnDEXx%2FbtrOQFfwLWL%2FM6j4CIfKKRXfgT4XyoweOK%2Fimg.jpg&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; loading=&quot;lazy&quot; width=&quot;2705&quot; height=&quot;2705&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;1, 2주 차는 내내 신입 사원 교육?? 과 같은 걸 들었고 과제는 본격적으로 3주 차부터 시작하게 됐다. 생각했던 거보다 너무 과제 진행도가 더딘 거 같아 걱정됐는데 지금 와서 생각해보니 적응 기간을 여유롭게 주신 거였던 거 같다&amp;hellip;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;기업가치 교육 들으면서 동기분께 받은 레모나. 노린 건 아니었지만 2개의 레모나에 내 심경이 잘 담겨있었다 ㅎㅎ&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;과제에 대해 소개하자면 이기종 DB 간 마이그레이션을 진행하고 데이터를 cmdb에 게더링 하는 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;과제를 진행하며 살면서 처음 들어보는 단어도 많고 관련 자료도 많이 없었기 때문에 과제를 이해하는데만 하루가 꼬박 걸렸다.&lt;br /&gt;&lt;br /&gt;나와 같은 과제를 진행하는 동기분이 계셔서 같이 도우면서 과제를 진행했다. 나는 개발이나 서버 구축 쪽의 경험이 있었고 동기분은 DB 쪽의 경험이 풍부하셨기에 서로 윈윈 하며 과제를 진행할 수 있을 것 같다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;sqlServer에서 mysql로 실시간 마이그레이션을 하려면 먼저 테이블 스키마를 맞춰야 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;microsoft에서 제공하는 sampleDB인 AdventureWorks를 이용했는데, 생각보다 다이어그램도 지저분하고 펑션, 트리거 등 생각해야 될 게 너무 많아 첫 백업조차 쉽지 않았다. &lt;br /&gt;&lt;br /&gt;또, sqlServer에서 지원하는 데이터 타입을 mysql은 지원하지 않는 경우가 있다. pk, fk 제약조건이 있다면 데이터 이관이 더 어려워진다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;다른 날에는 팀장님께서 미팅룸을 잡아주셔서 한 시간 동안 과제 관련 QnA를 해주셨다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이번 인턴을 진행하면서 어려웠던 점이 있다면 우리 팀에서 추구하는 가치는 인턴들이 여러 솔루션을 연구하고 다양한 오류들을 겪으면서 스스로 답을 찾아가기를 원하시는 것 같다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;그래서 절대 먼저 방향을 제시해주시지 않는다. 내가 적극적으로 답을 찾고 방향을 제시해야 그것이 적절한지 그렇지 못한 지, 그 정도를 평가해 주신다. 또, 팀장님께서 내가 너무 길을 못 찾고 헤매고 있을 때는 다른 방법을 제시해 주시기도 했다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이번 미팅을 통해 배정된 과제에 정답이 없다는 것을 깨달았다. 내가 직접 찾아보고 연구하고 옳다고 생각하는 방향으로 과제를 진행하면 될 것 같다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;사실 많이 어렵고 힘들기도 했지만 확실하게 배워갈 수 있는 방법이라고 생각한다. 한 달 전에 나와 비교했을 때도 관련 지식이 상당히 는 것을 체감할 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&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-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b68rIs/btrO6Oh1oee/H15iDT4nkyxLJiEPfVfEf1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b68rIs/btrO6Oh1oee/H15iDT4nkyxLJiEPfVfEf1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b68rIs/btrO6Oh1oee/H15iDT4nkyxLJiEPfVfEf1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb68rIs%2FbtrO6Oh1oee%2FH15iDT4nkyxLJiEPfVfEf1%2Fimg.jpg&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; loading=&quot;lazy&quot; width=&quot;368&quot; height=&quot;491&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;오늘 집 가는 길에 만난 삼색 고양이☺️ 어디선가 삼색 고양이는 행운을 전해준다는 말은 들은 적이 있다. 앞으로 나에게도 행운이 찾아오면 좋겠다. &lt;br /&gt;&lt;br /&gt;그럼 오늘은 여기까지~~ 마저 mysql을 공부하러 가보자구!!&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;position: absolute;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Extracurricular Activies/2022 인턴</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/313</guid>
      <comments>https://miinsun.tistory.com/313#entry313comment</comments>
      <pubDate>Fri, 11 Nov 2022 22:10:59 +0900</pubDate>
    </item>
    <item>
      <title>[API 마켓 플레이스 서포터즈] 라이디(LieDe) 프로젝트 개발 과정_2</title>
      <link>https://miinsun.tistory.com/312</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;라이디 프로젝트의 마지막 개발 일지를 시작해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저, 이번 달에 프로토타입을 완성하고 시연영상도 만들어야됐기 때문에.. ㅠ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;11월 2째주까지 그동안 기획했던 모든 프로젝트 기능을 완성해야 됐다.&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 주에 나는 상세 결과 창을 완성한는걸 목표로 잡았다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1171&quot; data-origin-height=&quot;345&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ckz7pa/btrQ0wmTF62/OEudOSkJMPbNTHIJiFzq1K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ckz7pa/btrQ0wmTF62/OEudOSkJMPbNTHIJiFzq1K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ckz7pa/btrQ0wmTF62/OEudOSkJMPbNTHIJiFzq1K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fckz7pa%2FbtrQ0wmTF62%2FOEudOSkJMPbNTHIJiFzq1K%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;1171&quot; height=&quot;345&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1171&quot; data-origin-height=&quot;345&quot;/&gt;&lt;/span&gt;&lt;/figure&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;BPM 표준 편차를 구해, 평균 심박 수를 기준으로 이상 심박을 구해 사용자의 거짓말 유무를 판단하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;완성된 화면은 다음과 같다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;2997&quot; data-origin-height=&quot;1787&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/w9D41/btrQYX68D24/PXG5m1XXLv7QeKSMhdPpuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/w9D41/btrQYX68D24/PXG5m1XXLv7QeKSMhdPpuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/w9D41/btrQYX68D24/PXG5m1XXLv7QeKSMhdPpuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fw9D41%2FbtrQYX68D24%2FPXG5m1XXLv7QeKSMhdPpuK%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;2997&quot; height=&quot;1787&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;2997&quot; data-origin-height=&quot;1787&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시계열 그래프 같은 경우는 자바스크립트 highcharts를 이용해서 그렸다. 관련해서 찾아보면 메뉴얼이랑 예제가 잘돼있어금방 적용할 수 있었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1156&quot; data-origin-height=&quot;543&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qzp9e/btrQ0X5x3OS/V7zCKdbsUKpWFAc2JSkYv1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qzp9e/btrQ0X5x3OS/V7zCKdbsUKpWFAc2JSkYv1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qzp9e/btrQ0X5x3OS/V7zCKdbsUKpWFAc2JSkYv1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fqzp9e%2FbtrQ0X5x3OS%2FV7zCKdbsUKpWFAc2JSkYv1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;598&quot; height=&quot;281&quot; data-origin-width=&quot;1156&quot; data-origin-height=&quot;543&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;figure id=&quot;og_1668171485334&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;Interactive javascript charts library&quot; data-og-description=&quot;We make it easy for developers to create charts for web and mobile platforms. For Javascript, Angular, React, VueJS, iOS, R, .NET, Python, and more.&quot; data-og-host=&quot;www.highcharts.com&quot; data-og-source-url=&quot;https://www.highcharts.com/&quot; data-og-url=&quot;https://www.highcharts.com/blog/homepage21may/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/pzdFA/hyQwAKvdc6/5CP8JXI8dxfK8Mjs7ldvd0/img.png?width=1500&amp;amp;height=864&amp;amp;face=0_0_1500_864,https://scrap.kakaocdn.net/dn/kyyNE/hyQxMCvBng/kkVDxlESjhPHPdn1WYIhcK/img.png?width=760&amp;amp;height=387&amp;amp;face=0_0_760_387&quot;&gt;&lt;a href=&quot;https://www.highcharts.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.highcharts.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/pzdFA/hyQwAKvdc6/5CP8JXI8dxfK8Mjs7ldvd0/img.png?width=1500&amp;amp;height=864&amp;amp;face=0_0_1500_864,https://scrap.kakaocdn.net/dn/kyyNE/hyQxMCvBng/kkVDxlESjhPHPdn1WYIhcK/img.png?width=760&amp;amp;height=387&amp;amp;face=0_0_760_387');&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;Interactive javascript charts library&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;We make it easy for developers to create charts for web and mobile platforms. For Javascript, Angular, React, VueJS, iOS, R, .NET, Python, and more.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.highcharts.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;표준 편차 같은 경우는 d3.js 라이브러리를 이용해 구할 수 있었다. 관련한 정보는 다음 링크에서 확인할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;d3js에 관해 간단하게 설명하면 데이터 중심의 문서 (Data - Driven Documents)의 줄임말로 사용자의 데이터를 반영해 시각화 결과물을 생성해주는 라이브러리이다. 관련한 정보는 다음 링크에서 확인할 수 있다.&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-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1182&quot; data-origin-height=&quot;451&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUREOg/btrQZXrHBrS/BpIQJ5ukpwZNCzRBYXlUn1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUREOg/btrQZXrHBrS/BpIQJ5ukpwZNCzRBYXlUn1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUREOg/btrQZXrHBrS/BpIQJ5ukpwZNCzRBYXlUn1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUREOg%2FbtrQZXrHBrS%2FBpIQJ5ukpwZNCzRBYXlUn1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;1182&quot; height=&quot;451&quot; data-origin-width=&quot;1182&quot; data-origin-height=&quot;451&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;figure id=&quot;og_1668171556496&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;D3.js - Data-Driven Documents&quot; data-og-description=&quot;D3 is a JavaScript library for visualizing data with HTML, SVG, and CSS.&quot; data-og-host=&quot;d3js.org&quot; data-og-source-url=&quot;https://d3js.org/&quot; data-og-url=&quot;https://d3js.org/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cRiaz1/hyQwAKvfoa/rGSzm6EkGA37LAldq0kyNK/img.png?width=560&amp;amp;height=295&amp;amp;face=0_0_560_295,https://scrap.kakaocdn.net/dn/cz3eP3/hyQwJtRLTf/YuXLCFpYMpXxz7m6t5ZJO0/img.png?width=560&amp;amp;height=295&amp;amp;face=0_0_560_295&quot;&gt;&lt;a href=&quot;https://d3js.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://d3js.org/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cRiaz1/hyQwAKvfoa/rGSzm6EkGA37LAldq0kyNK/img.png?width=560&amp;amp;height=295&amp;amp;face=0_0_560_295,https://scrap.kakaocdn.net/dn/cz3eP3/hyQwJtRLTf/YuXLCFpYMpXxz7m6t5ZJO0/img.png?width=560&amp;amp;height=295&amp;amp;face=0_0_560_295');&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;D3.js - Data-Driven Documents&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;D3 is a JavaScript library for visualizing data with HTML, SVG, and CSS.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;d3js.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발과 관련된 디테일한 리뷰는 다음에 기회가 되면 마저 작성해야겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최종 발표까지 남은 시간동안은 브이로그를 제작해야 될 것 같다. 그동안 차근차근 모아둔 영상들을 활용해서 브이로그 영상을 만들 예정이다~ 편집 관련해서 자료를 더 찾아봐야지ㅠ&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;1717&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IZdQU/btrQ0w1t5Vp/kVCkuUNMpjsLOU7QM1MEf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IZdQU/btrQ0w1t5Vp/kVCkuUNMpjsLOU7QM1MEf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IZdQU/btrQ0w1t5Vp/kVCkuUNMpjsLOU7QM1MEf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIZdQU%2FbtrQ0w1t5Vp%2FkVCkuUNMpjsLOU7QM1MEf1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;241&quot; height=&quot;431&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;1717&quot;/&gt;&lt;/span&gt;&lt;/figure&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;이제 진짜 서포터즈도 얼마 남지 않았다ㅠ 에피소드팀 마지막까지 화이팅하자!! 아자아자 화이팅~~&lt;/p&gt;</description>
      <category>Extracurricular Activies/2022 API MarkectPlace 서포터즈</category>
      <category>api market place</category>
      <category>API MarketPlace 글로벌 서포터즈</category>
      <category>API 마켓플레이스</category>
      <category>appetizer</category>
      <category>Naver Cloud</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/312</guid>
      <comments>https://miinsun.tistory.com/312#entry312comment</comments>
      <pubDate>Fri, 11 Nov 2022 22:07:55 +0900</pubDate>
    </item>
    <item>
      <title>[API 마켓 플레이스 서포터즈] 라이디(LieDe) 프로젝트 개발 과정</title>
      <link>https://miinsun.tistory.com/311</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이제 프로젝트 최종 시연까지 정말 얼마남지 않았다! 이번 달은 중간 고사 기간과 겹쳐 유독 많이 바빴었다. 때문에 사실 개발 보다는 앞으로의 계획이나 기획 위주의 회의를 진행했었는데... 한번 라이디의 10월 한달간의 활동 과정을 복기해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저, 중간 프로토타입 시연 영상 기반으로 스마트디아그노시스 담당자님께 피드백 사항을 받을 수 있었다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;1. 기존 시연영상의 시작 버튼을 눌렀을 때 촬영 영상 비율이 깨지는 부분&lt;br /&gt;- 시작 전 태그 와 태그의 크기 설정이 달라서 비율이 깨집니다. 설정으로 css 두 요소의 크기와 비율을 통일하는게 좋을 듯 합니다.&lt;br /&gt;&lt;br /&gt;2. 측정중 눈 위치에 표시되는 UI가 너무 큽니다.&lt;br /&gt;- 자바스크립트 코드 내에 눈 위치에 그려지는 원이 크기를 조절하는 코드가 있습니다. &lt;br /&gt;함수 위치 : draw_eyeTracker()&lt;br /&gt;&lt;br /&gt;3. 측정 중에 측정 중임을 관리자 콘솔을 열어서 표현하는 것은 사용자 입장에선 어려울거 같습니다.&lt;br /&gt;- 측정 중임을 표시하는 현재 진행 바 또는 (% ) 초 나 콘솔에 출력되는 일부 수치 값들을 보여주면 좋 을 듯 합니다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무래도 우리 프로젝트의 대부분이 측정 기능에 비중이 크기에 관련해서 측정 화면에 대한 피드백 위주로 받은 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;다음과 같이 &lt;/span&gt;vlog와 시연영상관련 세부 안내를 받을 수 있엇는데, 요즘 부쩍 바빠진 시기였기에 살짝 부담스러운 감이 있었지만... 그래도 힘내서 해봐야겠다....&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;영상을 두개나 만들어야하니깐 남은 기간 동안영상 편집 관련 기술도 좀 익혀둬야 겠다. 개발분야는 개발만 하면 안될까요,,, ㅠㅠ&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPlMNM/btrPN8aFxVa/dxiPVObvmCbdyfYLBdguuk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPlMNM/btrPN8aFxVa/dxiPVObvmCbdyfYLBdguuk/img.png&quot; data-origin-width=&quot;665&quot; data-origin-height=&quot;911&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.4998%; margin-right: 10px;&quot; data-widthpercent=&quot;50.08&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPlMNM/btrPN8aFxVa/dxiPVObvmCbdyfYLBdguuk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPlMNM%2FbtrPN8aFxVa%2FdxiPVObvmCbdyfYLBdguuk%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;665&quot; height=&quot;911&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJK4h1/btrPOMYVm0x/7RATMpNVTxL3fK3hq3dSI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJK4h1/btrPOMYVm0x/7RATMpNVTxL3fK3hq3dSI1/img.png&quot; data-origin-width=&quot;665&quot; data-origin-height=&quot;914&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.3374%;&quot; data-widthpercent=&quot;49.92&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJK4h1/btrPOMYVm0x/7RATMpNVTxL3fK3hq3dSI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJK4h1%2FbtrPOMYVm0x%2F7RATMpNVTxL3fK3hq3dSI1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;665&quot; height=&quot;914&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&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;이번주 일요일에는 사무국에서 지원받은 스타벅스 기프티콘으로 팀원들과 오프라인 회의를 진행할 예정이다. 스타벅스에서 토마토바질베이글 먹을 생각에 벌써부터 신난다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저번 회의 때 머신러닝을 위한 소스를 자체적으로 제작하기로 했는데, 아마 이번 회의는 머신러닝 제작과 vlog 제작 관련 회의가 될 것 같다. 힘내서 vlog 기획서 작성해봐야 겠다.&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>Extracurricular Activies/2022 API MarkectPlace 서포터즈</category>
      <category>api market place</category>
      <category>API MarketPlace 글로벌 서포터즈</category>
      <category>API 마켓플레이스</category>
      <category>appetizer</category>
      <category>Naver Cloud</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/311</guid>
      <comments>https://miinsun.tistory.com/311#entry311comment</comments>
      <pubDate>Fri, 28 Oct 2022 16:15:08 +0900</pubDate>
    </item>
    <item>
      <title>[API 마켓 플레이스 서포터즈] 라이디(LieDe) 프로젝트 개발 / 시연 영상 제작기</title>
      <link>https://miinsun.tistory.com/310</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이번 2차 미션은 API 개발 중간 시연 영상 제작과 기업 개발자와의 인터뷰를 진행하는 것이다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 글은 지난 한달동안 진행됐던 사항들에 대해 기록하기 위한 포스팅이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저, 팀 프로젝트 관련으로는...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본격적인 개발에 앞서 일주일에 한번 씩 일요일마다 정기 회의를 갖기로 했다. 개발을 진행하며 각자 담당 업무를 정하고 앞으로 해야 될 일에 대해 체계적으로 관리하고자 했다. 첫 주 회의의 과제는 기존에 만들었던 피그마 UI 디자인을 바탕으로 동적 기능이 없는 정적 웹 페이지를 각자 만드는 것이였다.&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-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1250&quot; data-origin-height=&quot;911&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uW642/btrOtF0ldx9/obhYl9Nq5BbixsbjKtksjK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uW642/btrOtF0ldx9/obhYl9Nq5BbixsbjKtksjK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uW642/btrOtF0ldx9/obhYl9Nq5BbixsbjKtksjK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuW642%2FbtrOtF0ldx9%2FobhYl9Nq5BbixsbjKtksjK%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;484&quot; height=&quot;353&quot; data-origin-width=&quot;1250&quot; data-origin-height=&quot;911&quot;/&gt;&lt;/span&gt;&lt;/figure&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;깃 허브에서는 이슈를 등록하고 역할을 할당해서 팀원들이 어떤 일을 진행하고 있는지 쉽게 파악할 수 있었다. 각자 할 일을 구체적으로 적어두고 얼만큼 진행됐는지 상황을 공유했다. 팀원들과 나 모두 바쁜 관계로 코드 리뷰는 제대로 진행되지 못했지만 서로 궁금한 점이 생기면 메신저로 소통하며 그때그때 궁금증을 해소 할 수 있었다. 2차 미션 마감까지 카디뷰 API를 주고 받는 것까지 성공할 수 있었다. 다음 최종 발표 전까지는 머신러닝을 이용해 거짓말 판별 기준을 정하고, 프로젝트에 적용 시킬 수 있도록 할 것이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOYVe5/btrOqANhduC/rEM2CYWGcXdIdNEwKHb04k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOYVe5/btrOqANhduC/rEM2CYWGcXdIdNEwKHb04k/img.png&quot; data-origin-width=&quot;4064&quot; data-origin-height=&quot;2334&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOYVe5/btrOqANhduC/rEM2CYWGcXdIdNEwKHb04k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOYVe5%2FbtrOqANhduC%2FrEM2CYWGcXdIdNEwKHb04k%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;4064&quot; height=&quot;2334&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IWZDs/btrOsdDf5ES/vilJQoK2NkS92Yx4Sqd5mK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IWZDs/btrOsdDf5ES/vilJQoK2NkS92Yx4Sqd5mK/img.png&quot; data-origin-width=&quot;4064&quot; data-origin-height=&quot;2334&quot; data-is-animation=&quot;false&quot; width=&quot;562&quot; height=&quot;323&quot; data-widthpercent=&quot;50&quot; style=&quot;width: 49.4186%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IWZDs/btrOsdDf5ES/vilJQoK2NkS92Yx4Sqd5mK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIWZDs%2FbtrOsdDf5ES%2FvilJQoK2NkS92Yx4Sqd5mK%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;4064&quot; height=&quot;2334&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 달에는 '스마트디아그노시스'기업에 방문해 개발자와의 인터뷰를 진행하기도 했다. 인턴 첫날과 인터뷰 일정이 겹쳐 나는 아쉽게도 참여하지 못했다... 그대신 인터뷰 사전 질문지를 미리 준비해 팀원들에게 조금이라도 도움을 주기 위해 노력했다ㅠ 천사같은 팀원들이 녹음본을 공유해줘서 그동안 궁금했던 카디뷰 API와 스마트디아그노시스 라는 회사에 대해 많이 알아갈 수 있던 시간이였다. 인터뷰에 대한 더 자세한 리뷰가 궁금하다면 아래의 게시글을 확인하면 된다!&lt;/p&gt;
&lt;figure id=&quot;og_1665585932144&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;[API 마켓 플레이스 서포터즈] APPETIZER with 스마트 디아그노시스 인터뷰~☺️&quot; data-og-description=&quot;안녕하세요. API 마켓 플레이스 개발 2팀 서포터즈 윤민선입니다! 이번 API마켓 플레이스 서포터즈의 미션은 APPETIZER에 입점된 국내 API 기업을 찾아가 해당 기업 개발자와 인터뷰를 진행하고 인터&quot; data-og-host=&quot;miinsun.tistory.com&quot; data-og-source-url=&quot;https://miinsun.tistory.com/308?category=959670&quot; data-og-url=&quot;https://miinsun.tistory.com/308&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/FWXHi/hyP75cfWBO/2POdqhHpU6WIdzt19olle0/img.png?width=662&amp;amp;height=541&amp;amp;face=0_0_662_541,https://scrap.kakaocdn.net/dn/jEPMQ/hyP72miMxc/aMN0FtqEW7uTmKQqkffcg0/img.png?width=662&amp;amp;height=541&amp;amp;face=0_0_662_541,https://scrap.kakaocdn.net/dn/J74xh/hyP78z2ykY/mI9Gi5AjQ8KZfoCkC2km4K/img.jpg?width=2000&amp;amp;height=2000&amp;amp;face=481_328_827_674&quot;&gt;&lt;a href=&quot;https://miinsun.tistory.com/308?category=959670&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://miinsun.tistory.com/308?category=959670&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/FWXHi/hyP75cfWBO/2POdqhHpU6WIdzt19olle0/img.png?width=662&amp;amp;height=541&amp;amp;face=0_0_662_541,https://scrap.kakaocdn.net/dn/jEPMQ/hyP72miMxc/aMN0FtqEW7uTmKQqkffcg0/img.png?width=662&amp;amp;height=541&amp;amp;face=0_0_662_541,https://scrap.kakaocdn.net/dn/J74xh/hyP78z2ykY/mI9Gi5AjQ8KZfoCkC2km4K/img.jpg?width=2000&amp;amp;height=2000&amp;amp;face=481_328_827_674');&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;[API 마켓 플레이스 서포터즈] APPETIZER with 스마트 디아그노시스 인터뷰~☺️&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요. API 마켓 플레이스 개발 2팀 서포터즈 윤민선입니다! 이번 API마켓 플레이스 서포터즈의 미션은 APPETIZER에 입점된 국내 API 기업을 찾아가 해당 기업 개발자와 인터뷰를 진행하고 인터&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;miinsun.tistory.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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음으로 AI더빙을 이용해 영상을 편집해 봤다. 타입캐스트에서 더빙 파일을 만들고 영상 편집 프로그램에 자막과 더빙이 어울러지도록 편집했다. 무료 프로그램을 이용하다보니 워터마크가 너무 크게 박혀서 당황했다... 한시간동안 열심히 편집해서 만들었는데... 속상할 따름이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kJJ3M/btrOqKhMhCL/Vos0SYktGfvnJy97eEbSkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kJJ3M/btrOqKhMhCL/Vos0SYktGfvnJy97eEbSkK/img.png&quot; data-origin-width=&quot;1137&quot; data-origin-height=&quot;873&quot; data-is-animation=&quot;false&quot; style=&quot;width: 41.894%; margin-right: 10px;&quot; data-widthpercent=&quot;42.39&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kJJ3M/btrOqKhMhCL/Vos0SYktGfvnJy97eEbSkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkJJ3M%2FbtrOqKhMhCL%2FVos0SYktGfvnJy97eEbSkK%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;1137&quot; height=&quot;873&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FbmGd/btrOtFMOnLF/vGJIoeOLm5minOiUXkN9V1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FbmGd/btrOtFMOnLF/vGJIoeOLm5minOiUXkN9V1/img.png&quot; data-origin-width=&quot;3976&quot; data-origin-height=&quot;2246&quot; data-is-animation=&quot;false&quot; style=&quot;width: 56.9432%;&quot; data-widthpercent=&quot;57.61&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FbmGd/btrOtFMOnLF/vGJIoeOLm5minOiUXkN9V1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFbmGd%2FbtrOtFMOnLF%2FvGJIoeOLm5minOiUXkN9V1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;3976&quot; height=&quot;2246&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&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;인턴이랑 서포터즈를 병행하며 프로젝트 개발하느라 요새 정신이 없다ㅠㅠ.. 그래도 정신 바짝 차리고 모든 일정을 소화할 수 있도록 해야겠다. 에피소드 팀 너무너무 고생많고 앞으로 조금 남았으니깐 조그만 더 힘내자!!!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;474&quot; data-origin-height=&quot;367&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFtQ9b/btrOrS0tzCU/5feUgmbaI7u5bQovWLES40/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFtQ9b/btrOrS0tzCU/5feUgmbaI7u5bQovWLES40/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFtQ9b/btrOrS0tzCU/5feUgmbaI7u5bQovWLES40/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFtQ9b%2FbtrOrS0tzCU%2F5feUgmbaI7u5bQovWLES40%2Fimg.jpg&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; loading=&quot;lazy&quot; width=&quot;474&quot; height=&quot;367&quot; data-origin-width=&quot;474&quot; data-origin-height=&quot;367&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Extracurricular Activies/2022 API MarkectPlace 서포터즈</category>
      <category>api market place</category>
      <category>API MarketPlace 서포터즈</category>
      <category>API마켓플레이스</category>
      <category>appetizer</category>
      <category>Naver Cloud</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/310</guid>
      <comments>https://miinsun.tistory.com/310#entry310comment</comments>
      <pubDate>Thu, 13 Oct 2022 00:00:42 +0900</pubDate>
    </item>
    <item>
      <title>인턴 2주차 리뷰</title>
      <link>https://miinsun.tistory.com/309</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cc5a9w/btrNJA6TeUZ/hHFddF6fyL5Q7wl6H3xGpK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cc5a9w/btrNJA6TeUZ/hHFddF6fyL5Q7wl6H3xGpK/img.jpg&quot; data-origin-width=&quot;1512&quot; data-origin-height=&quot;1512&quot; data-is-animation=&quot;false&quot; width=&quot;460&quot; height=&quot;460&quot; data-widthpercent=&quot;50&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cc5a9w/btrNJA6TeUZ/hHFddF6fyL5Q7wl6H3xGpK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcc5a9w%2FbtrNJA6TeUZ%2FhHFddF6fyL5Q7wl6H3xGpK%2Fimg.jpg&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; loading=&quot;lazy&quot; width=&quot;1512&quot; height=&quot;1512&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uXprm/btrNEvSEiWw/2KfLiJQBNAlbB9yROBLTrK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uXprm/btrNEvSEiWw/2KfLiJQBNAlbB9yROBLTrK/img.jpg&quot; width=&quot;509&quot; height=&quot;509&quot; data-origin-width=&quot;1512&quot; data-origin-height=&quot;1512&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uXprm/btrNEvSEiWw/2KfLiJQBNAlbB9yROBLTrK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuXprm%2FbtrNEvSEiWw%2F2KfLiJQBNAlbB9yROBLTrK%2Fimg.jpg&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; loading=&quot;lazy&quot; width=&quot;1512&quot; height=&quot;1512&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;인턴 2주 차도 맛있게 먹었던 점심으로 시작~ 점 점 살이 붙는 게 느껴진다ㅠ 앞으로는 회사 다녀와서 간단하게 운동이라도 해야 할 거 같다. 이번 주는 목요일, 금요일 강의가 있어서 사실상 공부할 수 있는 거는 3일밖에 없었다. 전에 sqlServer의 아키텍처와 백업 전략에 대한 스터디를 진행했는데, 이번에는 Product별, 버전 별로 각기 다른 특징에 대해 정리했다. 특히 MySQL 같은 경우 5.7에서 8.0으로 한 번에 버전을 업그레이드 한 만큼 버전 간에 차이가 크다는 사실을 알게 됐다. &lt;br /&gt;&lt;br /&gt;다음에 기회가 되면 블로그에 옮겨적어야겠다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cseM7y/btrNDUE1ld0/5K7bDP7QtUkYihMwjBOenk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cseM7y/btrNDUE1ld0/5K7bDP7QtUkYihMwjBOenk/img.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot; data-is-animation=&quot;false&quot; width=&quot;470&quot; height=&quot;470&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cseM7y/btrNDUE1ld0/5K7bDP7QtUkYihMwjBOenk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcseM7y%2FbtrNDUE1ld0%2F5K7bDP7QtUkYihMwjBOenk%2Fimg.jpg&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; loading=&quot;lazy&quot; width=&quot;3024&quot; height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eIfWn0/btrNIJv4WcE/xWiBsekLtDzKCQAl0eSqZK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eIfWn0/btrNIJv4WcE/xWiBsekLtDzKCQAl0eSqZK/img.jpg&quot; width=&quot;455&quot; height=&quot;455&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eIfWn0/btrNIJv4WcE/xWiBsekLtDzKCQAl0eSqZK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeIfWn0%2FbtrNIJv4WcE%2FxWiBsekLtDzKCQAl0eSqZK%2Fimg.jpg&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; loading=&quot;lazy&quot; width=&quot;3024&quot; height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;월요일에 퇴근하고 남자 친구랑 강남에서 만났다. 여긴 다른 팀 동기님께서 추천해주신 나이티지라는 강남 맛집!! 우리는 치즈 온 더 치킨이랑 해산물 리소토를 먹었다. 장작 치킨과 피자의 조합이 생각보다 맛있었다. 사실 양이 너무 많아서 먹기 힘들었는데 다음에 올 때는 메뉴 한 개만 시켜야 될 것 같다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1374&quot; data-origin-height=&quot;1215&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bni6YO/btrNw9DjSPs/NZZxsWCsm5g2hyKDZlfKV1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bni6YO/btrNw9DjSPs/NZZxsWCsm5g2hyKDZlfKV1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bni6YO/btrNw9DjSPs/NZZxsWCsm5g2hyKDZlfKV1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbni6YO%2FbtrNw9DjSPs%2FNZZxsWCsm5g2hyKDZlfKV1%2Fimg.jpg&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; loading=&quot;lazy&quot; width=&quot;466&quot; height=&quot;412&quot; data-origin-width=&quot;1374&quot; data-origin-height=&quot;1215&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요즘은 점심 먹고 동기분들과 같이 산책을 나간다. 회사 뒤에 산이 있는데 계절도 가을이니 다음에 한번 가볍게 올라보는 것도 좋을 것 같다.&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-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ncO6Q/btrNGxJrvkw/jbb2dhJwmtPiCPgNAc9hq0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ncO6Q/btrNGxJrvkw/jbb2dhJwmtPiCPgNAc9hq0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ncO6Q/btrNGxJrvkw/jbb2dhJwmtPiCPgNAc9hq0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FncO6Q%2FbtrNGxJrvkw%2Fjbb2dhJwmtPiCPgNAc9hq0%2Fimg.jpg&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; loading=&quot;lazy&quot; width=&quot;460&quot; height=&quot;460&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;이번 주는 내내 약속이 많았구나.. 이건 수요일에 판교에 아는 개발자 언니가 있어서 인턴 합격 축하 기념으로 만났다. 평소에 취업 관련해서 많이 신경 써주고 도움도 많이 줬던 언니라 이번엔 내가 저녁을 사줬다ㅎㅎㅎ 개발자 언니랑 판교에서 만나려니 나도 직장인이 된 거 같아 기분이 묘했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n7RZB/btrNJzUqkiT/KvRRLxuYP2479hTKuTasE1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n7RZB/btrNJzUqkiT/KvRRLxuYP2479hTKuTasE1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n7RZB/btrNJzUqkiT/KvRRLxuYP2479hTKuTasE1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn7RZB%2FbtrNJzUqkiT%2FKvRRLxuYP2479hTKuTasE1%2Fimg.jpg&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; loading=&quot;lazy&quot; width=&quot;460&quot; height=&quot;460&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;목요일, 금요일에는 aws public cloud 교육과 사내 private cloud 교육을 받았다. 목요일 교육은 하루 종일 aws 강사분들이 오셔서 크게 4가지 세션 컴퓨팅, 클라우드, 데이터베이스, 스토리지로 나눠져 있었다. 수업은 실습을 진행하면서 따라갔었는데,, 원래는 aws의 ec2랑 s3만 겨우 이용했지만 이번 실습을 통해 aws의 다양한 서비스를 접할 수 있었다. 끝나고 aws 굿즈 스티커랑 카메라 가리개? 도 선물로 받았다. 이번 주에 배운 내용들을 바탕으로 다음 주에는 aws 과제 환경을 세팅해보도록 해야겠다. 이제 이만 졸리니깐 자러 가야지 (｡ v_v｡)&lt;/p&gt;</description>
      <category>Extracurricular Activies/2022 인턴</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/309</guid>
      <comments>https://miinsun.tistory.com/309#entry309comment</comments>
      <pubDate>Tue, 4 Oct 2022 23:46:30 +0900</pubDate>
    </item>
    <item>
      <title>[API 마켓 플레이스 서포터즈] APPETIZER with 스마트 디아그노시스 인터뷰~☺️</title>
      <link>https://miinsun.tistory.com/308</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요. API 마켓 플레이스 개발 2팀 서포터즈 윤민선입니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 API마켓 플레이스 서포터즈의 미션은 APPETIZER에 입점된 국내 API 기업을 찾아가 해당 기업 개발자와 인터뷰를 진행하고 인터뷰 내용을 바탕으로 인터뷰 기업과 기업 API 소개 포스팅을 진행하는 것입니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&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;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;저는 인턴 첫 출근과 인터뷰일이 겹쳐 아쉽게도 이번 인터뷰에는 참여할 수 없었는데요&lt;span style=&quot;background-color: #ffffff; color: #636363;&quot;&gt;( ᴗ_ᴗ̩̩ )&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;먼저 스마트 디아그노시스 기업에 대해 간단하게 소개해드리자면, 세계 최초 얼굴 인식 및 시선 추적 기반 온라인 비대면 시험 부정행위 자동 감지 솔루션의 개발사이며 국내 시장 검증을 바탕으로 글로벌 시장으로 확장을 도모하고 있는 기업입니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;'스마트 디아그노시스'에 관한 더 자세한 내용은 아래 링크를 통해 확인 가능합니다!!&lt;/p&gt;
&lt;figure id=&quot;og_1664807666863&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;Global Leader of Digital Healthcare Company&quot; data-og-host=&quot;www.sdcor.net&quot; data-og-source-url=&quot;http://www.sdcor.net/&quot; data-og-url=&quot;http://www.sdcor.net/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/4cma3/hyP0Cm5GME/hKQlq8lKh699P7hHlKouQk/img.png?width=535&amp;amp;height=330&amp;amp;face=0_0_535_330,https://scrap.kakaocdn.net/dn/dDzsWo/hyP0w1umPi/kQ1fk9KXgPoG0T5Z4bQe4k/img.jpg?width=1280&amp;amp;height=621&amp;amp;face=982_182_1042_248,https://scrap.kakaocdn.net/dn/wwYFU/hyP0FRD3TW/snnk4mMd7BourN2fU6Fjv1/img.jpg?width=1280&amp;amp;height=609&amp;amp;face=0_0_1280_609&quot;&gt;&lt;a href=&quot;http://www.sdcor.net/&quot; data-source-url=&quot;http://www.sdcor.net/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/4cma3/hyP0Cm5GME/hKQlq8lKh699P7hHlKouQk/img.png?width=535&amp;amp;height=330&amp;amp;face=0_0_535_330,https://scrap.kakaocdn.net/dn/dDzsWo/hyP0w1umPi/kQ1fk9KXgPoG0T5Z4bQe4k/img.jpg?width=1280&amp;amp;height=621&amp;amp;face=982_182_1042_248,https://scrap.kakaocdn.net/dn/wwYFU/hyP0FRD3TW/snnk4mMd7BourN2fU6Fjv1/img.jpg?width=1280&amp;amp;height=609&amp;amp;face=0_0_1280_609');&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;Global Leader of Digital Healthcare Company&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.sdcor.net&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;매니저님께서 제시해주신 3개의 공통 질문과 7개의 팀 별 추가 질문을 미리 준비해, 인터뷰에서 '스마트 디아그노시스'에 관한 더 많은 정보를 얻어 갈 수 있도록 했습니다~&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;662&quot; data-origin-height=&quot;541&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwGleY/btrNAN7eMCH/6GUsqtTRZ4rawkkiAVyLZK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwGleY/btrNAN7eMCH/6GUsqtTRZ4rawkkiAVyLZK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwGleY/btrNAN7eMCH/6GUsqtTRZ4rawkkiAVyLZK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwGleY%2FbtrNAN7eMCH%2F6GUsqtTRZ4rawkkiAVyLZK%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;485&quot; height=&quot;396&quot; data-origin-width=&quot;662&quot; data-origin-height=&quot;541&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래는 팀원들이 스마트 디아그노시스에 방문해 직접 취재한 인터뷰 내용입니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 간단한 회사 소개 부탁드립니다.&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;스마트디아그노시스는 2018년에 설립된 홍채 기반의 생체 정보 측정을 하는 인공 지능 개발 회사입니다. 홍채에 연결되어 있는 자율 신경계를 분석을 해서 연산 처리된 값을 가지고 생체 신호 바이오 리듬을 구하고, 구체적으로 심박수, 심박 변이, 스트레스 지수를 측정합니다.&lt;br /&gt;&lt;br /&gt;기존에 웨어러블, 대표적으로 스마트 워치를 통해 측정할 수 있는 그런 심박수, 심박변이, 스트레스 등을 저희는 비 접촉식으로 홍채의 혈류의 분석을 하는데요. 초기에 건강 이상 상태를 체크를 하기 위해서 설립을 했고요. 그래서 디지털 헬스 케어 분야를 한다고 보시면 되겠습니다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;그 이후에 이제 저희 회사가 발전시켜서 해온 건 얼굴 인식 시선 추적과 같은 인공지능 알고리즘을 개발했고요. 이 알고리즘을 통해서 스마트디아그노시스가 굉장히 시장에서 호응을 받으며 판매하고 있는 제품이 '테스트 위드'라는 솔루션입니다. 이 솔루션은 온라인 시험을 볼 때 부정행위를 방지하는 아이트레킹과 얼굴 인식 기술을 접목시킨 부정방지 솔루션이라고 보시면 될 것 같습니다.&amp;nbsp;&lt;/blockquote&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;b&gt;2. 방금 소개해주신 API의 경쟁사 대비 차별점이나 강점에 대해 소개 부탁드립니다.&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;일단 차별점이라고 할 수 있는 거는...&amp;nbsp; 기존의 생체정보 측정을 하는 방식은 접촉식입니다. 손가락을 예를 들어서 광센서에다가 접촉을 해가지고 빛의 혈류의 흐름을 분석하는 방식이 많이 있을 텐데요. 그거는 사실 사용자들의 입장에서는 좀 불편한 방법이잖아요.&lt;br /&gt;&lt;br /&gt;사실 그래서 비접촉식으로 하는게 이제 가장 큰 장점인데. 저희는 이제 홍채 혈류 흐름 방식을 이용하는데요. 홍채를 왜 굳이 이용하냐면 홍채는 더 다양한 정보를 갖고 있거든요. 홍채는 중추신경과 자율 신경이랑도 연결이 되어 있기 때문에 거기서 나오는 뇌질환과 같은 질병에도 연구가 가능하다는 장점이 있습니다.&lt;/blockquote&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;b&gt;3. API 마켓 플레이스에 입접하신 이유와 향후 목표에 대해서 소개 부탁드립니다.&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;일단 작은 회사는 국내에서도 마케팅을 하기가 어려운데 특히 해외 진출 역량에 대해 더 부족한 부분이 많은데..&lt;br /&gt;&lt;br /&gt;하물며 이제 해외까지 마케일을 하려면 이건 굉장히 더 어려운 상황이잖아요. 그런 의미에서 API 마켓 플레이스 같이 해외 진출을 도와주는 그런 플랫폼이 있다는 걸 알고 신청하였습니다.&lt;/blockquote&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;b&gt;4. 카디뷰API의 개발 계기를 소개 부탁드립니다.&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;처음에는 상명대학교 황민철 교수님이 2010년도부터 개발을 했고 홍채 기반의 생체 정보를 추출하는 것을 저는 2017년까지는 키스트에서 이제 팀장을 하면서 그걸 눈여겨보았습니다.&lt;br /&gt;&lt;br /&gt;그 기술을 이전 받아서 사업화를 해야 되겠다 해서 2018년도에 회사를 창업을 한 거고요. 전형 시식권을 받고 그 이후로 그때는 ir 카메라 적외선 카메라로 개발이 됐었고 원리만 이제 된 거고. 저희 회사에 와서는 rgb 카메라 일반적인 카메라 스마트폰이라든지 웹캠 기반의 솔루션들이 그때부터 나온 거거든요. &lt;br /&gt;&lt;br /&gt;그래서 기술 개발하는 데는 상당한 기간이 걸린 거고 다만 아까도 말씀드린 대로 실제 시장에서 제대로 동작을 하려면 정확도가 굉장히 중요한데 좀 그런 부분에서 베레이션이 좀 있어요. 그래서 더 개발을 해야 될 것 같다해서 시작하게 됐습니다.&lt;/blockquote&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;b&gt;5. '스마트디아그노시스'의 주 타겟층에 대해 소개 부탁드립니다.&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;전반적으로 저희는 B2B예요. 헬스케어 파트너라든지 보험사라든지... &lt;br /&gt;&lt;br /&gt;최근에는 아토피 환자들을 대상으로 하는 앱에서 협력 제안이 들어왔어요. 아토피 환자들이 스트레스가 높다 보니까 스트레스를 좀 측정할 수 있으면 좋겠다. 그 외에도 심리상담회사도 있고 그게 이제 카디뷰의 주요 타겟 고객이라고 보면 될 것 같습니다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;그다음에 이제 카디비g 같은 경우에는 주로 시선 추적을 이용하다 보니, 그거는 말 그대로 지금 현재 시장에서 봤을 때 학생들이 공부를 할 때 얼마나 집중해서 콘텐츠를 보는 지를 분석해서 그거에 유사한 기반의 이제 콘텐츠들을 추천을 해준다든지 이 사람의 학습 성취도를 모니터링한다든지 이런 쪽에 중점을 두고 있습니다.&lt;br /&gt;&lt;br /&gt;보통 lms 시장이 수업을 틀어놓고 얼마나 머물렀는가를 가지고 이걸 들었나, 안 들었나 하는데 실제로 듣진 않잖아요. 실제 상황에서 공부하려는 사람이 어떤 콘텐츠를 좋아하는지를 더 잘 분석해 줄 수 있는 하나의 변수를 더 추가를 할 수 있게 되는 거죠.&lt;br /&gt;&lt;br /&gt;내가 들은 강의뿐만 아니라, 그중에서도 어떤 콘텐츠들을 더 좋아하는지까지도 알 수 있으니까 그런 ai 알고리즘을 더 개발을 하고 있는 상황이고... 타겟 고객은 lms를 운영하는 E-러닝 회사들이라든지 거의 이런 회사라고 보시면 될 것 같습니다.&lt;/blockquote&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;b&gt;6. API 개발 도중 가장 어려웠던 부분에 대해 소개부탁드립니다.&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;일단 인력, 인재들이 많이 필요한데 작은 회사의 특성상 그런 부분이 어려울 때가 있어요.&lt;br /&gt;&lt;br /&gt;그리고 이런 영역은 정확도가 되게 중요한데... 그 정확도가 생각만큼 그렇게 잘 나오진 않아요. 잘 나왔다 안 나왔다 하는 베어레이션이 있는 거예요. 그러다 보니까 이게 의료 영역으로 넘어가려면 결국에는 굉장히 일률적으로 나와야 되거든요. 아직도 극복해야 될 게 많고 정확도를 1%, 2% 올리는 게 그렇게 쉽지가 않은 과정이었는데... 그걸 이제 처음에 80% 나오던걸 90%까지 개선했습니다.&lt;/blockquote&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;b&gt;7. API로 개발된 서비스에 대해 소개 부탁드립니다.&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;일단 홍채 기반의 카디뷰는 원 스톱으로 솔루션이 돼 있어요. 그래서 한번 측정하면은 심박수, 심박변이도, 스트레스까지 어떤 센서 없이 한 번에 분석이 가능합니다. 카티뷰는 기본적으로 비싼 장비가 없어도 사용할 수 있다는 특장점이 있습니다.&lt;br /&gt;&lt;br /&gt;카디뷰G는 서비스를 측면에서 봤을 때는 근로자들의 건강 관리를 쉽게 할 수 있는 거예요. 최근에 lms 회사와 저희가 같이 협력해서 강의를 보지 않으면 강의를 멈추는 기능을 옵션으로 넣었어요. 국비 과정 강의에 이용되는데요... ai 기능이 탑재되고 행동을 추천해 줄 수 있는 그런 애플리케이션 서비스에 이용되고 있습니다.&lt;br /&gt;&lt;br /&gt;테스트 위드는 자동으로 ai가 시험을 볼 때를 감지를 해서 얼굴 인식과 신원 추적을 해 자동으로 컨닝을 할 때 신원을 저장합니다. 순간을 기록하고 자동 저장하는 서비스로 감독관한테 실시간으로 컨닝 여부를 알려주는 서비스를 운영하고 있습니다.&lt;/blockquote&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;b&gt;8. 앞으로 기획, 개발 예정인 프로젝트가 있다면 소개 부탁드립니다.&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;기획 중인 프로젝트는... 아까랑 비슷한데요. 학습자를 관리하는 lms기반 학습 관리 솔루션를 기획하고 있습니다. 자동으로 수강생을 관리할 수 있는... 그래서 어느 정도 학습 관리가 될 수 있게 하는 그런 솔루션을 구상을 하고 있고요.&lt;br /&gt;&lt;br /&gt;그리고 테스트 위드 관점에서 보면 지금 웹만 있는데... 앱도 해야 되고 그렇죠 앱이 일단 해야 되고 다양하게 지금 모바일로만 그냥 감독이 되면 카메라를 앞에 안 켜도 되니까 그런 기능도 추가하고 있는 게 있고... 그렇게 해서 올해까지는 고객들이 요구하는 기능들을 다 웹에 담고 내년에 앱 출시를 하고 공정성을 위한 감독 기능과 자동 저장이라든지... 공정성을 기할 수 있는 그런 솔루션을 앱으로 출시를 하고 생각을 하고 있습니다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금까지 개발 2팀의 생생한 인터뷰 내용 잘 확인하셨나요?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;API 마켓 서포터즈로서 앞으로도 더 유익하고 재밌는 정보들 제공하도록 하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스마트 디아그노시스의 CardiVu를 활용한 저희의 프로젝트가 궁금하시다면, 앞으로도 많은 관심 부탁드립니다!&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>Extracurricular Activies/2022 API MarkectPlace 서포터즈</category>
      <category>api market plaece</category>
      <category>API MarketPlace 글로벌 서포터즈</category>
      <category>API마켓플레이스</category>
      <category>appetizer</category>
      <category>Naver Cloud</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/308</guid>
      <comments>https://miinsun.tistory.com/308#entry308comment</comments>
      <pubDate>Tue, 4 Oct 2022 00:52:32 +0900</pubDate>
    </item>
    <item>
      <title>[2022 웨일대학] 웨안써? 웨일 '다크 모드'의 4가지 활용방법!</title>
      <link>https://miinsun.tistory.com/307</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;001.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Mw3r6/btrNzFUzT8W/EsrttcJNvvoRkmWJ3vbDCK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Mw3r6/btrNzFUzT8W/EsrttcJNvvoRkmWJ3vbDCK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Mw3r6/btrNzFUzT8W/EsrttcJNvvoRkmWJ3vbDCK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMw3r6%2FbtrNzFUzT8W%2FEsrttcJNvvoRkmWJ3vbDCK%2Fimg.jpg&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; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;700&quot; data-filename=&quot;001.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요~ 웨일대학 2팀의 개발을 맡은 윤민선입니다. 이번 포스팅은 '웨일의 다크 모드'를 유용하게 사용할 수 있는 4가지 방법에대해 소개해드리겠습니다!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다크모드는 새벽에 코딩하는 올빼미 개발자들에게 없어서는 안되는 기능인데요. 이젠 어두운 환경에서도 편안하게 브라우저를 이용해보세요.&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-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;002.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cmGQQE/btrNu7S5qH7/lXOjsOkHAOs9GnYXbUXq3K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cmGQQE/btrNu7S5qH7/lXOjsOkHAOs9GnYXbUXq3K/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cmGQQE/btrNu7S5qH7/lXOjsOkHAOs9GnYXbUXq3K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcmGQQE%2FbtrNu7S5qH7%2FlXOjsOkHAOs9GnYXbUXq3K%2Fimg.jpg&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; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;700&quot; data-filename=&quot;002.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로플 버튼을 눌러 간편하게 다크 모드를 on/off 해보세요. 웨일 브라우저에서는 순식간에 다크 모드로 전환이 가능합니다~&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-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;003.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcXO9r/btrNwoztAGZ/tWofZ5lzmYlVw5oJPBKQCk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcXO9r/btrNwoztAGZ/tWofZ5lzmYlVw5oJPBKQCk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcXO9r/btrNwoztAGZ/tWofZ5lzmYlVw5oJPBKQCk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcXO9r%2FbtrNwoztAGZ%2FtWofZ5lzmYlVw5oJPBKQCk%2Fimg.jpg&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; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;700&quot; data-filename=&quot;003.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테두리만 어둡게 바뀌는 브라우저는 이제는 안녕~ 웨일 브라우저는 웹 컨텐츠 내용까지 어둡게 바뀝니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹 콘텐츠 다크 모드를 이용해 웹 페이지까지 완전한 다크 모드를 경험해보세요.&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-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;004.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rpXFr/btrNyFgdlv3/Pwqrf8xFY8i79lNY1XN2r1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rpXFr/btrNyFgdlv3/Pwqrf8xFY8i79lNY1XN2r1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rpXFr/btrNyFgdlv3/Pwqrf8xFY8i79lNY1XN2r1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrpXFr%2FbtrNyFgdlv3%2FPwqrf8xFY8i79lNY1XN2r1%2Fimg.jpg&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; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;700&quot; data-filename=&quot;004.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웨일 브라우저에는 내가 필요한 시간대에 자동으로 다크 모드로 전환되는 '시간 설정' 기능이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나의 환경에 최적화된 웨일 브라우저를 경험할 수 있습니다.&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-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;005.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ck9hKZ/btrNzGeTe95/ldkBUY7EHSzNWQS28uA5w1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ck9hKZ/btrNzGeTe95/ldkBUY7EHSzNWQS28uA5w1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ck9hKZ/btrNzGeTe95/ldkBUY7EHSzNWQS28uA5w1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fck9hKZ%2FbtrNzGeTe95%2FldkBUY7EHSzNWQS28uA5w1%2Fimg.jpg&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; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;700&quot; data-filename=&quot;005.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쇼핑몰, 뉴스 기사 사이트같이 다크 모드를 사용하면 컨텐츠에 집중 할 수 없는 경우에는 '특정 사이트 제외'기능을 이용해 잠시 다크 모드에서 제외해보세요.&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-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;006.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lsI85/btrNvsik53i/IExvAElilWCmdZTWBMWkf1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lsI85/btrNvsik53i/IExvAElilWCmdZTWBMWkf1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lsI85/btrNvsik53i/IExvAElilWCmdZTWBMWkf1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlsI85%2FbtrNvsik53i%2FIExvAElilWCmdZTWBMWkf1%2Fimg.jpg&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; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;700&quot; data-filename=&quot;006.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나만의 스마트한 브라우저, 지금 네이버 웨일을 만나보세요. 아래 링크를 클릭하면 웨일을 다운받을 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다크모드 외에도 듀얼 탭, 사이드 바 등 웨일만의 다양한 기능들이 기다리고 있습니다.&lt;/p&gt;
&lt;figure id=&quot;og_1664619723163&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;whale.naver.com&quot; data-og-source-url=&quot;https://whale.naver.com/&quot; data-og-url=&quot;https://whale.naver.com/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bdOX8d/hyPXPIdRlg/l2ksDkFPjrdlJtj0xhthpK/img.png?width=1200&amp;amp;height=1200&amp;amp;face=0_0_1200_1200&quot;&gt;&lt;a href=&quot;https://whale.naver.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://whale.naver.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bdOX8d/hyPXPIdRlg/l2ksDkFPjrdlJtj0xhthpK/img.png?width=1200&amp;amp;height=1200&amp;amp;face=0_0_1200_1200');&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;whale.naver.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;</description>
      <category>Extracurricular Activies/2022 웨일대학</category>
      <category>NAVER Whale</category>
      <category>whalecollege</category>
      <category>네이버웨일</category>
      <category>다크 모드</category>
      <category>다크모드</category>
      <category>대학생서포터즈</category>
      <category>웨일</category>
      <category>웨일 대학</category>
      <category>웨일 브라우저</category>
      <category>웨일대학</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/307</guid>
      <comments>https://miinsun.tistory.com/307#entry307comment</comments>
      <pubDate>Sat, 1 Oct 2022 19:24:11 +0900</pubDate>
    </item>
    <item>
      <title>인턴 1주차 리뷰</title>
      <link>https://miinsun.tistory.com/306</link>
      <description>&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;스마일게이트 스토브의 채용 연계형으로 인턴을 시작했다. &lt;br /&gt;&lt;br /&gt;전부터 DB에 관심이 많았어서 DBA 직무로 지원했었고.. 면접은 정말 망쳤어서 사실 기대 안 하고 있었는데, 인턴 합격 전화를 받고 너무 기쁘고 놀라서 소리를 질렀다..ㅎㅎ 입사 전날에는 앞으로의 인턴 생활이 기대돼서 잠도 못 잤다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c3E1gl/btrM6LoqHTf/jAbwFWKFzhmL5YZyvP8KDk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c3E1gl/btrM6LoqHTf/jAbwFWKFzhmL5YZyvP8KDk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c3E1gl/btrM6LoqHTf/jAbwFWKFzhmL5YZyvP8KDk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc3E1gl%2FbtrM6LoqHTf%2FjAbwFWKFzhmL5YZyvP8KDk%2Fimg.jpg&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; loading=&quot;lazy&quot; width=&quot;538&quot; height=&quot;538&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;첫날에는 임시 사원증을 받고 사원증 사진을 찍었다. 나중에 사원증이 발급되면 사내 도서관이랑 카페가 이용 가능하다 &lt;br /&gt;&lt;br /&gt;이후에는 간단한 회사 소개랑 동기들이랑 친해질 수 있는 게임들을 진행했다. 거짓말 맞추기 게임을 했는데 내가 우리 팀의 모든 거짓말을 맞춰서 상품도 받았었다. 오랜 마피아 게임으로 단련된 내 실력이 녹슬지 않았나 보다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1512&quot; data-origin-height=&quot;1512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vhzGE/btrM8l3kZ2A/iS7tRLmXT0rNwsZTXjXfD0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vhzGE/btrM8l3kZ2A/iS7tRLmXT0rNwsZTXjXfD0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vhzGE/btrM8l3kZ2A/iS7tRLmXT0rNwsZTXjXfD0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvhzGE%2FbtrM8l3kZ2A%2FiS7tRLmXT0rNwsZTXjXfD0%2Fimg.jpg&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; loading=&quot;lazy&quot; width=&quot;568&quot; height=&quot;568&quot; data-origin-width=&quot;1512&quot; data-origin-height=&quot;1512&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;인턴 2주 차인 지금에 느낀 점은 스마일게이트는 정말 밥이 너무 잘 나온다는 것이다. 최고의 복지는 돈 다음 밥이지 않을까?&amp;nbsp;&amp;nbsp;아마 앞으로의 인턴 일기도 밥 내용이 반 이상이 아닐까 예상해 본다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mOKyT/btrM8H6ag6b/Il1i15k3oXJ1JlrSrWKBQ1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mOKyT/btrM8H6ag6b/Il1i15k3oXJ1JlrSrWKBQ1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mOKyT/btrM8H6ag6b/Il1i15k3oXJ1JlrSrWKBQ1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmOKyT%2FbtrM8H6ag6b%2FIl1i15k3oXJ1JlrSrWKBQ1%2Fimg.jpg&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; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;500&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;인턴 첫날에 받은 웰컴 키트! 회사 생활에 유용한 정보들이랑 스마일게이트 굿즈?? 들이 있었다. 네이버 웨일에 이어서 맥북에 붙일 스티커 컬렉션이 또 늘었다~&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1512&quot; data-origin-height=&quot;1512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8jTDP/btrM7jLJ9wF/irfskYnSmhmbLKjasFzOO0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8jTDP/btrM7jLJ9wF/irfskYnSmhmbLKjasFzOO0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8jTDP/btrM7jLJ9wF/irfskYnSmhmbLKjasFzOO0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8jTDP%2FbtrM7jLJ9wF%2FirfskYnSmhmbLKjasFzOO0%2Fimg.jpg&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; loading=&quot;lazy&quot; width=&quot;607&quot; height=&quot;607&quot; data-origin-width=&quot;1512&quot; data-origin-height=&quot;1512&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;우리 회사는 감자탕도 나온다.. 헤헤  &lt;br /&gt;&lt;br /&gt;이번 주를 마치며, 아직은 적응기간이라 그런지&amp;nbsp;&amp;nbsp;과제를 진행하지 않아서 그런지 나름 여유 있는 한 주였다. 이번 달에 다른 부서 인턴들이랑도 친해져야지. 한동안은 얼굴에 철판 깔고 말 걸고 다녀야겠다.&lt;/p&gt;</description>
      <category>Extracurricular Activies/2022 인턴</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/306</guid>
      <comments>https://miinsun.tistory.com/306#entry306comment</comments>
      <pubDate>Mon, 26 Sep 2022 23:04:10 +0900</pubDate>
    </item>
    <item>
      <title>[2022 웨일대학] 1차 미션 웨일 확장앱 만들기_2 (코드 리뷰)</title>
      <link>https://miinsun.tistory.com/305</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;'스터디 온' 웨일 확장앱을 개발하며 새로 배운 기술들과 주요 코드들에 대한 리뷰를 정리하는 게시글! 코드에 대한 자세한 설명은 주석을 참고하면 된다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. localStorage를 이용해 데이터를 저장/활용&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;localStorage는 브라우저 세션 간에 저장된 데이터를 서로 공유한다. sessionStorage와 비슷하지만, localStorage는 페이지가 닫혀도 만료되지 않는다. localStorage의 이런 특징을 이용해서, 하루치 목표 달성률과 한달치 목표 달성률을 다음과 같이 저장했다. 당일 날짜를 저장해서 해당날짜가 지나면 하루치 목표 달성률이 초기화되도록 지정했다. (localStorage는 개발자 모드의 Application탭에서 확인 가능)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;765&quot; data-origin-height=&quot;243&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPSPLn/btrMYriVlt1/ov11IBs9CsVTtFcDDPjuE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPSPLn/btrMYriVlt1/ov11IBs9CsVTtFcDDPjuE1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPSPLn/btrMYriVlt1/ov11IBs9CsVTtFcDDPjuE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPSPLn%2FbtrMYriVlt1%2Fov11IBs9CsVTtFcDDPjuE1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;765&quot; height=&quot;243&quot; data-origin-width=&quot;765&quot; data-origin-height=&quot;243&quot;/&gt;&lt;/span&gt;&lt;/figure&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;localStorage의 데이터를 사용하기 위해서 json으로 한번 파싱해줬다.&lt;/p&gt;
&lt;pre id=&quot;code_1664111485405&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// localStorage 데이터 가져오기
var studyOn = JSON.parse(localStorage.getItem(&quot;study-on&quot;));

// today 초기화
studyOn.today.push(
{
    study: 0,
    rest: 0,
    goal: subject.goal,
    name: subject.name
}
)

// localStorage 데이터 저장
localStorage.setItem(&quot;study-on&quot;, JSON.stringify(studyOn));&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. 카운트 시작/종료 (타이머 만들기)&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;423&quot; data-origin-height=&quot;603&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tvep6/btrMULXc3yS/KyuFKSoODhSpKinp8xRpZ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tvep6/btrMULXc3yS/KyuFKSoODhSpKinp8xRpZ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tvep6/btrMULXc3yS/KyuFKSoODhSpKinp8xRpZ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ftvep6%2FbtrMULXc3yS%2FKyuFKSoODhSpKinp8xRpZ0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;261&quot; height=&quot;372&quot; data-origin-width=&quot;423&quot; data-origin-height=&quot;603&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공부를 진행하는 도중에는 타이머가 목표 시간까지 진행되고, 원이 조금씩 채워진다. 타이머는 javaScript의 setInterval()을 이용해 1초에 한번씩 작업을 진행하도록 했다. 뒤의 원이 진행시간/목표시간 비율에 맞게 채워지도록 계산을 매초 계산을 해줬다. 타이머가 목표시간에 도달하면 타이머를 종료하고, noti를 보내준다.&lt;/p&gt;
&lt;pre id=&quot;code_1664111595265&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function startTimer(sub) {
  cnt = sub.study;
  timer = setInterval(function () {
    document.getElementById(&quot;sub&quot;).innerHTML = printTime(cnt++);

    // 원 크기 키우기
    var c1 = document.getElementById('circle_progress');
    var c1Size = (cnt / sub.goal) * 158;	// (현재 진행 시간 / 목표 시간)
    c1.style.strokeDasharray = c1Size + &quot; 158&quot;;

    // 성공적으로 마쳤을 시, 
    if (cnt &amp;gt; sub.goal) {
      // 버튼 숨기기
      document.getElementById('stop-btn').style.display = &quot;none&quot;;
      document.getElementById('rest-btn').style.display = &quot;none&quot;;
      document.getElementById('end-btn').style.display = &quot;flex&quot;;

      // notification 보내기
      notify();

	  // 타이머 종료
 	  clearInterval(timer);
    }
  }, 1000);
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;3. 달력 (datePicker)&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;423&quot; data-origin-height=&quot;603&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IsE2x/btrMYr4g4Xx/73UuUXxQU1LojxN8pGJ1EK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IsE2x/btrMYr4g4Xx/73UuUXxQU1LojxN8pGJ1EK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IsE2x/btrMYr4g4Xx/73UuUXxQU1LojxN8pGJ1EK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIsE2x%2FbtrMYr4g4Xx%2F73UuUXxQU1LojxN8pGJ1EK%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;310&quot; height=&quot;442&quot; data-origin-width=&quot;423&quot; data-origin-height=&quot;603&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;date를 선택할 수 있는 달력을 만들고, 달력의 날짜를 누르면 이벤트가 발생하도록 했다. 달력의 요일을 클릭하면 해당일의 진행했던 공부시간과 휴식시간을 볼 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1664112160874&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function showCalendar(month, year) {
    var firstDay = new Date(year, month).getDay();
    var monthString = monthsArr[month];

    table = document.getElementById(&quot;calendar-body&quot;);
    table.innerHTML = &quot;&quot;;
    monthHeader.innerHTML = year + &quot;. &quot; + monthString;

    var date = 1;

    for (var i = 0; i &amp;lt; 6; i++) {
      var row = document.createElement(&quot;tr&quot;);

      for (var j = 0; j &amp;lt; 7; j++) {
        if (i === 0 &amp;amp;&amp;amp; j &amp;lt; firstDay) {
          cell = document.createElement(&quot;td&quot;);
          cellText = document.createTextNode(&quot;&quot;);
          cell.appendChild(cellText);
          row.appendChild(cell);
        } else if (date &amp;gt; daysInMonth(month, year)) {
          break;
        } else {
          cell = document.createElement(&quot;td&quot;);
          cell.setAttribute(&quot;id&quot;, &quot;day-&quot;+date);
          cell.setAttribute(&quot;data-date&quot;, date);
          cell.setAttribute(&quot;data-month&quot;, month + 1);
          cell.setAttribute(&quot;data-year&quot;, year);
          cell.setAttribute(&quot;data-day&quot;, j);
          cell.setAttribute(&quot;data-month-name&quot;, months[month]);
          cell.className = &quot;date-picker&quot;;
          if (date &amp;gt; 10) {
            cell.innerHTML = &quot;&amp;lt;span&amp;gt;&quot; + date + &quot;&amp;lt;/span&amp;gt;&quot;;
          }
          else {
            cell.innerHTML = &quot;&amp;lt;span&amp;gt;&amp;amp;nbsp;&quot; + date + &quot;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&quot;;
          }

          // 날짜 클릭 시
          cell.onclick = function (event) {
            picked.style.display = &quot;none&quot;;
            var dates = document.querySelectorAll(&quot;.date-picker&quot;);
            var currentTarget = event.currentTarget;
            var date = currentTarget.dataset.date.padStart(2, '0');
            var month = currentTarget.dataset.month - 1;
            var day = parseInt(currentTarget.dataset.day);

            for (var i = 0; i &amp;lt; dates.length; i++) {
              dates[i].classList.remove(&quot;selected&quot;);
            }
            currentTarget.classList.add(&quot;selected&quot;);

            // date 클릭 시, 출력
            datePicked.innerHTML = monthsArr[month] + &quot;.&quot; + date + &quot; &quot; + &quot;(&quot; + getTodayLabel(day) + &quot;)&quot;;
            var pickedDay = studyOn.calendar.find(x =&amp;gt; x.day == date);

            // 공부 시작이 없을 시
            if (pickedDay == null) {
              document.getElementById('picked-null').style.display=&quot;block&quot;;
            }
            else {
              picked.style.display = &quot;block&quot;;
              document.getElementById('picked-null').style.display=&quot;none&quot;;
              document.getElementById('study-time').innerHTML = printTime(pickedDay.study);
              document.getElementById('rest-time').innerHTML = printTime(pickedDay.rest);
            }
          }

          if (date === today.getDate() &amp;amp;&amp;amp; year === today.getFullYear() &amp;amp;&amp;amp; month === today.getMonth()) {
            cell.className = &quot;date-picker selected&quot;;
          }

          row.appendChild(cell);
          date++;
        }
      }

      table.appendChild(row);
    }
  }
  
  function daysInMonth(month, year) {
    return 32 - new Date(year, month, 32).getDate();
  }&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;4. 목표 달성률 시각화(도넛 그래프, 프로그레스바)&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;418&quot; data-origin-height=&quot;487&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zlLId/btrMZEWDROb/99U75NuGK2xKKkET3PwmI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zlLId/btrMZEWDROb/99U75NuGK2xKKkET3PwmI1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zlLId/btrMZEWDROb/99U75NuGK2xKKkET3PwmI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzlLId%2FbtrMZEWDROb%2F99U75NuGK2xKKkET3PwmI1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;245&quot; height=&quot;285&quot; data-origin-width=&quot;418&quot; data-origin-height=&quot;487&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도넛 그래프 같은 경우는 공부 시간과 쉬는 시간의 합이 158이 되도록 비율을 만들어줬다. 공부 시간 / (공부 시간 + 쉬는 시간) 이런 식으로 비율을 구하면 된다. 만약 요소가 3개라면 3개의 총합에 대한 비율을 구해주면 된다. 프로그레스 바는 목표시간대비 공부 달성률을 표현한다. 프로그레스 바는 원이 아니기 때문에 100%에 대한 비율을 구해주면 된다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1664112517067&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;div id=&quot;display-wrapper&quot;&amp;gt;
    &amp;lt;div id=&quot;label1&quot;&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;div id=&quot;lable1-name&quot;&amp;gt;열공중&amp;lt;/div&amp;gt;
    &amp;lt;div id=&quot;label2&quot;&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;div id=&quot;lable2-name&quot;&amp;gt;쉬는중&amp;lt;/div&amp;gt;

    &amp;lt;!-- 도넛 그래프 --&amp;gt;
    &amp;lt;svg id=&quot;circle-base&quot; viewBox=&quot;0 0 100 100&quot;&amp;gt;
        &amp;lt;circle id=&quot;c2&quot; r=&quot;25&quot; cx=&quot;50&quot; cy=&quot;50&quot; /&amp;gt;
        &amp;lt;circle id=&quot;c1&quot; r=&quot;25&quot; cx=&quot;50&quot; cy=&quot;50&quot; /&amp;gt;
        &amp;lt;text id=&quot;text&quot; x=&quot;50&quot; y=&quot;50&quot; text-anchor=&quot;middle&quot;&amp;gt;

        &amp;lt;/text&amp;gt;
        &amp;lt;div id=&quot;circle-img&quot;&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div id=&quot;text2&quot;&amp;gt;00:50:00&amp;lt;/div&amp;gt;
    &amp;lt;/svg&amp;gt;
    
    &amp;lt;!-- 프로그레스 바 --&amp;gt;
    &amp;lt;div id=&quot;progressbar-wrapper&quot;&amp;gt;
        &amp;lt;div class=&quot;progress progress-striped&quot;&amp;gt;
            &amp;lt;div id=&quot;progressBar&quot; class=&quot;progress-bar progress-bar-danger&quot; role=&quot;progressbar&quot;
                aria-valuenow=&quot;80&quot; aria-valuemin=&quot;0&quot; aria-valuemax=&quot;100&quot; style=&quot;width: 40%&quot;&amp;gt;
            &amp;lt;/div&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;div id=&quot;percent&quot;&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div id=&quot;text3&quot;&amp;gt;달성률&amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1664112563459&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 원 비율 변경하기
// 공부비율
var c1 = document.getElementById('c1');
var c1Size = (totalStudy / (totalStudy + totalRest)) * 158;
c1.style.strokeDasharray = c1Size + &quot; 158&quot;;

// 쉬는 시간 비율
var c2 = document.getElementById('c2');
var c2Size = c1Size + (totalRest / (totalStudy + totalRest)) * 158;
c2.style.strokeDasharray = c2Size + &quot; 158&quot;;

// 프로그레스바 설정
var progressBar = document.getElementById('progressBar');
progressBar.style.width = (totalStudy / totalGoal) * 100 + &quot;%&quot;;
progressBar.max = totalGoal;

// 프로그레스바 아이콘 설정
var per = document.getElementById('percent');
per.innerHTML = parseInt(totalStudy / totalGoal * 100) + &quot;%&quot;;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;5. 화면 스크린샷 저장(html2canvas)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;확장 앱 같은 경우 외부 라이브러리를 자유롭게 사용하기 어렵기 때문에 html2canvas.min.js를 프로젝트에 추가해 다음과 같이 사용해줬다. document.write로 라이브러리를 import하고, 캡쳐된 이미지 파일에는 오늘의 날짜 + 'studyon'으로 이름을 지정해줬다.&lt;/p&gt;
&lt;pre id=&quot;code_1664113254140&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;document.write('&amp;lt;script src=&quot;../js/html2canvas.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;');

function download() {
  var downBtn = document.getElementById('download-btn');
  downBtn.onclick = function () {
    html2canvas(document.body).then(canvas =&amp;gt; {
      //다운로드 되는 이미지 파일 이름 지정
      saveAs(canvas.toDataURL('image/jpg'), studyOn.date.year + &quot;_&quot; +
        studyOn.date.month + &quot;_&quot; + studyOn.date.day + &quot;_studyon.jpg&quot;); 
    });
  };
}

function saveAs(uri, filename) {
  // 캡처된 파일을 이미지 파일로 내보냄
  var link = document.createElement('a');
  if (typeof link.download === 'string') {
    link.href = uri;
    link.download = filename;
    document.body.appendChild(link);
    link.click();
    document.body.removeChild(link);
  } else {
    window.open(uri);
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;html2canvas는 아래에서 다운로드 가능하다.&lt;/p&gt;
&lt;figure id=&quot;og_1664113143763&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;html2canvas - Screenshots with JavaScript&quot; data-og-description=&quot;Try out html2canvas Test out html2canvas by rendering the viewport from the current page. Capture&quot; data-og-host=&quot;html2canvas.hertzen.com&quot; data-og-source-url=&quot;https://html2canvas.hertzen.com/&quot; data-og-url=&quot;https://html2canvas.hertzen.com/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://html2canvas.hertzen.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://html2canvas.hertzen.com/&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; data-ke-size=&quot;size16&quot;&gt;html2canvas - Screenshots with JavaScript&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Try out html2canvas Test out html2canvas by rendering the viewport from the current page. Capture&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;html2canvas.hertzen.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;6. 확장 앱 Notification API&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;402&quot; data-origin-height=&quot;94&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nfbYW/btrMYsa2Ihq/F1yOaZMAiMWMRQRbyRkpm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nfbYW/btrMYsa2Ihq/F1yOaZMAiMWMRQRbyRkpm1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nfbYW/btrMYsa2Ihq/F1yOaZMAiMWMRQRbyRkpm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnfbYW%2FbtrMYsa2Ihq%2FF1yOaZMAiMWMRQRbyRkpm1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;402&quot; height=&quot;94&quot; data-origin-width=&quot;402&quot; data-origin-height=&quot;94&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위와 같이 생긴 알림 창을 notification이라고 하는데, 이번 프로젝트에서 목표 시간에 도달하면 알림이 뜨도록 notificationAPI를 이용했다. 먼저 manifest.json에서 notification의 권한을 허용해주고 background 프로세스를 지정해준다.&lt;/p&gt;
&lt;pre id=&quot;code_1664113998673&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// background.js
whale.runtime.onMessage.addListener(data =&amp;gt; {
  if (data.type === 'notification') {
    chrome.notifications.create('', data.options);
  }
});

// notification 보내기
function notify() {
  // 권한이 없으면 권한을 먼저 받는다.
  if (Notification.permission !== 'granted')
    Notification.requestPermission();
  else {
    var notification = new Notification('StudyOn', {
      icon: '../../images/icon_day.png',
      body: '목표 시간까지 공부 성공!',
    });

    // 알림 클릭 시, 사이드바로 이동
    notification.onclick = function () {
      whale.sidebarAction.show();
    };
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;background와 notificationAPI 관한 자세한 내용은 아래 공식 문서에서 참고가능하다.&lt;/p&gt;
&lt;figure id=&quot;og_1664113977526&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;확장앱의 유일한 필수 파일은 manifest.json 뿐이며 매니페스트라고 부릅니다. 폴더 혹은 압축 파일 내에 형식에 맞는 매니페스트 파일 하나만 있어도 설치하거나 웨일 스토어에 등록을 신청할 수 &quot; data-og-host=&quot;developers.whale.naver.com&quot; data-og-source-url=&quot;https://developers.whale.naver.com/getting_started/anatomy_1/#%EB%B0%B1%EA%B7%B8%EB%9D%BC%EC%9A%B4%EB%93%9C-%ED%8E%98%EC%9D%B4%EC%A7%80&quot; data-og-url=&quot;https://developers.whale.naver.com/getting_started/anatomy_1/index.html&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/lbamg/hyPVqfu44T/LclPcTGommKNAYyMw0NO0K/img.png?width=1200&amp;amp;height=1200&amp;amp;face=0_0_1200_1200,https://scrap.kakaocdn.net/dn/cRfxUk/hyPVrZLPoo/KzDkiGvZo8mykwyjGPvqbk/img.png?width=1200&amp;amp;height=1200&amp;amp;face=0_0_1200_1200&quot;&gt;&lt;a href=&quot;https://developers.whale.naver.com/getting_started/anatomy_1/#%EB%B0%B1%EA%B7%B8%EB%9D%BC%EC%9A%B4%EB%93%9C-%ED%8E%98%EC%9D%B4%EC%A7%80&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developers.whale.naver.com/getting_started/anatomy_1/#%EB%B0%B1%EA%B7%B8%EB%9D%BC%EC%9A%B4%EB%93%9C-%ED%8E%98%EC%9D%B4%EC%A7%80&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/lbamg/hyPVqfu44T/LclPcTGommKNAYyMw0NO0K/img.png?width=1200&amp;amp;height=1200&amp;amp;face=0_0_1200_1200,https://scrap.kakaocdn.net/dn/cRfxUk/hyPVrZLPoo/KzDkiGvZo8mykwyjGPvqbk/img.png?width=1200&amp;amp;height=1200&amp;amp;face=0_0_1200_1200');&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;확장앱의 유일한 필수 파일은 manifest.json 뿐이며 매니페스트라고 부릅니다. 폴더 혹은 압축 파일 내에 형식에 맞는 매니페스트 파일 하나만 있어도 설치하거나 웨일 스토어에 등록을 신청할 수&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;developers.whale.naver.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;figure id=&quot;og_1664113723565&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;chrome.notifications - Chrome Developers&quot; data-og-description=&quot;Build the next generation of web experiences.&quot; data-og-host=&quot;developer.chrome.com&quot; data-og-source-url=&quot;https://developer.chrome.com/docs/extensions/reference/notifications/&quot; data-og-url=&quot;https://developer.chrome.com/docs/extensions/reference/notifications/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/VbUUD/hyPT3fazfH/5B7OyyvQNDClGwlsOOWheK/img.png?width=1521&amp;amp;height=1521&amp;amp;face=0_0_1521_1521,https://scrap.kakaocdn.net/dn/bYggz8/hyPVsj32vI/ptZXGsB8e2WIW31yKsPhV1/img.png?width=1521&amp;amp;height=1521&amp;amp;face=0_0_1521_1521&quot;&gt;&lt;a href=&quot;https://developer.chrome.com/docs/extensions/reference/notifications/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developer.chrome.com/docs/extensions/reference/notifications/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/VbUUD/hyPT3fazfH/5B7OyyvQNDClGwlsOOWheK/img.png?width=1521&amp;amp;height=1521&amp;amp;face=0_0_1521_1521,https://scrap.kakaocdn.net/dn/bYggz8/hyPVsj32vI/ptZXGsB8e2WIW31yKsPhV1/img.png?width=1521&amp;amp;height=1521&amp;amp;face=0_0_1521_1521');&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;chrome.notifications - Chrome Developers&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Build the next generation of web experiences.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;developer.chrome.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;완성된 어플리케이션은, 아래 링크에서 다운로드 가능합니다~&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://store.whale.naver.com/detail/ajepkpjldcbakhoficmpmhpfgcblcioj&quot;&gt;https://store.whale.naver.com/detail/ajepkpjldcbakhoficmpmhpfgcblcioj&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664110449101&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;StudyOn&quot; data-og-description=&quot;웨일대학 2팀 - 대학생 학습 관리 확장 앱.&quot; data-og-host=&quot;store.whale.naver.com&quot; data-og-source-url=&quot;https://store.whale.naver.com/detail/ajepkpjldcbakhoficmpmhpfgcblcioj&quot; data-og-url=&quot;https://store.whale.naver.com/detail/ajepkpjldcbakhoficmpmhpfgcblcioj&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bDFOyU/hyPVfZjh5w/HtPkXRwT6xV9WTSM634Lc0/img.png?width=128&amp;amp;height=128&amp;amp;face=0_0_128_128&quot;&gt;&lt;a href=&quot;https://store.whale.naver.com/detail/ajepkpjldcbakhoficmpmhpfgcblcioj&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://store.whale.naver.com/detail/ajepkpjldcbakhoficmpmhpfgcblcioj&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bDFOyU/hyPVfZjh5w/HtPkXRwT6xV9WTSM634Lc0/img.png?width=128&amp;amp;height=128&amp;amp;face=0_0_128_128');&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;StudyOn&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;웨일대학 2팀 - 대학생 학습 관리 확장 앱.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;store.whale.naver.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;</description>
      <category>Extracurricular Activies/2022 웨일대학</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/305</guid>
      <comments>https://miinsun.tistory.com/305#entry305comment</comments>
      <pubDate>Sun, 25 Sep 2022 22:55:16 +0900</pubDate>
    </item>
    <item>
      <title>[2022 웨일대학] 1차 미션 웨일 확장앱 만들기_1</title>
      <link>https://miinsun.tistory.com/304</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;717&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3QLqP/btrMEIkv2iq/j0KXfb8CqaZAGIUJmpxOPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3QLqP/btrMEIkv2iq/j0KXfb8CqaZAGIUJmpxOPk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3QLqP/btrMEIkv2iq/j0KXfb8CqaZAGIUJmpxOPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3QLqP%2FbtrMEIkv2iq%2Fj0KXfb8CqaZAGIUJmpxOPk%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;461&quot; height=&quot;258&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;717&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;웨일 대학 첫 미션은 '웨일 확장 앱 만들기', 대학생들을 타깃으로 한 확장 앱을 한 달 동안 기획하고 개발했다. 우리 팀은 몇 번의 기획 회의를 걸쳐 웨일 사이드바를 활용한 공부시간관리 앱을 개발하도록 했다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;웨일 대학에서는 프로젝트를 진행하며 각 파트별로 한 번씩 멘토링을 해주신다. 나는 데이터 저장 방식이랑 manifest 설정에 대한 의문점이 있어서 멘토링 때 이와 관련한 질문을 드렸고, 개발 멘토님께서 지금 내가 하고 있는 방식이 적절하다고 말씀해주다. 또&amp;nbsp; 참고할만한 다양한 자료들을 공유해주셨다ㅠ. 1차 기획서 제출 후 멘토링이 더 필요하면 1번 더 멘토링을 해주셨다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;기획 과정에서 나온 주 기능은 아래와 같다. 아래는 1차 기능 명세서인데 최종으로 만들어진 기능과 조금 차이점이 있을 수 있다. 이번 프로젝트를 마치면서 느낀 점은 기능 정의를 구체적으로 하지 않으면 개발할때 많이 고생한다는 것이다... 앞으로는 세부 기능들에 대해 더 구체적으로 기록하는 습관을 가져야겠다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1106&quot; data-origin-height=&quot;379&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BOrM7/btrMzRqaUJv/xBlbQUgzpi1kugzaMiGEp0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BOrM7/btrMzRqaUJv/xBlbQUgzpi1kugzaMiGEp0/img.png&quot; data-alt=&quot;1차 기능 명세서&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BOrM7/btrMzRqaUJv/xBlbQUgzpi1kugzaMiGEp0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBOrM7%2FbtrMzRqaUJv%2FxBlbQUgzpi1kugzaMiGEp0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;673&quot; height=&quot;231&quot; data-origin-width=&quot;1106&quot; data-origin-height=&quot;379&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;1차 기능 명세서&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;확장 앱은 html,css,js를 통해 만들 수 있었다. 다른 분들은 react 같은 프레임워크를 사용해서 프로젝트를 빌드하신 분들도 있던데.. 사실&amp;nbsp; 개발 기간이 일주일 정도 밖에 안돼 다른 프레임워크를 공부하며 활용할 여력이 없어 그냥 html, css, js만 이용해서 프로젝트를 만들었다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;웨일은 크롬 기반 브라우저이기 때문에 웨일 확장앱을 만드는 방법과 크롬 확장 앱을 만드는 방법은 거의 동일하다. whale developer문서랑 chrome developers문서를 참고하면 기본 설정과 빌드 과정에 대해 잘 나와있다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://developers.whale.naver.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://developers.whale.naver.com/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1663683670673&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;Move the web, forward.&quot; data-og-host=&quot;developers.whale.naver.com&quot; data-og-source-url=&quot;https://developers.whale.naver.com/&quot; data-og-url=&quot;https://developers.whale.naver.com/index.html&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dDr0TZ/hyPQ4cTt1Z/gzvCCBmaUltO7MDcTKB0I1/img.png?width=1200&amp;amp;height=1200&amp;amp;face=0_0_1200_1200,https://scrap.kakaocdn.net/dn/MLVCt/hyPRbQDcpQ/gMx0mpsyn37xUbkZfcbZ1K/img.png?width=1200&amp;amp;height=1200&amp;amp;face=0_0_1200_1200&quot;&gt;&lt;a href=&quot;https://developers.whale.naver.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developers.whale.naver.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dDr0TZ/hyPQ4cTt1Z/gzvCCBmaUltO7MDcTKB0I1/img.png?width=1200&amp;amp;height=1200&amp;amp;face=0_0_1200_1200,https://scrap.kakaocdn.net/dn/MLVCt/hyPRbQDcpQ/gMx0mpsyn37xUbkZfcbZ1K/img.png?width=1200&amp;amp;height=1200&amp;amp;face=0_0_1200_1200');&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;Move the web, forward.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;developers.whale.naver.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://developer.chrome.com/docs/extensions/mv3/getstarted/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://developer.chrome.com/docs/extensions/mv3/getstarted/&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1663683684035&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;Getting started - Chrome Developers&quot; data-og-description=&quot;Step-by-step instructions on how to create a Chrome Extension.&quot; data-og-host=&quot;developer.chrome.com&quot; data-og-source-url=&quot;https://developer.chrome.com/docs/extensions/mv3/getstarted/&quot; data-og-url=&quot;https://developer.chrome.com/docs/extensions/mv3/getstarted/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/Btkej/hyPQ8M9aJZ/4qu21XiF8Z7DeykHjfmFO1/img.png?width=1521&amp;amp;height=1521&amp;amp;face=0_0_1521_1521,https://scrap.kakaocdn.net/dn/9Dkka/hyPQ3dZe2M/uAVSUrXhrzcwuy4fnpRhF0/img.png?width=1521&amp;amp;height=1521&amp;amp;face=0_0_1521_1521,https://scrap.kakaocdn.net/dn/cyz7I0/hyPRbQDcP4/mXcoGNQEpWet6pmAfkROk0/img.png?width=563&amp;amp;height=355&amp;amp;face=0_0_563_355&quot;&gt;&lt;a href=&quot;https://developer.chrome.com/docs/extensions/mv3/getstarted/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developer.chrome.com/docs/extensions/mv3/getstarted/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/Btkej/hyPQ8M9aJZ/4qu21XiF8Z7DeykHjfmFO1/img.png?width=1521&amp;amp;height=1521&amp;amp;face=0_0_1521_1521,https://scrap.kakaocdn.net/dn/9Dkka/hyPQ3dZe2M/uAVSUrXhrzcwuy4fnpRhF0/img.png?width=1521&amp;amp;height=1521&amp;amp;face=0_0_1521_1521,https://scrap.kakaocdn.net/dn/cyz7I0/hyPRbQDcP4/mXcoGNQEpWet6pmAfkROk0/img.png?width=563&amp;amp;height=355&amp;amp;face=0_0_563_355');&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;Getting started - Chrome Developers&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Step-by-step instructions on how to create a Chrome Extension.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;developer.chrome.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- 프로젝트 설정, manifest.json&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;확장 앱에 대한 설정을 할 수 있는 유일한 파일이 manifest.json이다. manifest.json을 프로젝트의 루트에 위치해준다. 웨일의 사이드바를 이용하기 위해서 &quot;sidebar_action&quot;을 따로 설정했다. permission에는 notification 알람을 허용하기 위해 아래와 같이 설정해줬다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1663683761929&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{
    &quot;manifest_version&quot;: 2,	// 고정
    &quot;name&quot;: &quot;StudyOn&quot;,
    &quot;version&quot;: &quot;1.0.0&quot;,	// 버전
    &quot;description&quot;: &quot;웨일대학 2팀 - 대학생 학습 관리 확장 앱.&quot;,
    &quot;icons&quot;: {
      &quot;16&quot;: &quot;images/short_logo.png&quot;,
      &quot;48&quot;: &quot;images/short_logo.png&quot;,
      &quot;128&quot;: &quot;images/short_logo.png&quot;
    },

    &quot;sidebar_action&quot;: {	// 사이드바 설정
        &quot;default_page&quot;: &quot;src/html/main.html&quot;, 
        &quot;default_icon&quot;: {               
            &quot;16&quot;: &quot;images/short_logo.png&quot;
        },

        &quot;default_title&quot;: &quot;StudyOn&quot;,
        &quot;use_navigation_bar&quot;: false,  
        &quot;mobile_user_agent&quot;: false 
    },
    &quot;background&quot; : {	// 백그라운드 페이지
      &quot;scripts&quot; : [&quot;src/js/background.js&quot;],
      &quot;persistent&quot;: false
    },
    &quot;permissions&quot;: [	// 권한 설정
      &quot;notifications&quot;,
      &quot;&amp;lt;all_urls&amp;gt;&quot;,
      &quot;http://localhost/&quot;,
      &quot;http://*/*&quot;, 
      &quot;https://*/*&quot;
    ]    
  }&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- &lt;b&gt;웨일 확장앱 실행하는 방법&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;확장 앱을 실행해보려면 먼저 whale://extensions/ 로 이동하거나, 설정 &amp;gt; 확장 앱 &amp;gt; 확장 앱 관리자로 이동한다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;개발자 모드를 켜주고, '압축해제 된 확장 앱 설치'로 확장 앱의 루트를 지정해주자.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/daBNAv/btrMDYuxdPV/pKvgDBYH0QIRVjbGJdIhu0/img.png&quot; data-origin-width=&quot;414&quot; data-origin-height=&quot;80&quot; data-is-animation=&quot;false&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;/b&gt;작성한 코드가 제대로 동작하는지 확인하려면, 중간중간 reload를 눌러 프로젝트를 새로고침 해줘야 한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;198&quot; data-origin-height=&quot;202&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JfwsO/btrMEhtXOoN/zvr0HQzV6qZkkKJ2bKE8i0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JfwsO/btrMEhtXOoN/zvr0HQzV6qZkkKJ2bKE8i0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JfwsO/btrMEhtXOoN/zvr0HQzV6qZkkKJ2bKE8i0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJfwsO%2FbtrMEhtXOoN%2Fzvr0HQzV6qZkkKJ2bKE8i0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;198&quot; height=&quot;202&quot; data-origin-width=&quot;198&quot; data-origin-height=&quot;202&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Extracurricular Activies/2022 웨일대학</category>
      <category>웨일대학</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/304</guid>
      <comments>https://miinsun.tistory.com/304#entry304comment</comments>
      <pubDate>Tue, 20 Sep 2022 23:39:26 +0900</pubDate>
    </item>
    <item>
      <title>2022 HP 글로벌 멘토링 후기</title>
      <link>https://miinsun.tistory.com/303</link>
      <description>&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;698&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cyg7ZC/btrLkvAANDu/hMvQLkhQlMkKgsTuqjnlPK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cyg7ZC/btrLkvAANDu/hMvQLkhQlMkKgsTuqjnlPK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cyg7ZC/btrLkvAANDu/hMvQLkhQlMkKgsTuqjnlPK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcyg7ZC%2FbtrLkvAANDu%2FhMvQLkhQlMkKgsTuqjnlPK%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;698&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;698&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt; &lt;/h4&gt;
&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;- 활동 후기&lt;/h4&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;
  - 멘토링 소감 
 &lt;br&gt;멘토링을 통해 같은 고민을 같고 있는 멘티들을 만나 함께 소통할 수 있었고, 취업에 관한 고민을 나눌 수 있는 계기가 되어 그동안의 고민과 걱정을 한결 덜 수 있었습니다. 저희 팀 멘티분들뿐만 아니라 다른 팀의 멘티분들께서도 열심히 각자의 목표, 꿈을 향해 노력하는 모습을 보며 저 또한 상당히 자극받을 수 있었고 취준 기간의 원동력이 될 수 있었습니다. 
 &lt;br&gt; 
 &lt;br&gt; 
 &lt;br&gt; 
 &lt;br&gt;또한, 멘토님과의 상담으로 내가 진정으로 원하는 직무가 무엇일지 되돌아 생각해볼 수 있었습니다. 이번 멘토링을 통해 ‘나도 꼭 멘토님처럼 사회 초년생들에게 멋진 조언을 해줄 수 있는 개발자가 돼야겠다’라는 목표도 하나 생기게 됐습니다. 
 &lt;br&gt; 
 &lt;br&gt;- 영문 resume 
 &lt;br&gt;전부터 혼자 작성하는데 어려움이 있던 영문 이력서, Resume 작성에 많은 도움이 됐던 활동이었습니다. 강사님께서 다양한 예시를 활용하면서 강의해주셔서 그간에 궁금했던 부분들을 많은 부분 해소해주셨습니다. Resume를 어떤 식으로 작성해야 할지 목차 순서를 알려주셨고, 업적, 관리, 기능/업무, 기술력 같이 업종별 키워드를 나눠 이력서 작성에 이해를 도와주셨습니다. 
 &lt;br&gt; 
 &lt;br&gt;영문 이력서 작성 요령과 해외 취업 트렌드 같은 꿀팁들도 전수해주셔서 취업을 준비하는 입장에서 빛과 소금 같던 섹션이었습니다. 
 &lt;br&gt; 
 &lt;br&gt;- HP신입 개발자와의 만남 
 &lt;br&gt;HP에 입사한 개발자분들의 과의 Q&amp;amp;A 시간이었습니다. 개발자를 준비하는 저에게는 정말 유용했던 강의였습니다. 활동 전에 받았던 사전 질문들에 답변을 해주셨습니다. 졸업이 얼마 남지 않은 막 학기 생들이 들으면 좋을만한 답변을 많이 해주셨습니다. 자기소개서 때 어필할 수 있는 방법, 3~4학년이 하면 좋은 활동, 포트폴리오 작성 요령, 면접 때 가장 어려운 답변 등 취준생들이 가장 궁금해야 내용들에 대해 성심성의껏 답변해주셨습니다. 
 &lt;br&gt; 
 &lt;br&gt;
 &lt;br&gt; 
 &lt;br&gt;마지막으로 이번 멘토링은 대부분의 활동이 온라인으로 진행됐던 점이 상당히 아쉬웠습니다. 
&lt;/blockquote&gt;
&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt; &lt;/h4&gt;
&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;- HP &amp;amp; HPPK&lt;/h4&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;
  HP는 ‘실리콘밸리 혁신의 상징’으로 손꼽히는 세계 최고 수준의 IT 선도 기업입니다. PC, 프린터, 3D 프린터, VR, 소프트웨어 설루션 등 다양한 서비스와 제품을 공급하고 있으며, 포춘지가 선정한 500대 기업 가운데 55위에 선정되었습니다. HP는 ‘다양성과 포용’ 문화를 바탕으로 여성을 포함한 다양한 인재가 회사 내에서 성장하도록 적극 지원하고 있습니다. 
 &lt;br&gt; 
 &lt;br&gt;HP 프린팅 코리아는 2017년 11월 HP의 삼성전자 프린팅 사업부 인수로 탄생하였으며 HP의 A3 기업용 프린팅 비즈니스의 전략 허브로, 연구 개발에 중점을 두고 있습니다. HP 코리아는 1984년 휴렛팩커드와 삼성전자의 합작으로 설립되었으며, 국내 총판, 채널, 유통사 및 온라인 파트너들과의 파트너십을 통해 한국의 미래를 위한 업계 선도적인 기술을 제공해오고 있습니다. 
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt; &lt;/p&gt;
&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;* 활동 내용&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;● HP의 Business와 Product 및 새로운 기술 소개&lt;br&gt; ● HR 세션 : 영문 이력서 작성 • 영어 PT 특강, 모의 인터뷰, 직무소개 등&lt;br&gt; ● HP 오피스 투어 및 JOB Shadowing&lt;br&gt; ● 소그룹 멘토링&lt;br&gt;&lt;u&gt;※ &lt;/u&gt;&lt;u&gt;세부 활동 내용은 상황에 따라 변경될 수 있습니다&lt;/u&gt;&lt;u&gt;.&lt;/u&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;/h4&gt;</description>
      <category>Extracurricular Activies/2022 HP Global  Mentoring</category>
      <category>2022HP글로벌멘토링</category>
      <category>HP</category>
      <category>HP멘토링</category>
      <category>WISET 글로벌 멘토링</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/303</guid>
      <comments>https://miinsun.tistory.com/303#entry303comment</comments>
      <pubDate>Mon, 19 Sep 2022 16:12:52 +0900</pubDate>
    </item>
    <item>
      <title>[API 마켓 플레이스 서포터즈] 라이디(LieDe) 프로젝트 기획_1</title>
      <link>https://miinsun.tistory.com/302</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;먼저, 우리 API:SODE 팀은 일정이나 회의록 관리는 notion을 통해 관리했고, 문서 관리는 따로 구글 드라이브를 통해 관리 했다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bijoZs/btrLLXRLogS/kGuvNTNWnlAKF4GrhNili1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bijoZs/btrLLXRLogS/kGuvNTNWnlAKF4GrhNili1/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bijoZs/btrLLXRLogS/kGuvNTNWnlAKF4GrhNili1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbijoZs%2FbtrLLXRLogS%2FkGuvNTNWnlAKF4GrhNili1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKPsmO/btrLR7Fl0fy/K6Rg3wV1pkq399aIovkIH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKPsmO/btrLR7Fl0fy/K6Rg3wV1pkq399aIovkIH0/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKPsmO/btrLR7Fl0fy/K6Rg3wV1pkq399aIovkIH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKPsmO%2FbtrLR7Fl0fy%2FK6Rg3wV1pkq399aIovkIH0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&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;노션을 이용해서 이번 1차 미션에 대한 간략한 정보와 진행사항들을 정리했다. 또, 지금까지의 회의 정보들과 각자의 역할 담당을 잊지 않도록 그때그때 잘 적어두고 있다. 회의록은 사실 신경을 잘 못쓰고 있었는데 팀원인 재아가 너무 잘 관리해주고 있다ㅠ&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZyC8L/btrLTCrBzjz/ZgMZVuzwKVyE8kf7ln1z80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZyC8L/btrLTCrBzjz/ZgMZVuzwKVyE8kf7ln1z80/img.png&quot; data-origin-width=&quot;844&quot; data-origin-height=&quot;482&quot; data-is-animation=&quot;false&quot; style=&quot;width: 63.4175%; margin-right: 10px;&quot; data-widthpercent=&quot;64.16&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZyC8L/btrLTCrBzjz/ZgMZVuzwKVyE8kf7ln1z80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZyC8L%2FbtrLTCrBzjz%2FZgMZVuzwKVyE8kf7ln1z80%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;844&quot; height=&quot;482&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lAi1g/btrLQnaDeN6/SxEVQVogWcLSVvaVypUUa1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lAi1g/btrLQnaDeN6/SxEVQVogWcLSVvaVypUUa1/img.png&quot; data-origin-width=&quot;844&quot; data-origin-height=&quot;863&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;35.84&quot; style=&quot;width: 35.4197%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lAi1g/btrLQnaDeN6/SxEVQVogWcLSVvaVypUUa1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlAi1g%2FbtrLQnaDeN6%2FSxEVQVogWcLSVvaVypUUa1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;844&quot; height=&quot;863&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&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;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;첫 회의는 오프라인으로 신촌의 캐치카페에서 진행했다. 캐치카페는 이번이 첫 방문이였는데, 카페가 엄청 넓고 쾌적해서 좋았다. 무료로 제공되는 음료도 마시면서 첫 회의를 무사히 마쳤다. 이날 프로젝트의 정해진 전체적인 아이디어는 'Cardivu를 이용한 거짓말 탐지기 웹 서비스'였다. 장소와 도구에 구애받지 않는 거짓말 탐지기라고 하니 앞으로의 개발 과정이 기대된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5WzJ3/btrLNqlClCp/LZsvHWtn3LMS137pxptwR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5WzJ3/btrLNqlClCp/LZsvHWtn3LMS137pxptwR1/img.png&quot; width=&quot;462&quot; height=&quot;461&quot; data-origin-width=&quot;866&quot; data-origin-height=&quot;865&quot; data-is-animation=&quot;false&quot; style=&quot;width: 42.4711%; margin-right: 10px;&quot; data-widthpercent=&quot;42.97&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5WzJ3/btrLNqlClCp/LZsvHWtn3LMS137pxptwR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5WzJ3%2FbtrLNqlClCp%2FLZsvHWtn3LMS137pxptwR1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;866&quot; height=&quot;865&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzKp74/btrLOhhFR5K/hpvV6VY70HVHdanrS9xvkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzKp74/btrLOhhFR5K/hpvV6VY70HVHdanrS9xvkK/img.png&quot; width=&quot;419&quot; height=&quot;315&quot; data-origin-width=&quot;764&quot; data-origin-height=&quot;575&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;57.03&quot; data-filename=&quot;blob&quot; style=&quot;width: 56.3661%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzKp74/btrLOhhFR5K/hpvV6VY70HVHdanrS9xvkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzKp74%2FbtrLOhhFR5K%2FhpvV6VY70HVHdanrS9xvkK%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;764&quot; height=&quot;575&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;노션을 이용해 이런식으로 팀원별 역할을 정리했다. 나는 기획서의 프로젝트 배경, API 정의서, 플로우 차트를 만들게 됬다. API 정의서는 개발 과정에서 swagger를 이용해 만들어 볼 것이고, 플로우 차트는 &lt;a href=&quot;https://miro.com/aq/ps/flowchart-1/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://miro.com/aq/ps/flowchart-1/&lt;/a&gt; 여기서 만들 수 있다! 데드라인에 맞춰서 결과물을 만들어야 됐기 때문에 시간이&amp;nbsp; 꽤나 빠듯했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9L90M/btrLTCE791q/mEAOibJNEa6TnscpsubT5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9L90M/btrLTCE791q/mEAOibJNEa6TnscpsubT5K/img.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;406&quot; data-is-animation=&quot;false&quot; style=&quot;width: 71.0725%; margin-right: 10px;&quot; data-widthpercent=&quot;71.91&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9L90M/btrLTCE791q/mEAOibJNEa6TnscpsubT5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9L90M%2FbtrLTCE791q%2FmEAOibJNEa6TnscpsubT5K%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;406&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHAXq8/btrLLYpDo3f/UGYEpIhIncEFiDHokGD76k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHAXq8/btrLLYpDo3f/UGYEpIhIncEFiDHokGD76k/img.png&quot; data-origin-width=&quot;268&quot; data-origin-height=&quot;272&quot; data-is-animation=&quot;false&quot; style=&quot;width: 27.7647%;&quot; data-widthpercent=&quot;28.09&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHAXq8/btrLLYpDo3f/UGYEpIhIncEFiDHokGD76k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHAXq8%2FbtrLLYpDo3f%2FUGYEpIhIncEFiDHokGD76k%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;268&quot; height=&quot;272&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&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;p data-ke-size=&quot;size16&quot;&gt;기획서를 다 만들고 30분정도 짧게 피드백 회의를 가졌다. 이 회의에서 나온 프로젝트 이름이 바로 '라이디'이다!! 라이디는 Lie Detector의 앞글자를 따 만들었다. 부르는 어감이 귀여워서 아주 만족하고 있다 &amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EQgoc/btrLTCrBoBg/RBWnHQH2y5FGCbX6lKK42K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EQgoc/btrLTCrBoBg/RBWnHQH2y5FGCbX6lKK42K/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; style=&quot;width: 52.9649%; margin-right: 10px;&quot; data-widthpercent=&quot;53.59&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EQgoc/btrLTCrBoBg/RBWnHQH2y5FGCbX6lKK42K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEQgoc%2FbtrLTCrBoBg%2FRBWnHQH2y5FGCbX6lKK42K%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IOaS3/btrLMwM7oMt/KxESRrHbqMoIKXMyP35bwK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IOaS3/btrLMwM7oMt/KxESRrHbqMoIKXMyP35bwK/img.png&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;1964&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;46.41&quot; style=&quot;width: 45.8723%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IOaS3/btrLMwM7oMt/KxESRrHbqMoIKXMyP35bwK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIOaS3%2FbtrLMwM7oMt%2FKxESRrHbqMoIKXMyP35bwK%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;3024&quot; height=&quot;1964&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&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;팀원들이 다들 능력자고 프로젝트에 열심히 몰두하고 있는 거 같아 멋있다.. 이번 Api 마켓 서포터즈를 통해서 배워가는 점이 많은 것 같다. 앞으로도 에피소드 화이팅!!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;432&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Fzjp7/btrLLzKoUD8/GEkaiELAI8kuZslm01WAO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Fzjp7/btrLLzKoUD8/GEkaiELAI8kuZslm01WAO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Fzjp7/btrLLzKoUD8/GEkaiELAI8kuZslm01WAO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFzjp7%2FbtrLLzKoUD8%2FGEkaiELAI8kuZslm01WAO1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;372&quot; height=&quot;251&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;432&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Extracurricular Activies/2022 API MarkectPlace 서포터즈</category>
      <category>api market plaece</category>
      <category>API MarketPlace 글로벌 서포터즈</category>
      <category>API마켓플레이스</category>
      <category>appetizer</category>
      <category>Naver Cloud</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/302</guid>
      <comments>https://miinsun.tistory.com/302#entry302comment</comments>
      <pubDate>Sun, 11 Sep 2022 13:55:02 +0900</pubDate>
    </item>
    <item>
      <title>[API 마켓 플레이스 서포터즈] 라이디(LieDe) 프로젝트 기획_2</title>
      <link>https://miinsun.tistory.com/301</link>
      <description>&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;기획서 제출까지 몇일밖에 남지 않았다. 그동안 개강도 하고, 다른 프로젝트도 하고, 자소서도 준비하고, 자격증도 준비하는라 진짜 너무너무 바빴다. 문 밖을 나가 좀 돌아다니고 싶은 마음이 굴뚝같지만 해야할 일이 너무 많아서 방 밖으로 나갈 수 가 없다ㅠ&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;오늘은 팀원인 지원이랑 피그마로 UI 디자인 작업을 함께 했다. 처음 써보는 툴이라 사용이 익숙하지 않아서 새벽 2시까지 온라인 회의를 하며 ui를 만들었다. 디자인에 감각이 전혀 없는 편인데 무료 템플릿이랑 레퍼런스를 많이 참고했더니 그래도 그럴싸하게 나온거 같아서 만족하고 있다 &lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cPjSsT/btrLMwyfAI5/AjMypO0oy4vB4ZcsUVS5v0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cPjSsT/btrLMwyfAI5/AjMypO0oy4vB4ZcsUVS5v0/img.png&quot; data-origin-width=&quot;428&quot; data-origin-height=&quot;926&quot; style=&quot;width: 32.5581%; margin-right: 10px;&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cPjSsT/btrLMwyfAI5/AjMypO0oy4vB4ZcsUVS5v0/img.png&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcPjSsT%2FbtrLMwyfAI5%2FAjMypO0oy4vB4ZcsUVS5v0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;428&quot; height=&quot;926&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d3ofsu/btrLKFXvZWy/TaF8MfvCbcSYBxDk5JfBGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d3ofsu/btrLKFXvZWy/TaF8MfvCbcSYBxDk5JfBGk/img.png&quot; data-origin-width=&quot;428&quot; data-origin-height=&quot;926&quot; style=&quot;width: 32.5581%; margin-right: 10px;&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d3ofsu/btrLKFXvZWy/TaF8MfvCbcSYBxDk5JfBGk/img.png&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd3ofsu%2FbtrLKFXvZWy%2FTaF8MfvCbcSYBxDk5JfBGk%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;428&quot; height=&quot;926&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cAC6PE/btrLJ0Blz0K/gVckO7M0heP6gkDjtVdOr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cAC6PE/btrLJ0Blz0K/gVckO7M0heP6gkDjtVdOr0/img.png&quot; data-origin-width=&quot;428&quot; data-origin-height=&quot;926&quot; style=&quot;width: 32.5581%;&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;33.34&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cAC6PE/btrLJ0Blz0K/gVckO7M0heP6gkDjtVdOr0/img.png&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcAC6PE%2FbtrLJ0Blz0K%2FgVckO7M0heP6gkDjtVdOr0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;428&quot; height=&quot;926&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;방금 ppt 작업까지 마쳤다. 오늘은 하루가 정말정말 길었다ㅠㅠ ppt는 미리 캔퍼스를 이용해서 만들었다. 미리캔퍼스는 ppt 템플릿 종류가 많아서 급하게 ppt를 만들 때 참고해서 만들기 좋다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4Yt5w/btrLMxKGOfX/WE77BjET33BeMqM6Wd3uw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4Yt5w/btrLMxKGOfX/WE77BjET33BeMqM6Wd3uw0/img.png&quot; style=&quot;width: 40.9263%; margin-right: 10px;&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;1200&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;41.41&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4Yt5w/btrLMxKGOfX/WE77BjET33BeMqM6Wd3uw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4Yt5w%2FbtrLMxKGOfX%2FWE77BjET33BeMqM6Wd3uw0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;1200&quot; height=&quot;1200&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nu7IS/btrLKFiVl7Y/3reixphK4fm0yMAeRYoR6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nu7IS/btrLKFiVl7Y/3reixphK4fm0yMAeRYoR6k/img.png&quot; style=&quot;width: 57.9109%;&quot; data-origin-width=&quot;2339&quot; data-origin-height=&quot;1653&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;58.59&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nu7IS/btrLKFiVl7Y/3reixphK4fm0yMAeRYoR6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fnu7IS%2FbtrLKFiVl7Y%2F3reixphK4fm0yMAeRYoR6k%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;2339&quot; height=&quot;1653&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;ppt를 만드는 중간 중간에 팀원들에게 피드백을 받아가면서 제작했다. 특히 팀원인 재아가 피드백 과정에서 많이 도움을 줬다. 급하게 ppt를 만들어서 오타도 많고, 맥락상 이상하게 배치된 것도 많았는데 재아가 매의 눈으로 다 찾아줬다. 도와준 지원이, 재아에게 너무 고마워 &lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bihhrj/btrLOmiXw3z/08ukH4hk9BHTPQE1YUEVw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bihhrj/btrLOmiXw3z/08ukH4hk9BHTPQE1YUEVw0/img.png&quot; data-origin-width=&quot;450&quot; data-origin-height=&quot;316&quot; data-is-animation=&quot;false&quot; style=&quot;width: 51.4937%; margin-right: 10px;&quot; data-widthpercent=&quot;52.1&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bihhrj/btrLOmiXw3z/08ukH4hk9BHTPQE1YUEVw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbihhrj%2FbtrLOmiXw3z%2F08ukH4hk9BHTPQE1YUEVw0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;450&quot; height=&quot;316&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOBHFo/btrLLgxq4Ga/Y3nn9GNg8ZDH1xOztil89k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOBHFo/btrLLgxq4Ga/Y3nn9GNg8ZDH1xOztil89k/img.png&quot; data-origin-width=&quot;381&quot; data-origin-height=&quot;291&quot; data-is-animation=&quot;false&quot; style=&quot;width: 47.3435%;&quot; data-widthpercent=&quot;47.9&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOBHFo/btrLLgxq4Ga/Y3nn9GNg8ZDH1xOztil89k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOBHFo%2FbtrLLgxq4Ga%2FY3nn9GNg8ZDH1xOztil89k%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;381&quot; height=&quot;291&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;몇일전에는 개발분야의 1차 멘토링이 있었다. 프로젝트를 기획하며 궁금했던 점들에 대해 멘토님들께 여쭤봤고 바로바로 피드백이 와서 그동안의 궁금증이 해소됐다. 멘토님들께서도 우리 프로젝트가 재미있을 것 같다고 기대된다 하셨다. 피드백 이후에 진행해야 할 건 '논문 참고해서 데이터 분석해보기', '거짓말 하는 친구들의 샘플 데이터 얻기', 'API 어떤식으로 활용할지 논의하기' 이 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CohNo/btrLKwmfwwW/rnGZScIkFfUaBJfBTm9uPK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CohNo/btrLKwmfwwW/rnGZScIkFfUaBJfBTm9uPK/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CohNo/btrLKwmfwwW/rnGZScIkFfUaBJfBTm9uPK/img.png&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCohNo%2FbtrLKwmfwwW%2FrnGZScIkFfUaBJfBTm9uPK%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgBGFz/btrLLjl8Cb9/CNx0Q3Dyu3FzdOiAcpulIk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgBGFz/btrLLjl8Cb9/CNx0Q3Dyu3FzdOiAcpulIk/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; style=&quot;width: 49.4186%;&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgBGFz/btrLLjl8Cb9/CNx0Q3Dyu3FzdOiAcpulIk/img.png&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgBGFz%2FbtrLLjl8Cb9%2FCNx0Q3Dyu3FzdOiAcpulIk%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이번 일주일도 눈깜빡할새 지나갔다. 내 방은 작아서 답답한데 공부할 때 집중력을 최대로 발휘 할 수 있게 해준다. &lt;/span&gt;좀 일정에 여유가 생겨지면 카공이라도 하고 싶다ㅠ 앞으로는 기업 인터뷰와 본격적인 프로젝트 개발이 기다리고 있다!! 힘들었던 프로젝트 기획 작업이 끝났으니 앞으로 개발까지 열심히 달리자. 아자아자 &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;498&quot; data-origin-height=&quot;248&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/P4JI5/btrLLyDlLuH/CiOUkdhZVR5ymxqE9cY3u0/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/P4JI5/btrLLyDlLuH/CiOUkdhZVR5ymxqE9cY3u0/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/P4JI5/btrLLyDlLuH/CiOUkdhZVR5ymxqE9cY3u0/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/P4JI5/btrLLyDlLuH/CiOUkdhZVR5ymxqE9cY3u0/img.gif&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; loading=&quot;lazy&quot; width=&quot;498&quot; height=&quot;248&quot; data-origin-width=&quot;498&quot; data-origin-height=&quot;248&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Extracurricular Activies/2022 API MarkectPlace 서포터즈</category>
      <category>api market plaece</category>
      <category>API MarketPlace 글로벌 서포터즈</category>
      <category>API마켓플레이스</category>
      <category>appetizer</category>
      <category>Naver Cloud</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/301</guid>
      <comments>https://miinsun.tistory.com/301#entry301comment</comments>
      <pubDate>Fri, 9 Sep 2022 02:59:54 +0900</pubDate>
    </item>
    <item>
      <title>[2022 웨일대학] 대학생 필수템! 웨일 확장 앱 '웨않되' 리뷰  </title>
      <link>https://miinsun.tistory.com/300</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;462&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRt03Y/btrKHYvRm0T/kxtxBtlf7l5gY835OReiIK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRt03Y/btrKHYvRm0T/kxtxBtlf7l5gY835OReiIK/img.jpg&quot; data-alt=&quot;출처-사람인&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRt03Y/btrKHYvRm0T/kxtxBtlf7l5gY835OReiIK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRt03Y%2FbtrKHYvRm0T%2FkxtxBtlf7l5gY835OReiIK%2Fimg.jpg&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; loading=&quot;lazy&quot; width=&quot;357&quot; height=&quot;330&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;462&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처-사람인&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요. 웨일 대학 2팀 윤민선입니다 :)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이번 포스팅은 웨일 확장 앱 '웨않되' 리뷰를 작성하려 합니다! &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요새 저는 공모전, 대외활동, 인턴 준비로 바쁜 하루하루를 보내고 있습니다. 취업을 준비하는 구직자들의 90%가 실제로 자소서 작성 시 맞춤법에 많은 어려움을 느끼고 있는데요. 자소서의 맞춤법 실수는 지원자가 꼼꼼하지 않거나 프로페셔널하지 못하다는 인상을 주는 등 평가에 불이익으로 반영되는 만큼 틀린 맞춤법은 꼭 고쳐나가도록 노력해야 합니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 이유로 제가 &lt;span&gt;자소서를 작성하며 잘 활용했던 '웨않되'를 소개하고자 합니다 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&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;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;- 기능&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1072&quot; data-origin-height=&quot;1167&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eji4U4/btrKFPULzwL/G7Qt4CrSiuEGooP2jtffY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eji4U4/btrKFPULzwL/G7Qt4CrSiuEGooP2jtffY0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eji4U4/btrKFPULzwL/G7Qt4CrSiuEGooP2jtffY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Feji4U4%2FbtrKFPULzwL%2FG7Qt4CrSiuEGooP2jtffY0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;721&quot; height=&quot;785&quot; data-origin-width=&quot;1072&quot; data-origin-height=&quot;1167&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;'웨않되'는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;Naver 맞춤법 검사기를 이용한&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;웨일 브라우저용 한글 맞춤법 검사기입니다. 네이버 웨일의 '사이드 바 기능'을 이용해 방문하는 어느 사이트든 실시간으로 맞춤법을 확인할 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주요 기능은 아래와 같습니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;- 입력창에 작성된 테스트에 맞춤법 오류가 있을 경우 빨간색 밑줄로 바로바로 알려드립니다.&lt;br /&gt;- 맞춤법 오류 개수가 표시된 빨간색 동그라미를 클릭하면 사이드바에서 맞춤법 검사 결과를 바로 확인하실 수 있습니다.&lt;br /&gt;- &quot;네이버 맞춤법 검사기&quot;의 500글자 제한을 해소하기 위해 검사대상 텍스트가 500글자를 초과할 경우 문장단위로 쪼갠 후 연속된 검사 결과를 보여드립니다.&lt;br /&gt;- 화면상의 텍스트를 드래그하여 마우스 우클릭을 하시면 &quot;선택된 텍스트 맞춤법 검사하기&quot; 버튼을 통해 언제든지 맞춤법 검사가 가능합니다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 사실 '웨않되'를 사용하기 전에는 잡코리아의 맞춤법 검사기를 주로 이용했는데요. 잡코리아의 맞춤법 검사기는 500자 제한이 있기 때문에 번거롭게 여러번 복붙을 해야한다는 점에서 상당한 피로감을 느꼈습니다ㅠ 타 맞춤법 검사기들과는 다르게 '웨않되'는 사이드바 기능으로 실시간으로 맞춤법을 검사할 수 있다는 장점이 있는데, 자동으로 문단별 맞춤법 검사를 해주기 때문에 문서 작업이 많이 편리해졌습니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&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;h2 data-ke-size=&quot;size26&quot;&gt;- 활용&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보통 저는 자소서를 작성하거나 교수님께 메일을 보낼 때 '웨않되'를 활용하는데요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 예시는 얼마 전에 친구들과 팀으로 지원했던 개발 서포터즈 지원서입니다. '웨않되'를 이용하면 사이드바를 이용해서 같은 화면 안에서 실시간으로 맞춤법 검사가 가능합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_스크린샷 2022-08-26 오후 9.03.12.png&quot; data-origin-width=&quot;1512&quot; data-origin-height=&quot;978&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TygpH/btrKIxEOCeS/zRS69ajQi1Ql7vy8nHzOSk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TygpH/btrKIxEOCeS/zRS69ajQi1Ql7vy8nHzOSk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TygpH/btrKIxEOCeS/zRS69ajQi1Ql7vy8nHzOSk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTygpH%2FbtrKIxEOCeS%2FzRS69ajQi1Ql7vy8nHzOSk%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;609&quot; height=&quot;394&quot; data-filename=&quot;edited_스크린샷 2022-08-26 오후 9.03.12.png&quot; data-origin-width=&quot;1512&quot; data-origin-height=&quot;978&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 자소서의 틀린 맞춤법을 아래와 같이 고쳐줍니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우측 하단의 복사 버튼을 눌러 원하는 입력창에 붙여놓기 해주면 맞춤법 검사 끝~ 정말 간단하지 않나요 &lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-08-26 오후 9.03.45.png&quot; data-origin-width=&quot;826&quot; data-origin-height=&quot;978&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bm8jsC/btrKGx0j3h3/EGHo9grXYLpKqHMAJjUPV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bm8jsC/btrKGx0j3h3/EGHo9grXYLpKqHMAJjUPV0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bm8jsC/btrKGx0j3h3/EGHo9grXYLpKqHMAJjUPV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbm8jsC%2FbtrKGx0j3h3%2FEGHo9grXYLpKqHMAJjUPV0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;366&quot; height=&quot;433&quot; data-filename=&quot;스크린샷 2022-08-26 오후 9.03.45.png&quot; data-origin-width=&quot;826&quot; data-origin-height=&quot;978&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&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;h2 data-ke-size=&quot;size26&quot;&gt;- 마치며&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웨일 확장 앱 스토어에는 '웨않되' 외에도 대학생에게 유용한 앱들이 정말 많습니다!! 특히 다른 브라우저에는 없는 &lt;u&gt;사이드바&lt;/u&gt; 기능을 활용한 앱들이 활용성이 좋은데, 저는 웹툰을 보면서 웹서핑을 한다거나, 유튜브 뮤직을 그때그때 원하는 노래로 고르며 활용하고 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZXnfr/btrKHd8a3nj/FIszSkCKKLU7EVGAKMeCu0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZXnfr/btrKHd8a3nj/FIszSkCKKLU7EVGAKMeCu0/img.png&quot; data-origin-width=&quot;1072&quot; data-origin-height=&quot;1167&quot; data-is-animation=&quot;false&quot; width=&quot;428&quot; height=&quot;466&quot; style=&quot;width: 40.9087%; margin-right: 10px;&quot; data-widthpercent=&quot;41.39&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZXnfr/btrKHd8a3nj/FIszSkCKKLU7EVGAKMeCu0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZXnfr%2FbtrKHd8a3nj%2FFIszSkCKKLU7EVGAKMeCu0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;1072&quot; height=&quot;1167&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cn9O79/btrKFRyeWCW/5ICpaXiBXZ3qzw3lENbuL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cn9O79/btrKFRyeWCW/5ICpaXiBXZ3qzw3lENbuL1/img.png&quot; data-origin-width=&quot;1518&quot; data-origin-height=&quot;1167&quot; data-is-animation=&quot;false&quot; style=&quot;width: 57.9285%;&quot; data-widthpercent=&quot;58.61&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cn9O79/btrKFRyeWCW/5ICpaXiBXZ3qzw3lENbuL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcn9O79%2FbtrKFRyeWCW%2F5ICpaXiBXZ3qzw3lENbuL1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;1518&quot; height=&quot;1167&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&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;더 다양한 웨일 확장 앱을 원한다면!! 아래 링크로⎝⍢⎠&lt;/p&gt;
&lt;figure id=&quot;og_1661517181359&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;store.whale.naver.com&quot; data-og-source-url=&quot;https://store.whale.naver.com/extensions/popular&quot; data-og-url=&quot;https://store.whale.naver.com/extensions/popular&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/shrT6/hyPAy6vPCk/NuQj8jif9Y3iOk9yoDmMB0/img.png?width=1200&amp;amp;height=1200&amp;amp;face=0_0_1200_1200&quot;&gt;&lt;a href=&quot;https://store.whale.naver.com/extensions/popular&quot; data-source-url=&quot;https://store.whale.naver.com/extensions/popular&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/shrT6/hyPAy6vPCk/NuQj8jif9Y3iOk9yoDmMB0/img.png?width=1200&amp;amp;height=1200&amp;amp;face=0_0_1200_1200');&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;store.whale.naver.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;</description>
      <category>Extracurricular Activies/2022 웨일대학</category>
      <category>네이버웨일</category>
      <category>대학생서포터즈</category>
      <category>웨일</category>
      <category>웨일대학</category>
      <category>확장앱</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/300</guid>
      <comments>https://miinsun.tistory.com/300#entry300comment</comments>
      <pubDate>Fri, 26 Aug 2022 21:22:53 +0900</pubDate>
    </item>
    <item>
      <title>[2022 웨일대학] 웨일 대학 입학식 후기   / 네이버 신사옥 1784 방문기</title>
      <link>https://miinsun.tistory.com/299</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;375&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eIn39m/btrJ6YY9sLW/mbas1mKtGthU7iTWAV9LX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eIn39m/btrJ6YY9sLW/mbas1mKtGthU7iTWAV9LX0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eIn39m/btrJ6YY9sLW/mbas1mKtGthU7iTWAV9LX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeIn39m%2FbtrJ6YY9sLW%2Fmbas1mKtGthU7iTWAV9LX0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;372&quot; height=&quot;279&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;375&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;워후~ 오늘은 웨일대학 입학식이 있는 날  4학년 막학기 화석이 다시 새내기가 돼버렸다.. 신입생으로서 설레는 마음을 안고 가벼운 발걸음으로 집을 나섰다. 판교까지는 꽤 거리가 있으니깐 한 시간 정도 여유를 갖고 일찌감치 출발했다. 신분당선을 오늘 처음 타봤는데 삼천얼마가 찍혀서 깜짝 놀랐다. 왜케 비싼 거야 신분당선&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-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lx0hM/btrJ8nJ6HLi/9TZNndp7JUL7frVmzLs80K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lx0hM/btrJ8nJ6HLi/9TZNndp7JUL7frVmzLs80K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lx0hM/btrJ8nJ6HLi/9TZNndp7JUL7frVmzLs80K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flx0hM%2FbtrJ8nJ6HLi%2F9TZNndp7JUL7frVmzLs80K%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;416&quot; height=&quot;416&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;멀리서 보이는 초록초록한 빌딩이 오늘의 목적지인 줄 알았는데, 그 뒤의 회색 빌딩이 네이버 신사옥 1784였다. 꿈에 그리던 네이버에 견학 오게 돼서 기분이 몽글몽글했다ㅠ 평소에 이런 걸로 감정 변화가 많이 없는데 횡단보도를 건너면서도 뭔지 모를 위압감에 가슴이 웅장해졌다...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;신사옥 안에 들어가보니 디게 현대적이었다. 뭔가 더현대스럽기도 하고 하튼 멋져!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UNDd5/btrJ753Q8V9/Wz8SUxXGOBxISQFg63tCOk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UNDd5/btrJ753Q8V9/Wz8SUxXGOBxISQFg63tCOk/img.png&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot; data-is-animation=&quot;false&quot; width=&quot;468&quot; height=&quot;468&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UNDd5/btrJ753Q8V9/Wz8SUxXGOBxISQFg63tCOk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUNDd5%2FbtrJ753Q8V9%2FWz8SUxXGOBxISQFg63tCOk%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;3024&quot; height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kQpU8/btrJ8H2DF4m/cELD6MxjDkUskWkYp8hpG1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kQpU8/btrJ8H2DF4m/cELD6MxjDkUskWkYp8hpG1/img.png&quot; data-origin-width=&quot;2374&quot; data-origin-height=&quot;2374&quot; data-is-animation=&quot;false&quot; data-filename=&quot;blob&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kQpU8/btrJ8H2DF4m/cELD6MxjDkUskWkYp8hpG1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkQpU8%2FbtrJ8H2DF4m%2FcELD6MxjDkUskWkYp8hpG1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;2374&quot; height=&quot;2374&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&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;로비에서 50분이 되기까지 기다리다가 약속 시간이 되고 운영진분들께서 오셨다. 리셉션에서 방문증을 발급받고 다 같이 2층 웨일대학 모임 장소로 이동했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b23rU3/btrJ7dV1EZd/09qxR1MXSU5nzzq6y6BjQK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b23rU3/btrJ7dV1EZd/09qxR1MXSU5nzzq6y6BjQK/img.png&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b23rU3/btrJ7dV1EZd/09qxR1MXSU5nzzq6y6BjQK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb23rU3%2FbtrJ7dV1EZd%2F09qxR1MXSU5nzzq6y6BjQK%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;3024&quot; height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDZvx4/btrJ7r0Oopw/yi8cbDShfw1hUcWidGZPI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDZvx4/btrJ7r0Oopw/yi8cbDShfw1hUcWidGZPI1/img.png&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot; data-is-animation=&quot;false&quot; width=&quot;505&quot; height=&quot;505&quot; data-widthpercent=&quot;50&quot; style=&quot;width: 49.4186%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDZvx4/btrJ7r0Oopw/yi8cbDShfw1hUcWidGZPI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDZvx4%2FbtrJ7r0Oopw%2Fyi8cbDShfw1hUcWidGZPI1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;3024&quot; height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&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;자리마다 이름표랑 네이버 웨일 굿즈들도 미리 준비돼있었다. 웨일 스티커도 있었는데 집에 오자마자 맥북에 야무지게 몇 개 붙여줬다 히히. 회의장 뒤편에는 간식들이랑 물도 준비해주셨다. 운영진분들께서 이번 행사를 정말 세심히 준비해주신 것 같아 너무 감사했다 &lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxDbRk/btrJ7srSOGi/JmTHNlmYNdkKjYkgee5UWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxDbRk/btrJ7srSOGi/JmTHNlmYNdkKjYkgee5UWk/img.png&quot; data-origin-width=&quot;2794&quot; data-origin-height=&quot;2794&quot; data-is-animation=&quot;false&quot; width=&quot;413&quot; height=&quot;413&quot; data-filename=&quot;blob&quot; data-widthpercent=&quot;50&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxDbRk/btrJ7srSOGi/JmTHNlmYNdkKjYkgee5UWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxDbRk%2FbtrJ7srSOGi%2FJmTHNlmYNdkKjYkgee5UWk%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;2794&quot; height=&quot;2794&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tTs4I/btrJ6zyxkEe/WtsHX2VEo8Y2UODs9HdpDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tTs4I/btrJ6zyxkEe/WtsHX2VEo8Y2UODs9HdpDk/img.png&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot; data-is-animation=&quot;false&quot; width=&quot;539&quot; height=&quot;539&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tTs4I/btrJ6zyxkEe/WtsHX2VEo8Y2UODs9HdpDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtTs4I%2FbtrJ6zyxkEe%2FWtsHX2VEo8Y2UODs9HdpDk%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;3024&quot; height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&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;웨일대학 입학식이 시작되고 웨일에 대한 간단한 소개와 앞으로 서포터즈들이 진행해야 할 미션들에 대해 설명해주셨다. 웨일의 개발 계기에 대한 설명을 들었을 때 네이버의 신념을 알 수 있었는데 이게 정말 멋있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;얼마 전 카카오 vs 구글 사태에 비교해 이해를 도와주셨는데, 웹 브라우저계에서 절대적인 영향력을 갖고 있는 크롬의 정책에 흔들리지 않게 대항하고자 웨일을 개발하게 됐다고 하셨다. 이미 막강한 외국 브라우저들을 상대로 브라우저를 개발해 성공적으로 자리매김한다는 것이 쉽지 않았을 텐데.. 이렇게 또 개발자가 갖춰야 할 덕목이 늘었다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sbAu0/btrJ9uvfdko/gMfBttdhHkudNgQkuxsjak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sbAu0/btrJ9uvfdko/gMfBttdhHkudNgQkuxsjak/img.png&quot; data-alt=&quot;리스펙 &quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sbAu0/btrJ9uvfdko/gMfBttdhHkudNgQkuxsjak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsbAu0%2FbtrJ9uvfdko%2FgMfBttdhHkudNgQkuxsjak%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;242&quot; height=&quot;242&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;리스펙 &lt;/figcaption&gt;
&lt;/figure&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;다음은 팀 빌딩 시간~ &lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;2팀의 마케팅, 기획, 디자인 서포터즈분들과 간단한 자기소개를 마치고 팀장, 팀명을 골랐다. 팀장은 &lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;사다리 타기로&lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt; 골랐는데... 내가 &lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;걸렸따...ㅎ&lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt; 항상 &lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;이럴 때마다&lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt; 운이 &lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;없더라ㅠ&lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt; 팀명은 팀원의 아이디어로 이상한 범고래가 채택됐다~&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로 오늘 프로그램 중 가장 기대했던 신사옥 투어 시간! 네이버 신사옥은 세계최초의 로봇 친화 건물이다. 그래서 그런지 여기저기 로봇들이 돌아댕긴다. 그림 그리는 로봇, 배달 다니는 로봇 등등 많이 로봇들이 거주하고 있었다. 심지어 로봇 전용 엘리베이터도 있는데 이것도 너무 귀여워서 사이트에서 가져와봤다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/99rYO/btrJ8nckpvW/QcjBp4zWPdksieTHJMteHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/99rYO/btrJ8nckpvW/QcjBp4zWPdksieTHJMteHK/img.png&quot; data-origin-width=&quot;1422&quot; data-origin-height=&quot;2133&quot; data-is-animation=&quot;false&quot; data-filename=&quot;blob&quot; style=&quot;width: 39.5349%; margin-right: 10px;&quot; data-widthpercent=&quot;40&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/99rYO/btrJ8nckpvW/QcjBp4zWPdksieTHJMteHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F99rYO%2FbtrJ8nckpvW%2FQcjBp4zWPdksieTHJMteHK%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;1422&quot; height=&quot;2133&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qIxDW/btrJ7RrrQJC/WwZhGk8aaJJpf6ppjLlLl0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qIxDW/btrJ7RrrQJC/WwZhGk8aaJJpf6ppjLlLl0/img.png&quot; width=&quot;332&quot; height=&quot;332&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;60&quot; style=&quot;width: 59.3023%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qIxDW/btrJ7RrrQJC/WwZhGk8aaJJpf6ppjLlLl0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqIxDW%2FbtrJ7RrrQJC%2FWwZhGk8aaJJpf6ppjLlLl0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;3024&quot; height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;투어를 다녀오니 운영진분들께서 마카롱을 준비해주셧다ㅠㅠ 오늘 정말 운영진분들의 배려에 하루종일 감동만 받다온 것 같다. 집에 와서 가족들과 맛있게 잘 먹었습니다!! 감사합니다(๑&amp;gt;؂&amp;bull;̀๑)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOse2E/btrJ6ZDK47W/cudQ9em7eIKS8QCAfPX1Gk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOse2E/btrJ6ZDK47W/cudQ9em7eIKS8QCAfPX1Gk/img.png&quot; data-alt=&quot;너무 쫜득하고 달콤하고 상큼하고 귀엽고 사르르 녹고 한입에 냠&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOse2E/btrJ6ZDK47W/cudQ9em7eIKS8QCAfPX1Gk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOse2E%2FbtrJ6ZDK47W%2FcudQ9em7eIKS8QCAfPX1Gk%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;528&quot; height=&quot;528&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;너무 쫜득하고 달콤하고 상큼하고 귀엽고 사르르 녹고 한입에 냠&lt;/figcaption&gt;
&lt;/figure&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;네이버 신사옥 방문 너무 즐겁고 좋은데 왕복 4시간은 쉽지 않았다ㅠㅠ 특히 딱 집에가는 길이 퇴근길에 겹쳐서 우당탕탕 9호선 급행 타고 시체마냥 집으로 돌아왔다.. 그래도 오늘은 불금이니깐!! 메이플 레벨업 하면서 재충전해야겠다 그럼 안뇽~ &lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_edited_blob&quot; data-origin-width=&quot;1936&quot; data-origin-height=&quot;1936&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZWMxc/btrJ7q1XnPN/VklBYuTInRnYrQWnrw2xuk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZWMxc/btrJ7q1XnPN/VklBYuTInRnYrQWnrw2xuk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZWMxc/btrJ7q1XnPN/VklBYuTInRnYrQWnrw2xuk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZWMxc%2FbtrJ7q1XnPN%2FVklBYuTInRnYrQWnrw2xuk%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;384&quot; height=&quot;387&quot; data-filename=&quot;edited_edited_blob&quot; data-origin-width=&quot;1936&quot; data-origin-height=&quot;1936&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Extracurricular Activies/2022 웨일대학</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/299</guid>
      <comments>https://miinsun.tistory.com/299#entry299comment</comments>
      <pubDate>Sat, 20 Aug 2022 02:47:26 +0900</pubDate>
    </item>
    <item>
      <title>[2022 웨일대학] 2022 웨일대학 서류 합격 후기(개발 분야)</title>
      <link>https://miinsun.tistory.com/298</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;740&quot; data-origin-height=&quot;1368&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JM9wF/btrJ6Q71PTs/tKrqY3CDHm4AkOjUPaaX9k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JM9wF/btrJ6Q71PTs/tKrqY3CDHm4AkOjUPaaX9k/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JM9wF/btrJ6Q71PTs/tKrqY3CDHm4AkOjUPaaX9k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJM9wF%2FbtrJ6Q71PTs%2FtKrqY3CDHm4AkOjUPaaX9k%2Fimg.jpg&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; loading=&quot;lazy&quot; width=&quot;431&quot; height=&quot;797&quot; data-origin-width=&quot;740&quot; data-origin-height=&quot;1368&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;네이버 클라우드 주관 서포터즈에 이어 네이버 웨일 서포터즈에도 합격하게 됐다 &lt;br /&gt;&lt;br /&gt;먼저, 웨일 대학에 대해 간단히 소개하자면 웨일 대학(Whale College Club)은 대학생들을 대상으로 네이버 웨일 브라우저의 인지도를 높이고 실제 사용까지 이어질 수 있는 아이디어를 발굴 및 실행하는 서포터즈 활동이다. 4개의 분야(마케팅, 기획, 디자인, 개발)에서 20명을 선발하고 서포터즈 활동 시 다양한 혜택이 주어진다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;활동 기간&lt;/b&gt;은 8월 19일부터 11월 18일까지 약 3개월이고,&lt;/li&gt;
&lt;li&gt;&lt;b&gt;활동 혜택&lt;/b&gt;은 네이버 임직원 멘토링, 수료증 발급, 소정의 활동비, 네이버 신사옥 체험 기회 등이 있다.&lt;/li&gt;
&lt;li&gt;대면으로 진행되는 &lt;b&gt;4번의 정기모임&lt;/b&gt;은 필수로 모두 참여할 수 있어야 한다. (8/19, 9/16, 10/14, 11/18)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2480&quot; data-origin-height=&quot;3508&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mV6ph/btrJ8ZotquF/NjAVjljUkrMrnwDtB7CT21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mV6ph/btrJ8ZotquF/NjAVjljUkrMrnwDtB7CT21/img.png&quot; data-alt=&quot;웨일대학 입학통지서☺️&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mV6ph/btrJ8ZotquF/NjAVjljUkrMrnwDtB7CT21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmV6ph%2FbtrJ8ZotquF%2FNjAVjljUkrMrnwDtB7CT21%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;321&quot; height=&quot;454&quot; data-origin-width=&quot;2480&quot; data-origin-height=&quot;3508&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;웨일대학 입학통지서☺️&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;평소랑 다름없이 인턴공고를 보고 있던 어느 날 링커리어 실시간 순위가 웨일 대학으로 도배돼있길래 깜짝 놀라 후다닥 메일함을 확인해봤다. 벌써 이렇게 빨리 결과가 나왔다니!!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;802&quot; data-origin-height=&quot;910&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/edy0gn/btrJ9vnhyoG/7KEEM93xRhFYTzk3B0PYf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/edy0gn/btrJ9vnhyoG/7KEEM93xRhFYTzk3B0PYf0/img.png&quot; data-alt=&quot;이게 무슨일이람..&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/edy0gn/btrJ9vnhyoG/7KEEM93xRhFYTzk3B0PYf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fedy0gn%2FbtrJ9vnhyoG%2F7KEEM93xRhFYTzk3B0PYf0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;341&quot; height=&quot;387&quot; data-origin-width=&quot;802&quot; data-origin-height=&quot;910&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;이게 무슨일이람..&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;두근거리는 마음을 진정시키고 메일을 확인했다!! 결과는 합격!!!! 결과가 믿기지 않아서 메일을 몇 번이고 확인했다ㅜㅜ&lt;br /&gt;이번 웨일 대학은 4개의 분야에서 5명씩 총 20명을 뽑는데 약 2000여 명의 사람들이 지원을 했다. 내가 100:1의 경쟁자를 뚫고 합격을 했다는 건데.. 그동안 입시를 포함한 지금껏 겪은 활동 중 가장 경쟁률이 높았기에 합격 사실을 알게 되고도 한동안은 얼떨떨했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1762&quot; data-origin-height=&quot;246&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tLxN1/btrJ7flUsVD/0gHuxIdfMBkmjWkTIskRP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tLxN1/btrJ7flUsVD/0gHuxIdfMBkmjWkTIskRP1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tLxN1/btrJ7flUsVD/0gHuxIdfMBkmjWkTIskRP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtLxN1%2FbtrJ7flUsVD%2F0gHuxIdfMBkmjWkTIskRP1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;653&quot; height=&quot;91&quot; data-origin-width=&quot;1762&quot; data-origin-height=&quot;246&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;각설하고 서류 합격후기를 계속해서 쓰자면,&lt;br /&gt;이번 웨일 대학은 별도의 면접 없이 자기소개서만으로 서포터즈를 선별했기 때문에 평소 면접에 소질이 없던 나에게는 나름 유리한 환경이라 생각돼 가벼운 마음에 지원하게 됐고. 지원서는 웨일 대학에 맞게 기존에 작성해둔 자소서와 포트폴리오를 후다닥 변형해서 1시간 만에 제출했다.&lt;br /&gt;1 지망은 개발, 2 지망은 기획으로 선택했다. 나는 오직 개발만 파왔기 때문에 기획과 관련된 내용은 거의 쓰지 않고 오직 개발에 관한 경험에만 집중해서 자소서를 작성했다.&lt;br /&gt;자소서를 작성했던 요령은 사실 별거 없다..&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;간단한 자기소개를 해주세요.&lt;/b&gt;&lt;br /&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;제일 쉬웠던 항목이다. 기존에 미리 써뒀던 틀에서 거의 수정 없이 바로 제출을 했는데,&lt;/li&gt;
&lt;li&gt;나는 소통과 공감을 중점으로 둔 개발자이고, 도전을 두려워하지 않는다는 것을 간략하게 어필했던 것 같다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;웨일 대학에 지원하게 된 동기 및 활동 기간 동안 얻고 싶은 것&lt;/b&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;나는 전부터 남들이 뭐라 하든 웨일을 사용하던 웨일 찐 덕후이다.. 웨일이 얼마나 편한데! 그래서 이 항목에서 쓸 내용이 정말 많았는데. 진성 오타쿠답게 내가 웨일을 왜 좋아하는지 웨일에 왜 진심인지를 구구절절~~ 웨일에 대한 애정을 가득 담아 작성했다.&lt;/li&gt;
&lt;li&gt;다들 웨일 사이드바랑 듀얼 탭 꼭 사용해보세요 진짜.. 모니터가 작거나 듀얼 모니터 아닐 때 쓰면 진짜 편해요.. 개발할 때도 진짜 편한데..&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;웨일 대학에서 해보고 싶은 것&lt;/b&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;이 문항에는 웨일 대학을 하는 3개월 동안 여러 분야의 사람들과 협력해서 간단한 확장 앱을 제작하고 싶다는 희망을 적었다. 3개월 동안 웨일 대학에 몰두해서 꼭 프로젝트를 완성하겠다는 패기를 보여줬다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;추가로 하고 싶은 말이 있다면 자유롭게 해 주세요.&lt;/b&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;이번 웨일 대학을 통해 나만의 지속 가능한 개발자 커뮤니티를 갖고 싶었다. 그리고 그 부분에 대해 긍정적으로 주저리주저리 작성했던 것 같다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;마지막으로 포트폴리오는 노션으로 미리 작성해둔 포트폴리오를 제출했다.&lt;br /&gt;포트폴리오에는 간단한 인적사항, 프로젝트 경험, 공모전&lt;span style=&quot;color: #373a3c;&quot;&gt;&amp;middot;대외활동 경험, 자격증과 같은 정보를 작성했다. 대략적인 스펙은 인턴 1, 수상 3, 동아리 3, 공모전 2번 정도고 이렇게 모와두니깐 pdf 10장 정도 나왔다.&lt;/span&gt;&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;보통 서포터즈 1기는 경쟁률이 이 정도로 빡세진 않을텐데데.. 네이버의 인기가 상당하다는 것을 다시 한번 확인할 수 있었다. 어렵게 합격한 만큼 앞으로 초심 잃지 말고 열심히 해봐야지!! 3개월 동안 배포 가능한 프로젝트 제작을 목표로 열심히 달려보자  &amp;zwj;♀️ &amp;zwj;♀️ &amp;zwj;♀️&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biAzUC/btrJ6ZwW3G6/hvbTSumuvVs52LRRvhzsB0/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biAzUC/btrJ6ZwW3G6/hvbTSumuvVs52LRRvhzsB0/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biAzUC/btrJ6ZwW3G6/hvbTSumuvVs52LRRvhzsB0/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/biAzUC/btrJ6ZwW3G6/hvbTSumuvVs52LRRvhzsB0/img.gif&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; loading=&quot;lazy&quot; width=&quot;469&quot; height=&quot;268&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Extracurricular Activies/2022 웨일대학</category>
      <category>Whale</category>
      <category>웨일 서포터즈</category>
      <category>웨일 합격</category>
      <category>웨일대학</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/298</guid>
      <comments>https://miinsun.tistory.com/298#entry298comment</comments>
      <pubDate>Sat, 20 Aug 2022 00:01:06 +0900</pubDate>
    </item>
    <item>
      <title>[디자인패턴/자바] 옵저버 패턴 Observer Pattern</title>
      <link>https://miinsun.tistory.com/297</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btyMbz/btrJGVgX9tG/UVpXLGFCHWPKMpV0UKK2Zk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btyMbz/btrJGVgX9tG/UVpXLGFCHWPKMpV0UKK2Zk/img.webp&quot; data-alt=&quot;기상 스테이션 프로젝트&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btyMbz/btrJGVgX9tG/UVpXLGFCHWPKMpV0UKK2Zk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtyMbz%2FbtrJGVgX9tG%2FUVpXLGFCHWPKMpV0UKK2Zk%2Fimg.webp&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; loading=&quot;lazy&quot; width=&quot;507&quot; height=&quot;338&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;기상 스테이션 프로젝트&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기상 스테이션은&lt;span&gt;&amp;nbsp;&lt;/span&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;u&gt;옵저버 패턴&lt;/u&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위와 같은 기능은 옵저버 패턴의 기본 기능들로 이뤄져있다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;옵저버 패턴은 &lt;br /&gt;한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다 의존성을 정의한다.&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;옵저버 패턴에서는 정보를 제공하는 객체는 &quot;주제&quot;라고 하며, 정보를 제공받는 객체는 &quot;옵저버&quot;라 한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;옵저버 패턴은 일련의 객체 사이에서 일대다 관계를 정의한다. (1:주제, M:옵저버)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;옵저버는 주제에 딸려 있으며 주제의 상태가 바뀌면 옵저버에게 정보가 전달됩니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;옵저버 패턴은 느슨한 결합이다 -&amp;gt; 주제와 옵저버는 달라져도 서로 영향을 받지 않는다.&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;느슨하게 결합하는 디자인을 사용하면 객체 사이의 상호의존성을 최소화할 수 있어 변경 사항이 생겨도 무난히 처리할 수 있는 유연한 객체지향 시스템을 구축 할 수 있다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;주제는 옵저버의 구상 클래스가 무엇인지, 옵저버가 무엇을 하는지 알 필요가 없다.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;새로운 옵저버를 추가할 때도 주제를 변경할 필요가 전혀 없다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;주제와 옵저버는 서로 독립적으로 재사용할 수 있습니다.&lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;u&gt;주제 '기상 스테이션' 구현하기&lt;/u&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주제 인터페이스는 아래 코드와 같다. registerObsever로 옵저버를 등록하고 removeObserver로 옵저버를 삭제할 수 있다. notifyObserver는 주제의 상태가 변경 됐을 때 모든 옵저버에게 변경 된 내용을 알린다. 위에 소개된 메소드를 서브 클래스가 구현 할 수 있도록 인터페이스화 한다.&lt;/p&gt;
&lt;pre id=&quot;code_1660571243076&quot; class=&quot;cs&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public interface Subject{
	public void registerObserver(Observer o);	// 옵저버를 등록
    public void removeObserver(Observer o);		// 옵저버를 삭제
    public void notifyObservers();	// 주제의 상태가 변경됐을 때, 모든 옵저버에게 내용을 알림
}

public interface Observer{
	public void update (float tmp, float humidity, float pressure);	// 기상 정보가 변경됐을 때, 옵저버에게 전달되는 값
}

public interface DisplayElement{
	public void display();
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Weather Station을 코드로 구현하면 다음과 같다.&lt;/p&gt;
&lt;pre id=&quot;code_1660573070514&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class WeatherData implemetns Subject{
	private List&amp;lt;Observer&amp;gt; observers;
    private float temp;
    private float humidity;
    private float pressure;
    
    public WeatherData(){
    	observers = new ArrayList&amp;lt;Observer&amp;gt;();
    };
    
    public void registerObserver(Observer o){
    	observers.add(o);
    }
    
    public void removeObserver(Observer o){
    	observers.remove(o);
    }
    
    public void notifyObserver(){
    	for(Observer observer : observers){
        	observers.update(temp, humidity, pressure);
        }
    }
    
    public void measurementsChanged(){
    	notifyObservers();
    }
    
    public void setMeasurements(float temp, float humidity, float pressure){
    	this.temp = temp;
        this.humidity = humidity;
        this.pressure = pressure;
        measurementsChanged();
    }
}&lt;/code&gt;&lt;/pre&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;고객사에 Observer 코드를 적용하면&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1660575118951&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class CurrentConditionsDisplay implements Observers, DisplayElements{
	private flaot temp;
    private flaot humidity;
    private WeatherData weatherData;
    
    public CurrentConditionsDisplay(WeatherData weatherData){
    	this.weatherData = weatherData;
        weatherData.registerObserver(this);
    }
    
    public void update(float temp, float humidity, float pressure){
    	this.temp = temp;
        this.humidity = humidity;
        display();
    }
    
    public void display(){
    	System.out.println(){&quot;현재 상태: 온도&quot; + temp + &quot;F, 습도 &quot; + humidity() + &quot;%&quot;};
    }
}&lt;/code&gt;&lt;/pre&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;/p&gt;
&lt;pre id=&quot;code_1660575435663&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class WeatherStation{
	public static void main(String[] args){
    	WeatherData weatherData = new WeatherData();
        
        Phone phone = new Phone(weatherData);
        Tab tab = new Tab(weatherData);
        
        weatherData.setMeasurements(80, 65, 30.4f);
        weatherData.setMeasurements(82, 70, 29.2f);
        weatherData.setMeasurements(78, 90, 29.2f);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;옵저버 방식은 푸시 방식과 풀 방식이 있는데 보통 옵저버가 필요한 데이터를 골라서 가져가도록 하는 방법이 더 좋게 작용합니다. 고객이 WeatherData 객체로부터 필요할 때마다 데이터를 끌어오면 코드를 일반화 하기 쉽고, 다른 고객을 추가히기도 더 쉽습니다. 주제가 자신의 데이터에 관한 getter메소드를 가진다면 필요한 데이터를 당겨올 때 해당 메소드를 호출할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고로 JDK에 있는 자바빈과 스윙 라이브러리에도 옵저버 패턴을 쓰고 있다.이처럼 디자인 패턴을 배우면 라이브러리가 설계된 원리와 동기를 쉽고 빠르게 이해할 수있다는 장점이 있다. 만약 자바빈에 있는 옵저버 패턴이 궁금하다면 PropertyChangeListener 인터페이스를 확인합시다.&amp;nbsp;&lt;/p&gt;</description>
      <category>Language/Java</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/297</guid>
      <comments>https://miinsun.tistory.com/297#entry297comment</comments>
      <pubDate>Tue, 16 Aug 2022 00:28:46 +0900</pubDate>
    </item>
    <item>
      <title>[디자인패턴/자바] 전략 패턴 Strategy Pattern</title>
      <link>https://miinsun.tistory.com/296</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhaIL7/btrJFPBa5rX/xXW4KOkFDrCThKGeCtFX90/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhaIL7/btrJFPBa5rX/xXW4KOkFDrCThKGeCtFX90/img.jpg&quot; data-alt=&quot;오리 게임 만들기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhaIL7/btrJFPBa5rX/xXW4KOkFDrCThKGeCtFX90/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhaIL7%2FbtrJFPBa5rX%2FxXW4KOkFDrCThKGeCtFX90%2Fimg.jpg&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; loading=&quot;lazy&quot; width=&quot;457&quot; height=&quot;353&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;오리 게임 만들기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전략 패턴을 이용해 오리 시뮬레이션 게임을 만들어보자. 오리 시뮬레이션 게임은 다양한 오리들이 날아다니거나 꽥꽥 소리를 낼 수 있는 게임이다. 전략 패턴을 이용해서 가지각색의 오리들을 효율적으로 만들 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각각의 오리들은 다음의 기능을 가진다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;quack() - 꽥 꽥 울 수 있다.&lt;/li&gt;
&lt;li&gt;swim() - 수영할 수 있다.&lt;/li&gt;
&lt;li&gt;display() - 오리의 생김새를 표현한다.&lt;/li&gt;
&lt;li&gt;fly() - 오리는 날 수 있다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;256&quot; data-origin-height=&quot;338&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vnxNR/btrJELToArJ/FsJUX8ujKIUFTKBb9LY561/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vnxNR/btrJELToArJ/FsJUX8ujKIUFTKBb9LY561/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vnxNR/btrJELToArJ/FsJUX8ujKIUFTKBb9LY561/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvnxNR%2FbtrJELToArJ%2FFsJUX8ujKIUFTKBb9LY561%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;158&quot; height=&quot;209&quot; data-origin-width=&quot;256&quot; data-origin-height=&quot;338&quot;/&gt;&lt;/span&gt;&lt;/figure&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;u&gt;상속으로 구현하기&lt;/u&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 상속을 이용해 청둥오리와 고무 오리를 구현한다면 다음과 같을 것이다. 청둥오리는 display메서드를 오버라이드 했고, 고무 오리는 display, quack메서드를 오버라이드 했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;672&quot; data-origin-height=&quot;786&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TBlzv/btrJNHBHwMV/1z3HY6HK7JWnOYUE1mMJq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TBlzv/btrJNHBHwMV/1z3HY6HK7JWnOYUE1mMJq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TBlzv/btrJNHBHwMV/1z3HY6HK7JWnOYUE1mMJq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTBlzv%2FbtrJNHBHwMV%2F1z3HY6HK7JWnOYUE1mMJq0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;371&quot; height=&quot;434&quot; data-origin-width=&quot;672&quot; data-origin-height=&quot;786&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;고무 오리는 날지 않기 때문에 fly메서드가 필요하지 않다. 그렇지만, 슈퍼클래스에 있는 fly메서드를 상속받아 서브 클래스에 적합하지 않은 나는 행동이 추가될 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;u&gt;전략 패턴을 이용해 구현하기&lt;/u&gt;&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;전략 패턴은&lt;br /&gt;알고리즘 군을 정의하고 캡슐화해 각각의 알고리즘 군을 수정해서 쓸 수 있게 해 준다. 전략 패턴을 사용하면 클라이언트로부터 알고리즘을 분리해서 독립적으로 변경 할 수 있다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 상속으로 구현된 코드를 전략패턴을 이용해 고쳐보자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;438&quot; data-origin-height=&quot;516&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n0B4f/btrJBFeDaHR/xKCTbzBU8g0vyhy5tAC8p1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n0B4f/btrJBFeDaHR/xKCTbzBU8g0vyhy5tAC8p1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n0B4f/btrJBFeDaHR/xKCTbzBU8g0vyhy5tAC8p1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn0B4f%2FbtrJBFeDaHR%2FxKCTbzBU8g0vyhy5tAC8p1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;296&quot; height=&quot;349&quot; data-origin-width=&quot;438&quot; data-origin-height=&quot;516&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선, Duck 클래스에 flyBehavior와 quackBehavior라는 인터페이스 형식의 인스턴스 변수를 추가해준다. 각 오리 객체에서는 실행 시에 이 변수에 특정 행동 형식의 레퍼런스를 다형적으로 설정할 수 있다. 이 변수들이 기존의 fly, quack메서드의 역할을 하기 때문에, fly, quack 메서드는 제거하고 대신 performFly, performQuack메서드를 추가한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가된 인터페이스에 맞춰서 직접 프로그래밍을 해보자.&lt;/p&gt;
&lt;pre id=&quot;code_1660557744252&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public abstract class Duck{
        FlyBehavior flyBehavior;		// (1)
        QuackBehavior quackBehavior;	// (1)

        public Duck(){} ;

        public abstract void display();

        public void performFly(){		// (2)
            flyBehavior.fly();
        }

        public void performQuack(){
            quackBehavior.quack();		// (2)
        }

        public void swim(){
            System.out.println(&quot;모든 오리는 물에 뜹니다.&quot;);
        }
        
        public void setFlyBehavior(FlyBehavior fb){	// (3)
        	flyBehavior = fb;
        }
        
        public void setQuackBehavior(QuackBehavior qb){	// (3)
        	quackBehavior = qb;
        }
}&lt;/code&gt;&lt;/pre&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;(1) 행동 인터페이스 형식의 레퍼런스 변수 2개를 선언한다. 같은 패키지에 속하는 모든 서브클래스들은 이 변수를 상속받는다.&lt;/li&gt;
&lt;li&gt;(2) 행동 클래스에 행동을 위임&lt;/li&gt;
&lt;li&gt;(3) 오리 행동 형식을 동적으로 지정하기 위해 setter를 만들어준다. setter메서드를 포함해서 프로그램 실행 중에도 오리의 행동을 바꿀 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Fly, Quack의 행동을 구체화할 클래스를 작성해보자. 오리의 행동들을 일련의 행동으로 생각하는 대신, 하나의 같은 알고리즘 군으로 생각해보자.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1660558621284&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/* Fly 행동 인턴페이스 구현 */
public interface FlyBehavior {
	public void fly();
}

public class FlyWithWings implements FlyBehavior {
	public void fly(){
    	System.out.println(&quot;날 수 있다.&quot;);
    }
}

public class FlyNoWay implements FlyBehavior {
	public void fly(){
    	System.out.println(&quot;날 수 없다.&quot;);
    }
}

/* Quack 행동 인턴페이스 구현 */
public interface QuackBehavior {
	public void quack();
}

public class Quack implements QuackBehavior {
	public void quack(){
    	System.out.println(&quot;꽥&quot;);
    }
}

public class Squeak implements QuackBehavior {
	public void quack(){
    	System.out.println(&quot;삑&quot;);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테스트 코드는 다음과 같다. 고무 오리는 삑 하고 울고, 날지 못한다. 고무 오리의 세팅을 아래와 같이 바꿔줄 수 있다. 만약 실행 중에 고무 오리의 행동을 바꾸고 싶으면 원하는 행동에 해당하는 다시 setter메서드를 호출하면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1660559546319&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public calss Test{
	public static void main(String[] args){
    	Duck rubber = new MallardDuck();
        rubber.performQuack();	// &quot;꽥&quot;
        rubber.performFly();	// &quot;날 수 있다.
        
        rubber.setQuackBehavior(new Squeak);
        rubber.performQuack();	// &quot;삑&quot;
        rubber.setFlyBehavior(new FlyNoWay);
        rubber.performFly();	// &quot;날 수 없다.

    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 인터페이스 방식을 이용해 디자인하면 다른 형식의 객체에서도 나는 행동과 꽥꽥거리는 행동을 재사용할 수 있다. 그리고 기존의 행동 클래스를 수정하거나 날아다니는 행동을 사용하는 Duck 클래스를 전혀 건드리지 않고도 새로운 행동을 추가할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Language/Java</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/296</guid>
      <comments>https://miinsun.tistory.com/296#entry296comment</comments>
      <pubDate>Mon, 15 Aug 2022 19:41:19 +0900</pubDate>
    </item>
    <item>
      <title>[API 마켓 플레이스 서포터즈] 2022 API Market Place 서포터즈 발대식 후기</title>
      <link>https://miinsun.tistory.com/295</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/V6OZE/btrJAQ7zKuH/fwMfJtcWJQm8Zk3f4jQ3E0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/V6OZE/btrJAQ7zKuH/fwMfJtcWJQm8Zk3f4jQ3E0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/V6OZE/btrJAQ7zKuH/fwMfJtcWJQm8Zk3f4jQ3E0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FV6OZE%2FbtrJAQ7zKuH%2FfwMfJtcWJQm8Zk3f4jQ3E0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;567&quot; height=&quot;567&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요. 2022 API 마켓 플레이스 서포터즈&amp;nbsp;&amp;nbsp;윤민선입니다!&lt;br /&gt;이번에 들고온 포스팅은 2022 API Market Place 서포터즈 발대식 후기입니다.&lt;br /&gt;서포터즈 합격 후 첫 활동으로 잠실 소피텔 앰버서더 호텔에서 발대식이 진행됐습니다.&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;발대식 도착~&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;호텔에서 발대식이 진행됐기에 발대식 전날부터 설레는 마음을 품고 발대식 장소로 향했습니다. 들어가는 입구부터 너무 고급져서 놀랐습니다.. 이런 곳에서 발대식을 할 줄은 꿈에도 몰랐는데 주최 측에서 신경을 많이 써주신 것 같아 너무 감동이었습니다. &lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cy2DzK/btrJB4xiLOR/DVJDb5cHPsCaWNUVMum9q0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cy2DzK/btrJB4xiLOR/DVJDb5cHPsCaWNUVMum9q0/img.png&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot; style=&quot;width: 32.5581%; margin-right: 10px;&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cy2DzK/btrJB4xiLOR/DVJDb5cHPsCaWNUVMum9q0/img.png&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcy2DzK%2FbtrJB4xiLOR%2FDVJDb5cHPsCaWNUVMum9q0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;4032&quot; height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AE6co/btrJB4qwoqY/lYIZHd2TwdMHRDqdkVOvl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AE6co/btrJB4qwoqY/lYIZHd2TwdMHRDqdkVOvl1/img.png&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot; style=&quot;width: 32.5581%; margin-right: 10px;&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AE6co/btrJB4qwoqY/lYIZHd2TwdMHRDqdkVOvl1/img.png&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAE6co%2FbtrJB4qwoqY%2FlYIZHd2TwdMHRDqdkVOvl1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;4032&quot; height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcGW4P/btrJApCXSWJ/C6EmOkSgjuKHlantBpkYx1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcGW4P/btrJApCXSWJ/C6EmOkSgjuKHlantBpkYx1/img.png&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot; style=&quot;width: 32.5581%;&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;33.34&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcGW4P/btrJApCXSWJ/C6EmOkSgjuKHlantBpkYx1/img.png&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcGW4P%2FbtrJApCXSWJ%2FC6EmOkSgjuKHlantBpkYx1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;4032&quot; height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;발대식 장소로 향하면 출석 확인과 단체복을 지급받고 이렇게 배너로 발대식 일정을 확인 할 수 있었습니다. 또, 벽면에 포토 존이 있어서 잊지 않고 팀원들과 사진도 많이 찍어뒀습니다. 사진사분들도 생각보다 많이 계셨습니다. 중간중간에 서포터즈들의 다양한 모습들을 사진으로 담기 위해 노력해주셔서 감사한 마음이 컸습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PAVJU/btrJAMqT08S/8ZOGtyl0KJU6v4ahjMH3kK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PAVJU/btrJAMqT08S/8ZOGtyl0KJU6v4ahjMH3kK/img.png&quot; data-origin-width=&quot;2250&quot; data-origin-height=&quot;2250&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PAVJU/btrJAMqT08S/8ZOGtyl0KJU6v4ahjMH3kK/img.png&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPAVJU%2FbtrJAMqT08S%2F8ZOGtyl0KJU6v4ahjMH3kK%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;2250&quot; height=&quot;2250&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4t2xP/btrJ6PIfCCV/hn8qPmLTisHdXXK9SBowBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4t2xP/btrJ6PIfCCV/hn8qPmLTisHdXXK9SBowBk/img.png&quot; data-origin-width=&quot;1757&quot; data-origin-height=&quot;1757&quot; data-is-animation=&quot;false&quot; data-filename=&quot;blob&quot; data-widthpercent=&quot;50&quot; style=&quot;width: 49.4186%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4t2xP/btrJ6PIfCCV/hn8qPmLTisHdXXK9SBowBk/img.png&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4t2xP%2FbtrJ6PIfCCV%2Fhn8qPmLTisHdXXK9SBowBk%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;1757&quot; height=&quot;1757&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;팀원들과 포토존에서 &amp;amp;amp;amp;nbsp;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;드디어 시작된 발대식!!!&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;진행 요원분께서 저희를 개발 2팀 테이블로 안내해주셨습니다~ 까눌레랑 마실 거리들도 준비돼있어서 발대식동안 야금야금 간식을 챙겨 먹었습니다ㅎㅎ. 개발 1팀분들과 같은 테이블을 공유했는데, 발대식이 빠르게 진행했기 때문에 따로 대화할 기회가 없어 많이 아쉬웠습니다 &lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dDaV21/btrJBlzxVvf/f3LTblniQ9futAgVciYgW1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dDaV21/btrJBlzxVvf/f3LTblniQ9futAgVciYgW1/img.png&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot; style=&quot;width: 56.4784%; margin-right: 10px;&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;57.14&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dDaV21/btrJBlzxVvf/f3LTblniQ9futAgVciYgW1/img.png&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdDaV21%2FbtrJBlzxVvf%2Ff3LTblniQ9futAgVciYgW1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;3024&quot; height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CfOBL/btrJCpBbtNJ/amYswlU32q3dO18DNBySD1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CfOBL/btrJCpBbtNJ/amYswlU32q3dO18DNBySD1/img.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot; style=&quot;width: 42.3588%;&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;42.86&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CfOBL/btrJCpBbtNJ/amYswlU32q3dO18DNBySD1/img.png&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCfOBL%2FbtrJCpBbtNJ%2FamYswlU32q3dO18DNBySD1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1440&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;발대식이 시작되고 15분동안 간략하게 서포터즈들의 소개가 진행됐습니다. 모든 서포터즈들이 열정이 넘쳤던 만큼 자기소개 시간이 우수 서포터즈를 향한 의지 어필시간으로 변하게 됐습니다. 서포터즈들의 뜨거운 열정을 또 다시 확인할 수 있던 순간이었습니다 &lt;br /&gt;&lt;br /&gt;자기소개가 끝난 후, 센티언스 대표이사님께서 API 기본 교육 세미나를 진행해주셨습니다. API에 대한 간략한 설명과 openAPI의 장단점 등 서포터즈들이 알고 있으면 좋은 API 기초지식을 알려주셨습니다.&lt;br /&gt;&lt;br /&gt;다음은 네이버 클라우드의 매니저님께서 API MarketPlace의 소개를 도와주셨습니다. API marketplace 서포터즈 외에도 해커톤 등 다양한 활동이 있다는 것을 알 수 있었습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/diWRW6/btrJAc4Hqz6/1CwRV0gn9AbfMqKnHcKIQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/diWRW6/btrJAc4Hqz6/1CwRV0gn9AbfMqKnHcKIQ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/diWRW6/btrJAc4Hqz6/1CwRV0gn9AbfMqKnHcKIQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdiWRW6%2FbtrJAc4Hqz6%2F1CwRV0gn9AbfMqKnHcKIQ1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;585&quot; height=&quot;439&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt; API:SODE팀, 앞으로 화이팅  &lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;남은 시간에는 팀마다 팀장, 팀명을 정하고 앞으로의 활동계획을 수립하는 시간을 가졌습니다. 변수 명을 신중히 고르는 개발자답게 저희 팀은 팀명을 고르는데 대부분의 시간을 소비했습니다.&lt;br /&gt;&lt;br /&gt;어렵게 정한 팀명은 [API:SODE]로 API를 이용해 3개월 동안 잊지 못할 에피소드들을 만들어 가겠다는 뜻을 갖고 있습니다. 이때 작은 해프닝이 있었는데 같은 이름의 팀이 있어 서로 당황했던 사건도 있었습니다ㅎㅎ&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JZL2N/btrJAbZhK3X/btReGtReqptXnHxLUAMhBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JZL2N/btrJAbZhK3X/btReGtReqptXnHxLUAMhBk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JZL2N/btrJAbZhK3X/btReGtReqptXnHxLUAMhBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJZL2N%2FbtrJAbZhK3X%2FbtReGtReqptXnHxLUAMhBk%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;459&quot; height=&quot;459&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;네이버 클라우드 단체티를 입고 단체 사진을 찍으며 발대식은 마무리가 됐습니다~ 앞으로 3개월 동안 팀원들과 함께 초심을 잃지 않고 항상 열심히 하겠습니다! 세심하게 발대식 준비해주신 모든 관계자분들께도 감사한 마음을 전합니다 &lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1439&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bX43zO/btrJA45U9H0/F8OwxKCxKZv8cjwF6MOEZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bX43zO/btrJA45U9H0/F8OwxKCxKZv8cjwF6MOEZ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bX43zO/btrJA45U9H0/F8OwxKCxKZv8cjwF6MOEZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbX43zO%2FbtrJA45U9H0%2FF8OwxKCxKZv8cjwF6MOEZ1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;510&quot; height=&quot;383&quot; data-origin-width=&quot;1439&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Extracurricular Activies/2022 API MarkectPlace 서포터즈</category>
      <category>API Mark</category>
      <category>API marketplace</category>
      <category>API MarketPlace 글로벌 서포터즈</category>
      <category>appetizer</category>
      <category>Naver Cloud</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/295</guid>
      <comments>https://miinsun.tistory.com/295#entry295comment</comments>
      <pubDate>Fri, 12 Aug 2022 20:57:34 +0900</pubDate>
    </item>
    <item>
      <title>[API 마켓 플레이스 서포터즈] 2022 API Market Place 서포터즈 개발 분야 서류 및 면접 합격 후기</title>
      <link>https://miinsun.tistory.com/294</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 포스팅은 2022 API Market Place 서포터즈 합격 후기를 작성하려 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;API Market Place 서포터즈는 네이버 클라우드에서 주최하는 서포터즈로 국내 대기업과 중소 API 기업의 상생을 통한 글로벌 진출에 초점을 둔 클라우드 플랫폼 기반의 API 마켓 플레이스를 홍보를 돕는 서포터즈입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1809&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1gZ82/btrJxoLegn2/4cDfObzsk5KqdpL82rAPv0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1gZ82/btrJxoLegn2/4cDfObzsk5KqdpL82rAPv0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1gZ82/btrJxoLegn2/4cDfObzsk5KqdpL82rAPv0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1gZ82%2FbtrJxoLegn2%2F4cDfObzsk5KqdpL82rAPv0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;486&quot; height=&quot;687&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1809&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서포터즈에 합격하기 위해서는 서류와 면접 2가지 절차를 거쳐야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 3인 팀으로 지원했기 때문에 팀원들과 함께 서류와 면접 전형을 모두 함께 했습니다.&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. 서류&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;740&quot; data-origin-height=&quot;769&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0DCeh/btrJAbkyRpY/rAioCpnxJvMPjXDXS1k2k1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0DCeh/btrJAbkyRpY/rAioCpnxJvMPjXDXS1k2k1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0DCeh/btrJAbkyRpY/rAioCpnxJvMPjXDXS1k2k1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0DCeh%2FbtrJAbkyRpY%2FrAioCpnxJvMPjXDXS1k2k1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;552&quot; height=&quot;574&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;740&quot; data-origin-height=&quot;769&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발 분야의 서류에는&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 &lt;b&gt;기본적인 인적사항&lt;/b&gt;과 &lt;b&gt;개발 분야&lt;/b&gt;, &lt;b&gt;사용 언어&lt;/b&gt;, &lt;b&gt;활동 SNS 채널&lt;/b&gt;, &lt;b&gt;이력 사항 및 활동 경력&lt;/b&gt;들로 나눠져 있습니다. 3인 팀 지원이었기 때문에 모든 팀원들의 활동 경력(서포터스, 프로젝트 , 공모전, 동아리 등 등)을 작성했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음으로 자기소개서는 3 질문으로 &lt;b&gt;지원동기&lt;/b&gt;, &lt;b&gt;팀 소개,&lt;/b&gt; &lt;b&gt;활동계획 및 포부&lt;/b&gt;로 나눠져 있습니다. 모든 답변에는 500~1000자 이내로 성실히 답변해야 했습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;지원 동기는 백엔드 개발자로서 API 사용 경험 언급, 서포터즈&amp;nbsp;활동 중 기대되는 부분들에 언급하며 작성했습니다.&lt;/li&gt;
&lt;li&gt;팀 소개는 팀원들과 만나게 된 계기, 팀원들과의 팀워크, 팀원들의 역량에 대해 작성했습니다.&lt;/li&gt;
&lt;li&gt;활동계획 및 포부는 추후 서포터즈로써 어떤 프로젝트를 개발할지 구체적으로 작성했습니다. 또, 3개월 동안 끝까지 열심히 할 수 있음을 어필했습니다.&lt;/li&gt;
&lt;/ol&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. 면접&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서류를 합격한 뒤 3일 뒤에 면접이 진행됐습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;면접은 3대 3 다대다 면접이었고, 한 팀당 10~ 15분씩 진행됐습니다. 저는 팀 지원이었기에 팀원들과 함께 면접을 봤습니다.&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;저희 팀이 받았던 질문들은 &lt;/b&gt;간단한 자기소개, 팀 지원 동기, api 기술 활용 유무, 마지막 어필 정도가 있었습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&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-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1329&quot; data-origin-height=&quot;1054&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dtZy88/btrJA3y96DL/adJ5NrFdkGhTSJyhPKOmvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dtZy88/btrJA3y96DL/adJ5NrFdkGhTSJyhPKOmvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dtZy88/btrJA3y96DL/adJ5NrFdkGhTSJyhPKOmvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdtZy88%2FbtrJA3y96DL%2FadJ5NrFdkGhTSJyhPKOmvK%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;356&quot; height=&quot;282&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1329&quot; data-origin-height=&quot;1054&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;결과는 합격이었습니다!!&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나중에 듣기로 경쟁률이 10대 1이 약간 안된다고 들었는데, 저희 팀이 합격할 수 있었던 이유를 생각해보면 팀 지원이었던 점과 팀원들이 모두 고학년의 경력이 많은 친구들이었던 점이 있을 것 같습니다.&lt;/p&gt;</description>
      <category>Extracurricular Activies/2022 API MarkectPlace 서포터즈</category>
      <category>API</category>
      <category>API marketplace</category>
      <category>API MarketPlace 글로벌 서포터즈</category>
      <category>API 마켓플레이스</category>
      <category>네이버 클라우드</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/294</guid>
      <comments>https://miinsun.tistory.com/294#entry294comment</comments>
      <pubDate>Fri, 12 Aug 2022 19:31:02 +0900</pubDate>
    </item>
    <item>
      <title>[삼성 SDS 알고리즘 특강] 삼성 SW 검정 Professional 후기</title>
      <link>https://miinsun.tistory.com/293</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;삼성 SDS 알고리즘 특강 수료 조건 중 SW 검정 응시가 있기에 교육이 종료되자마자 다음날 SW검정 시험을 보도록 되어 있다. 사실 프로 등급은 백준 플레티넘 정도 수준이라는 강사님의 말에 반쯤 포기하고 있었는데, 후기의 많은 사람들이 Pro 등급에 합격하는 걸 보고 자격지심이 생겨서 시험 직전 날까지 밤새 공부하게 됐다..&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AJR3N/btrJcGi6ybY/i8RmGKxbBPExyHEsaiSfNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AJR3N/btrJcGi6ybY/i8RmGKxbBPExyHEsaiSfNK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AJR3N/btrJcGi6ybY/i8RmGKxbBPExyHEsaiSfNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAJR3N%2FbtrJcGi6ybY%2Fi8RmGKxbBPExyHEsaiSfNK%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;443&quot; height=&quot;443&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&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;시험은 4시간 동안 1문제를 풀어야 하며 응시 언어는 Java, C, C++가 있다. 따로 필요한 준비물은 없고 꼭 신분증은 챙겨가자. 또 개인 볼펜을 챙겨가면 시험 볼 때 편하다. 아 그리고 마지막으로 해당 시험에서 합격하면 삼성 SDS 입사 시 가산점이 생긴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 첫 시험에서 아쉽게 불합격했는데, 다행히도 두 번째 기회를 주셔서 두번의 시험을 볼 수 있었다. 첫 시험은 모든 테스트 케이스를 풀었는데 시간초과로 100점을 받지 못했다. 아직도 뭘 놓쳤는지 모르겠는데, 아쉬운 마음에 4시간 내내 어떻게든 통과하고자 갖은 애를 썻던 기억이 난다ㅠㅠ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두번째 시험은 첫 번째 시험보다는 쉬웠다. 시험이 시작되고 40분에서 1시간 정도는 문제를 이해하고 어떻게 해결할지 구상하는데 온전히 시간을 썻고 2시간동안은 구상했던 내용들을 코드로 구현했다. 시간이 1시간정도 남았을 때, 주석 정리랑 예외처리를 20분간 하고 더 이상 고칠 게 없다 싶어 40분을 남기고 시험장을 나왔다. 이번 시험이 1차 시험에 비해서 쉬웠어서 꽤 많은 사람들이 합격했을 거 같았다.&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;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;997&quot; data-origin-height=&quot;1439&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bG1DPL/btrI6eUYeWf/RV3TbMGDauSQXVzdPD85E1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bG1DPL/btrI6eUYeWf/RV3TbMGDauSQXVzdPD85E1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bG1DPL/btrI6eUYeWf/RV3TbMGDauSQXVzdPD85E1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbG1DPL%2FbtrI6eUYeWf%2FRV3TbMGDauSQXVzdPD85E1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;320&quot; height=&quot;462&quot; data-origin-width=&quot;997&quot; data-origin-height=&quot;1439&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시험 직후 오후 3시에 바로 결과가 도착했다. 집에 돌아와서 녹초 상태였는데 합격 문자를 받자마자 뛸 듯이 기분이 좋았다. 그간에 노력에 보답받은 기분ㅠ 앞으로도 열심히 살아야지를 다짐하게 됐다. 빠른 시일 내에 수료증이 와줬으면..&lt;/p&gt;</description>
      <category>Extracurricular Activies/2022 삼성 SDS 하계 알고리즘 특강</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/293</guid>
      <comments>https://miinsun.tistory.com/293#entry293comment</comments>
      <pubDate>Mon, 8 Aug 2022 00:30:06 +0900</pubDate>
    </item>
    <item>
      <title>[삼성 SDS 알고리즘 특강] 삼성SDS 알고리즘 특강 후기</title>
      <link>https://miinsun.tistory.com/292</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;840&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dutqDS/btrI4VBOVdS/PTyV7RrIqE8Q9wDaqkGraK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dutqDS/btrI4VBOVdS/PTyV7RrIqE8Q9wDaqkGraK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dutqDS/btrI4VBOVdS/PTyV7RrIqE8Q9wDaqkGraK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdutqDS%2FbtrI4VBOVdS%2FPTyV7RrIqE8Q9wDaqkGraK%2Fimg.jpg&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; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;840&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;840&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1) 지원 동기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 국비 과정을 듣고 있었는데 내가 기대했던 교육 과정이 아니라서 교육을 더 이상 이어가기에는 무리가 있기에 교육을 그만뒀었다. 딱&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt; 국비 교육을 그만둔 타이밍에 삼성 알고리즘 특강 공고를 에타에서 발견하게 됐고, 붕 뜬 기간 동안 들으면 좋을 것 같았다.&amp;nbsp;&lt;/span&gt;기존에 알고리즘을 독학하는데 어려움이 있었기 때문에 2주동안 알고리즘을 마스터하자는 마인드로 지원하게 됐다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2) 선발 절차 후기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;사전 테스트는 5개의 문제를 일주일동안 풀면 되는데, 문제 난이도가 생각 이상으로 어려웠다. 한 문제 당 적어도 1시간 이상은 소요했어야 됐는데 공고에도 2~3시간 이내에 문제를 풀 것을 권장했다. 나는 5문제 중 3문제를 완전히 풀고, 한 문제는 시간 초과로 테스트 케이스 4개 정도를 성공하지 못했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과는 합격!!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;350&quot; data-origin-height=&quot;139&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UDqgc/btrI12nG0lq/FoRHpMCyC9eMkZhTp764Q0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UDqgc/btrI12nG0lq/FoRHpMCyC9eMkZhTp764Q0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UDqgc/btrI12nG0lq/FoRHpMCyC9eMkZhTp764Q0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUDqgc%2FbtrI12nG0lq%2FFoRHpMCyC9eMkZhTp764Q0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;350&quot; height=&quot;139&quot; data-origin-width=&quot;350&quot; data-origin-height=&quot;139&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작년 다른 사람들 후기를 참고했을 때 1.5문제 정도가 커트라인인 듯싶었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 삼성 알고리즘 특강을 준비한다면 DFS, BFS, DP 같은 간단한 알고리즘은 익혀두는 게 좋을 것 같다. 알고리즘 기초가 준비되지 않으면 2주 동안 교육 과정을 따라잡기 많이 어려울 수 있다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;3) 교육 후기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입과 테스트를 통과하고 교육 전 주에 교육 책이 배송됐다. 교육 전에 책 내용을 훑어봤는데 기존에 모르던 다양한 알고리즘들이 많아서 어서 빨리 교육을 받고 싶어 졌다ㅎㅎ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;교육 수료 조건은 2가지 조건을 달성해야 하는데, 첫 번째로 전체 교육의 80% 이상 출석이 필수이고, 두 번째로 SW검정 시험을 필수로 응시해야 한다. 코로나로 전 교육과정은 온라인으로 이뤄졌다. 사실 개인적으로 오프라인 수업을 선호했기에 이 부분은 많이 아쉬웠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;교육은 1주 차, 2주 차로 다른 강사님이 교육해주셨다. 두 분 다 삼성 SDS 현직 개발자분들이셨고 베테랑이셨기에 정말 신뢰가 갔다. 따로 교육 중간중간 QnA시간에 개발자를 준비할 때 알면 좋은 정보들을 많이 알려주셨다. 비록 온라인 과정이였지만, 두분다 내 귀감이 되어주셨고 화면 너머로 존경하게 됐다ㅠ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;교육 일정은 아래와 같았다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1,2일 차 - 알고리즘 기초 (구현, 완전 탐색)&lt;/li&gt;
&lt;li&gt;3일 차 - 자료구조&lt;/li&gt;
&lt;li&gt;4일 차 - 정수론&lt;/li&gt;
&lt;li&gt;5일 차 - 조합론&lt;/li&gt;
&lt;li&gt;6, 7, 8일 차 - 그래프&lt;/li&gt;
&lt;li&gt;9, 10 - 동적 계획법&lt;/li&gt;
&lt;/ul&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등을 찍을 수 있어서 겸사겸사 일이 잘 풀렸었다~&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;4) 한 줄 후기!&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;</description>
      <category>Extracurricular Activies/2022 삼성 SDS 하계 알고리즘 특강</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/292</guid>
      <comments>https://miinsun.tistory.com/292#entry292comment</comments>
      <pubDate>Sun, 7 Aug 2022 23:57:52 +0900</pubDate>
    </item>
    <item>
      <title>[BAEKJOON] 백준 구현 14499 :: 주사위 굴리기</title>
      <link>https://miinsun.tistory.com/291</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;630&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n91cp/btrHiFanrA9/0ZVyvhee2QB5i6UTx4Jq00/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n91cp/btrHiFanrA9/0ZVyvhee2QB5i6UTx4Jq00/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n91cp/btrHiFanrA9/0ZVyvhee2QB5i6UTx4Jq00/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn91cp%2FbtrHiFanrA9%2F0ZVyvhee2QB5i6UTx4Jq00%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;674&quot; height=&quot;354&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;630&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;

&lt;div id=&quot;SE-0d59672a-ff5e-4886-aa1e-4025ef2e709a&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;741&quot; data-origin-height=&quot;214&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bt5Y4d/btrHiW3YfM8/gB0P9N3f6hfAQtyj3SxKDK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bt5Y4d/btrHiW3YfM8/gB0P9N3f6hfAQtyj3SxKDK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bt5Y4d/btrHiW3YfM8/gB0P9N3f6hfAQtyj3SxKDK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbt5Y4d%2FbtrHiW3YfM8%2FgB0P9N3f6hfAQtyj3SxKDK%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;741&quot; height=&quot;214&quot; data-origin-width=&quot;741&quot; data-origin-height=&quot;214&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h3 id=&quot;SE-3db95ff2-a82e-49b5-a25d-d98d8743df9e&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt; &lt;b&gt;&amp;nbsp; 문제 설명&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;크기가 N&amp;times;M인 지도가 존재한다. 지도의 오른쪽은 동쪽, 위쪽은 북쪽이다. 이 지도의 위에 주사위가 하나 놓여져 있으며, 주사위의 전개도는 아래와 같다. 지도의 좌표는 (r, c)로 나타내며, r는 북쪽으로부터 떨어진 칸의 개수, c는 서쪽으로부터 떨어진 칸의 개수이다.&lt;/blockquote&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;49&quot; data-origin-height=&quot;81&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cnADJm/btrHic7j0aE/aFk28sJPnvqx3yhDKuJmfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cnADJm/btrHic7j0aE/aFk28sJPnvqx3yhDKuJmfK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cnADJm/btrHic7j0aE/aFk28sJPnvqx3yhDKuJmfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcnADJm%2FbtrHic7j0aE%2FaFk28sJPnvqx3yhDKuJmfK%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;49&quot; height=&quot;81&quot; data-origin-width=&quot;49&quot; data-origin-height=&quot;81&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;blockquote data-ke-style=&quot;style3&quot;&gt;주사위는 지도 위에 윗 면이 1이고, 동쪽을 바라보는 방향이 3인 상태로 놓여져 있으며, 놓여져 있는 곳의 좌표는 (x, y) 이다. 가장 처음에 주사위에는 모든 면에 0이 적혀져 있다.&lt;br /&gt;&lt;br /&gt;지도의 각 칸에는 정수가 하나씩 쓰여져 있다. 주사위를 굴렸을 때, 이동한 칸에 쓰여 있는 수가 0이면, 주사위의 바닥면에 쓰여 있는 수가 칸에 복사된다. 0이 아닌 경우에는 칸에 쓰여 있는 수가 주사위의 바닥면으로 복사되며, 칸에 쓰여 있는 수는 0이 된다.&lt;br /&gt;&lt;br /&gt;주사위를 놓은 곳의 좌표와 이동시키는 명령이 주어졌을 때, 주사위가 이동했을 때 마다 상단에 쓰여 있는 값을 구하는 프로그램을 작성하시오.&lt;br /&gt;&lt;br /&gt;주사위는 지도의 바깥으로 이동시킬 수 없다. 만약 바깥으로 이동시키려고 하는 경우에는 해당 명령을 무시해야 하며, 출력도 하면 안 된다.&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-0600fd11-7340-45d0-a174-17e969d7cdc0&quot;&gt;
&lt;div id=&quot;SE-0600fd11-7340-45d0-a174-17e969d7cdc0&quot;&gt;
&lt;div data-v-4b3ae1dc=&quot;&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt; &lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;입출력 예&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;입력&lt;/b&gt;&lt;span&gt;&amp;nbsp;&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;&amp;nbsp;첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 &amp;le; N, M &amp;le; 20), 주사위를 놓은 곳의 좌표 x, y(0 &amp;le; x &amp;le; N-1, 0 &amp;le; y &amp;le; M-1), 그리고 명령의 개수 K (1 &amp;le; K &amp;le; 1,000)가 주어진다.&lt;/li&gt;
&lt;li&gt;둘째 줄부터 N개의 줄에 지도에 쓰여 있는 수가 북쪽부터 남쪽으로, 각 줄은 서쪽부터 동쪽 순서대로 주어진다. 주사위를 놓은 칸에 쓰여 있는 수는 항상 0이다. 지도의 각 칸에 쓰여 있는 수는 10 미만의 자연수 또는 0이다.&lt;/li&gt;
&lt;li&gt;마지막 줄에는 이동하는 명령이 순서대로 주어진다. 동쪽은 1, 서쪽은 2, 북쪽은 3, 남쪽은 4로 주어진다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;SE-0600fd11-7340-45d0-a174-17e969d7cdc0&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;출력&lt;/b&gt;&lt;/p&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555;&quot;&gt;이동할 때마다 주사위의 윗 면에 쓰여 있는 수를 출력한다.&amp;nbsp;만약 바깥으로 이동시키려고 하는 경우에는 해당 명령을 무시해야 하며, 출력도 하면 안 된다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&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)&lt;/p&gt;
&lt;/div&gt;
&lt;div data-v-4b3ae1dc=&quot;&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-0600fd11-7340-45d0-a174-17e969d7cdc0&quot;&gt;
&lt;div data-v-4b3ae1dc=&quot;&quot;&gt;
&lt;pre class=&quot;java&quot; data-v-4b3ae1dc=&quot;&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;4 2 0 0 8
0 2
3 4
5 6
7 8
4 4 4 1 3 3 3 2&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&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)&lt;/p&gt;
&lt;div data-v-4b3ae1dc=&quot;&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-0600fd11-7340-45d0-a174-17e969d7cdc0&quot;&gt;
&lt;div data-v-4b3ae1dc=&quot;&quot;&gt;
&lt;pre id=&quot;code_1646925986905&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;0
0
3
0
0
8
6
3&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예제 입력 2)&lt;/p&gt;
&lt;pre id=&quot;code_1646925986905&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;3 3 1 1 9
1 2 3
4 0 5
6 7 8
1 3 2 2 4 4 1 1 3&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;SE-0600fd11-7340-45d0-a174-17e969d7cdc0&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예제 출력 2)&lt;/p&gt;
&lt;pre id=&quot;code_1646925986905&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;0
0
0
3
0
1
0
6
0&lt;/code&gt;&lt;/pre&gt;
&lt;p id=&quot;SE-b0263d5f-e537-415e-99f0-f345e17f9aa0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;​&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예제 입력 3)&lt;/p&gt;
&lt;pre id=&quot;code_1657779917961&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;2 2 0 0 16
0 2
3 4
4 4 4 4 1 1 1 1 3 3 3 3 2 2 2 2&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;SE-0600fd11-7340-45d0-a174-17e969d7cdc0&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예제 출력 3)&lt;/p&gt;
&lt;pre id=&quot;code_1657779923901&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;0
0
0
0&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예제 입력 4)&lt;/p&gt;
&lt;pre id=&quot;code_1657815631443&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;3 3 0 0 16
0 1 2
3 4 5
6 7 8
4 4 1 1 3 3 2 2 4 4 1 1 3 3 2 2&lt;/code&gt;&lt;/pre&gt;
&lt;div id=&quot;SE-0600fd11-7340-45d0-a174-17e969d7cdc0&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예제 출력 4)&lt;/p&gt;
&lt;pre id=&quot;code_1657815646597&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;0
0
0
6
0
8
0
2
0
8
0
2
0
8
0
2&lt;/code&gt;&lt;/pre&gt;
&lt;p id=&quot;SE-b0263d5f-e537-415e-99f0-f345e17f9aa0&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;​&lt;/span&gt;&lt;/p&gt;
&lt;div id=&quot;SE-0600fd11-7340-45d0-a174-17e969d7cdc0&quot;&gt;
&lt;h3 id=&quot;SE-3db95ff2-a82e-49b5-a25d-d98d8743df9e&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt; &lt;span&gt;&amp;nbsp; &lt;b&gt;Main&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;.java&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;구현은 늘 어렵고 새로워라,, 이번 문제는 주사위를 어떤식으로 움직이는 지를 구현하면 다른 부분은 쉽게 구현 할 수 있었다.&lt;/span&gt;&lt;span&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;주사위를 하나의 배열로 생각했을 때,&lt;/li&gt;
&lt;li&gt;dice[0]의 위치에는 dice[3]이 오고, dice[3]의 위치에는 dice[5]가 dice[5]에는 dice[2]가 오게되며 dice[2]에는 dice[0]이 된다.&lt;/li&gt;
&lt;li&gt;이때 dice[0]은 dice[3]으로 갱신 되기 때문에 따로 저장해둬야한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;동쪽외의 다른 방향도 이와 같은 방식으로 이동해주면 된다.&lt;/li&gt;
&lt;li&gt;주사위의 상단은 항상 dice[0]이고 밑면은 항상 dice[5]인 것을 참고해서 지도와 주사위 값을 복사해주면 된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;618&quot; data-origin-height=&quot;485&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dwt2Vs/btrHidFbNgR/JW9dxvXLByaQ5rj6EgHFS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dwt2Vs/btrHidFbNgR/JW9dxvXLByaQ5rj6EgHFS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dwt2Vs/btrHidFbNgR/JW9dxvXLByaQ5rj6EgHFS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdwt2Vs%2FbtrHidFbNgR%2FJW9dxvXLByaQ5rj6EgHFS0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;391&quot; height=&quot;307&quot; data-origin-width=&quot;618&quot; data-origin-height=&quot;485&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;전체 코드&amp;gt;&lt;/p&gt;
&lt;pre id=&quot;code_1646922370238&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;

public class Main {
    static int[] dx = {0, 0, -1, 1};
    static int[] dy = {1, -1, 0, 0};
    static int[] dice = new int[6];
    static int[][] board;

    static void copyMap(int x, int y){
        if(board[x][y] == 0){
            board[x][y] = dice[5];
        }
        else{
            dice[5] = board[x][y];
            board[x][y] = 0;
        }
    }

    static void moveDice(int cmd){
        int tmp = dice[0];
        switch (cmd){
            // 동쪽이동
            case 1:
                dice[0] = dice[3];
                dice[3] = dice[5];
                dice[5] = dice[2];
                dice[2] = tmp;
                break;
            // 서쪽이동
            case 2:
                dice[0] = dice[2];
                dice[2] = dice[5];
                dice[5] = dice[3];
                dice[3] = tmp;
                break;
            // 북쪽이동
            case 3:
                dice[0] = dice[4];
                dice[4] = dice[5];
                dice[5] = dice[1];
                dice[1] = tmp;
                break;
            // 남쪽이동
            case 4:
                dice[0] = dice[1];
                dice[1] = dice[5];
                dice[5] = dice[4];
                dice[4] = tmp;
                break;
        }
    }
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();   // 지도의 세로 크기
        int m = sc.nextInt();   // 지도의 가로 크기
        int x = sc.nextInt();   // 주사위의 좌표
        int y = sc.nextInt();
        int k = sc.nextInt();   // 명령의 개수

        // 지도 입력
        board = new int[n][m];
        for(int i = 0; i &amp;lt; n; i++){
            for(int j = 0; j &amp;lt; m; j++){
                board[i][j] = sc.nextInt();
            }
        }

        // 명령 실행
        for(int i = 0; i &amp;lt; k; i++){
            // 동쪽은 1, 서쪽은 2, 북쪽은 3, 남쪽은 4
            int cmd = sc.nextInt();

            int nx = x + dx[cmd - 1];
            int ny = y + dy[cmd - 1];

            // 경계값 검사
            if(nx &amp;gt;= n || nx &amp;lt; 0 || ny &amp;gt;= m || ny &amp;lt; 0)
                continue;

            // 주사위 이동
           moveDice(cmd);

            // 주사위 &amp;amp; 지도 값 복사
            copyMap(nx, ny);

            sb.append(dice[0]).append('\n');

            // 주사위의 좌표 갱신
            x = nx;
            y = ny;
        }

        System.out.print(sb);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>Algorithm/Baekjoon</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/291</guid>
      <comments>https://miinsun.tistory.com/291#entry291comment</comments>
      <pubDate>Fri, 15 Jul 2022 01:48:15 +0900</pubDate>
    </item>
    <item>
      <title>[BAEKJOON] 백준 그래프 3190 :: 뱀</title>
      <link>https://miinsun.tistory.com/290</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;630&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rjuzr/btrHhceeNFr/uU0KNBS6tvj5CBDCxjUSj1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rjuzr/btrHhceeNFr/uU0KNBS6tvj5CBDCxjUSj1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rjuzr/btrHhceeNFr/uU0KNBS6tvj5CBDCxjUSj1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Frjuzr%2FbtrHhceeNFr%2FuU0KNBS6tvj5CBDCxjUSj1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;674&quot; height=&quot;354&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;630&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;

&lt;div id=&quot;SE-0d59672a-ff5e-4886-aa1e-4025ef2e709a&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;741&quot; data-origin-height=&quot;214&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WClNL/btrHe39LhLF/cJaXSptJKVmslNomvKHQ1K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WClNL/btrHe39LhLF/cJaXSptJKVmslNomvKHQ1K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WClNL/btrHe39LhLF/cJaXSptJKVmslNomvKHQ1K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWClNL%2FbtrHe39LhLF%2FcJaXSptJKVmslNomvKHQ1K%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;741&quot; height=&quot;214&quot; data-origin-width=&quot;741&quot; data-origin-height=&quot;214&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h3 id=&quot;SE-3db95ff2-a82e-49b5-a25d-d98d8743df9e&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt; &lt;b&gt;&amp;nbsp; 문제 설명&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&amp;nbsp;'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다.&lt;br /&gt;&lt;br /&gt;게임은 NxN 정사각&amp;nbsp;보드위에서 진행되고, 몇몇 칸에는&amp;nbsp;사과가 놓여져 있다. 보드의 상하좌우 끝에 벽이 있다. 게임이 시작할때 뱀은 맨위 맨좌측에 위치하고 뱀의 길이는 1 이다. 뱀은 처음에 오른쪽을 향한다.&lt;br /&gt;&lt;br /&gt;뱀은 매 초마다 이동을 하는데 다음과 같은 규칙을 따른다.&lt;br /&gt;* 먼저 뱀은 몸길이를 늘려 머리를 다음칸에 위치시킨다.&lt;br /&gt;* 만약 이동한 칸에 사과가 있다면, 그 칸에 있던 사과가 없어지고 꼬리는 움직이지 않는다.&lt;br /&gt;* 만약 이동한 칸에 사과가 없다면, 몸길이를 줄여서 꼬리가 위치한 칸을 비워준다. 즉, 몸길이는 변하지 않는다.&lt;br /&gt;&lt;br /&gt;사과의 위치와 뱀의 이동경로가 주어질 때 이 게임이 몇 초에 끝나는지 계산하라.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-0600fd11-7340-45d0-a174-17e969d7cdc0&quot;&gt;
&lt;div id=&quot;SE-0600fd11-7340-45d0-a174-17e969d7cdc0&quot;&gt;
&lt;div data-v-4b3ae1dc=&quot;&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt; &lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;입출력 예&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;입력&lt;/b&gt;&lt;span&gt;&amp;nbsp;&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;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;첫째 줄에 보드의 크기 N이 주어진다. (2 &amp;le; N &amp;le; 100) 다음 줄에 사과의 개수 K가 주어진다. (0 &amp;le; K &amp;le; 100)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;다음 K개의 줄에는 사과의 위치가 주어지는데, 첫 번째 정수는 행, 두 번째 정수는 열 위치를 의미한다. 사과의 위치는 모두 다르며, 맨 위 맨 좌측 (1행 1열) 에는 사과가 없다.&lt;/li&gt;
&lt;li&gt;다음 줄에는 뱀의 방향 변환 횟수 L 이 주어진다. (1 &amp;le; L &amp;le; 100)&lt;/li&gt;
&lt;li&gt;다음 L개의 줄에는 뱀의 방향 변환 정보가 주어지는데, &amp;nbsp;정수 X와 문자 C로 이루어져 있으며. 게임 시작 시간으로부터 X초가 끝난 뒤에 왼쪽(C가 'L') 또는 오른쪽(C가 'D')로 90도 방향을 회전시킨다는 뜻이다. X는 10,000 이하의 양의 정수이며, 방향 전환 정보는 X가 증가하는 순으로 주어진다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;SE-0600fd11-7340-45d0-a174-17e969d7cdc0&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;출력&lt;/b&gt;&lt;/p&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;첫째 줄에 게임이 몇 초에 끝나는지 출력한다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&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)&lt;/p&gt;
&lt;/div&gt;
&lt;div data-v-4b3ae1dc=&quot;&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-0600fd11-7340-45d0-a174-17e969d7cdc0&quot;&gt;
&lt;div data-v-4b3ae1dc=&quot;&quot;&gt;
&lt;pre class=&quot;bash&quot; data-v-4b3ae1dc=&quot;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;6
3
3 4
2 5
5 3
3
3 D
15 L
17 D&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&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)&lt;/p&gt;
&lt;div data-v-4b3ae1dc=&quot;&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-0600fd11-7340-45d0-a174-17e969d7cdc0&quot;&gt;
&lt;div data-v-4b3ae1dc=&quot;&quot;&gt;
&lt;pre id=&quot;code_1646925986905&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;9&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예제 입력 2)&lt;/p&gt;
&lt;pre id=&quot;code_1646925986905&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;10
4
1 2
1 3
1 4
1 5
4
8 D
10 D
11 D
13 L&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;SE-0600fd11-7340-45d0-a174-17e969d7cdc0&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예제 출력 2)&lt;/p&gt;
&lt;pre id=&quot;code_1646925986905&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;21&lt;/code&gt;&lt;/pre&gt;
&lt;p id=&quot;SE-b0263d5f-e537-415e-99f0-f345e17f9aa0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;​&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예제 입력 3)&lt;/p&gt;
&lt;pre id=&quot;code_1657779917961&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;10
5
1 5
1 3
1 2
1 6
1 7
4
8 D
10 D
11 D
13 L&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;SE-0600fd11-7340-45d0-a174-17e969d7cdc0&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예제 출력 3)&lt;/p&gt;
&lt;pre id=&quot;code_1657779923901&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;13&lt;/code&gt;&lt;/pre&gt;
&lt;p id=&quot;SE-b0263d5f-e537-415e-99f0-f345e17f9aa0&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;SE-0600fd11-7340-45d0-a174-17e969d7cdc0&quot;&gt;
&lt;p id=&quot;SE-b0263d5f-e537-415e-99f0-f345e17f9aa0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;​&lt;/span&gt;&lt;/p&gt;
&lt;h3 id=&quot;SE-3db95ff2-a82e-49b5-a25d-d98d8743df9e&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt; &lt;span&gt;&amp;nbsp; &lt;b&gt;Main&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;.java&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;문제 자체는 어렵지 않았지만, 지켜야 하는 조건이 많아서 푸는데 시간이 오래걸렸다.. 구현 문제는 너무 집중력이 많이 필요해 ㅠ&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;뱀의 정보는 앞뒤로 유동적으로 바꿀 수 있는 deque&lt;/li&gt;
&lt;li&gt;사과 정보는 ArrayList로&lt;/li&gt;
&lt;li&gt;방향 정보는 HashMap&amp;lt;Integer, Character&amp;gt;를 이용했다
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;방향은 시계방향으로 위(1), 오른쪽(2), 아래(3), 왼쪽(4)로 지정&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;무한 반복문을 돌면서 탈출 조건을 설정해 게임이 몇초에 끝나는지 구했다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;탈출 조건은 다음과 같다
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;뱀이 자기 몸에 부딪혔을 때&lt;/li&gt;
&lt;li&gt;뱀이 벽에 부딪혔을 때&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;전체 코드&amp;gt;&lt;/p&gt;
&lt;pre id=&quot;code_1646922370238&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;

class Point {
    int x;
    int y;

    Point(int x, int y){
        this.x = x;
        this.y = y;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Point point = (Point) o;
        return x == point.x &amp;amp;&amp;amp; y == point.y;
    }
}

public class Main {
    static int n;
    static Deque&amp;lt;Point&amp;gt; deque;
    static ArrayList&amp;lt;Point&amp;gt; apples;
    static HashMap&amp;lt;Integer, Character&amp;gt; dirs;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 보드의 크기
        n = sc.nextInt();

        // 뱀을 표현할 덱
        deque = new LinkedList&amp;lt;&amp;gt;();
        deque.add(new Point(1, 1));

        // 사과의 개수
        int k = sc.nextInt();
        apples = new ArrayList&amp;lt;&amp;gt;();
        for(int i = 0; i &amp;lt; k; i++) {
            apples.add(new Point(sc.nextInt(), sc.nextInt()));
        }

        // 방향 변환 정보
        int l = sc.nextInt();
        dirs = new HashMap&amp;lt;&amp;gt;();
        for(int i = 0; i &amp;lt; l; i++){
            dirs.put(sc.nextInt(), sc.next().charAt(0));
        }

        int dir = 2; // 처음에는 오른쪽으로 직진하기 때문에 방향 정보 2를 준다
        int cnt = 0;
        while(true){
            cnt++;

            if(!move(dir))
                break;

            dir = changeDir(dir, cnt);
        }

        System.out.println(cnt);
    }

    static boolean move( int dir){
        Point cur = deque.peekFirst();
        int nx = cur.x;
        int ny = cur.y;
        switch (dir){
            // 위로 이동
            case 1:
                nx -= 1;
                break;
            // 오른쪽 이동
            case 2:
                ny += 1;
                break;
            // 아래로 이동
            case 3:
                nx += 1;
                break;
            // 왼쪽 이동
            case 4:
                ny -= 1;
                break;
        }

        Point next = new Point(nx, ny);
        // 탈출 조건 (자기 몸에 부딪히거나, 벽에 부딪힌 경우)
        if(nx &amp;lt;= 0 || nx &amp;gt; n || ny &amp;lt;= 0 || ny &amp;gt; n || deque.contains(next))
            return false;

        // 현재 위치에 사과가 있는지 검사
        if(apples.contains(next)){ // 사과가 있으면, 그 칸에 사과는 없어지고 꼬리는 없어지지 않는다
            deque.offerFirst(next);
            apples.remove(next);
        }
        else{   // 사과가 없으면 이동
            deque.offerFirst(next);
            deque.removeLast();
        }

        return true;
    }

    // 시계 순으로 상(1) 우(2) 하(3) 좌(4)
    static int changeDir(int dir, int cnt){
        if(dirs.containsKey(cnt)){
            // 왼쪽 회전
            if(dirs.get(cnt) == 'L'){
                dir--;
                if(dir == 0)
                    dir = 4;
            }
            // 오른쪽 회전
            else{
                dir++;
                if(dir == 5)
                    dir = 1;
            }
        }

        return dir;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>Algorithm/Baekjoon</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/290</guid>
      <comments>https://miinsun.tistory.com/290#entry290comment</comments>
      <pubDate>Thu, 14 Jul 2022 15:33:36 +0900</pubDate>
    </item>
    <item>
      <title>[Network] TCP의 흐름제어, 연결제어, 혼잡제어</title>
      <link>https://miinsun.tistory.com/289</link>
      <description>&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;TCP의 흐름제어
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;TCP연결이 성립되면 전송자와 수시자 모두 sendBuffer와 receiveBuffer를 가짐&lt;/li&gt;
&lt;li&gt;보내는 입장에서 window-size만큼 데이터 전송&lt;/li&gt;
&lt;li&gt;받는 입장에서 receive buffer보다 이상의 데이터가 들어오면 전부 폐기됨&lt;/li&gt;
&lt;li&gt;받는 입장의 receive buffer를 고려해서 보내는 것이 관건&lt;/li&gt;
&lt;li&gt;흐름제어를 할때 Receive Window 필드를 사용
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;보내는 입장에서 window-size를 알려줌&lt;/li&gt;
&lt;li&gt;받는 입장에서 데이터를 받으면 receive buffer를 알려줌&lt;/li&gt;
&lt;li&gt;receive buffer만큼 데이터를 전송하게 됨&lt;/li&gt;
&lt;li&gt;흐름 제어란 수신자의 버퍼가 넘치지 않도록 데이터 전송을 조절하는 작업&lt;/li&gt;
&lt;li&gt;버퍼의 크기 확인 할 때 Receive window 필드의 값만 채워서 보내고 나머지는 쓰레기 값을 보냄&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://gyoogle.dev/blog/computer-science/network/%ED%9D%90%EB%A6%84%EC%A0%9C%EC%96%B4%20&amp;amp;%20%ED%98%BC%EC%9E%A1%EC%A0%9C%EC%96%B4.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[흐름제어] 더 자세한 이야기는?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;TCP의 연결제어
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;연결이 성립되기 전에 약속되어야 하는 항목&lt;/li&gt;
&lt;li&gt;전송자와 수신자의 sendBuffer, receiveBuffer&lt;/li&gt;
&lt;li&gt;전송자와 수신자가 서로 주고 받을 패킷의 시퀀스 넘버&lt;/li&gt;
&lt;li&gt;TCP 3-way handshake(연결)
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;3번의 과정을 거치는 TCP의 연결제어 방법&amp;nbsp;&lt;/li&gt;
&lt;li&gt;1) 클라이언트 측에서 시퀀스 넘버를 정하고 서버 측에 연결 요청
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;해당 요청을 SYN msg&lt;/li&gt;
&lt;li&gt;평소 SYN 필드는 0이지만 새로운 연결 요청시에는 1로 변경&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;2) 서버에서 SYN msg 수신하고 서버를 열겠다는 뜻으로 SYNACK를 보냄
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;시퀀스 넘버&lt;/li&gt;
&lt;li&gt;시작할 ACKbit를 보냄&lt;/li&gt;
&lt;li&gt;증가할 ACK값도 보냄&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;3) 클라이언트 측에서 SYNACK를 받고 서버가 열였음을 인지, 대답으로 ACK을 보냄&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;3-way-handshake.png&quot; data-origin-width=&quot;1220&quot; data-origin-height=&quot;734&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xFes8/btrG6W3Sal6/DVjrmlfKTzku2audm7ecmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xFes8/btrG6W3Sal6/DVjrmlfKTzku2audm7ecmK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xFes8/btrG6W3Sal6/DVjrmlfKTzku2audm7ecmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxFes8%2FbtrG6W3Sal6%2FDVjrmlfKTzku2audm7ecmK%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;474&quot; height=&quot;285&quot; data-filename=&quot;3-way-handshake.png&quot; data-origin-width=&quot;1220&quot; data-origin-height=&quot;734&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;TCP 4-way handshake(종료)
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트 측에서 FIN 세그먼트 전송&lt;/li&gt;
&lt;li&gt;서버는 FIN세그먼트를 받고 ACK를 보냄&lt;/li&gt;
&lt;li&gt;서버는 FIN 세그먼트를 보냄
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ACK와 FIN을 같이 보내지 않는 이유는 남아있는 전송 데이터가 존재할 수 있기 때문&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;클라이언트는 FIN을 받고 ACK을 보내줌&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;4-way-handshake-2.jpeg&quot; data-origin-width=&quot;736&quot; data-origin-height=&quot;766&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cUgKxP/btrG6ecegO7/fKtSUqkzHBYpqiaG8oReUK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cUgKxP/btrG6ecegO7/fKtSUqkzHBYpqiaG8oReUK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cUgKxP/btrG6ecegO7/fKtSUqkzHBYpqiaG8oReUK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcUgKxP%2FbtrG6ecegO7%2FfKtSUqkzHBYpqiaG8oReUK%2Fimg.jpg&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; loading=&quot;lazy&quot; width=&quot;333&quot; height=&quot;347&quot; data-filename=&quot;4-way-handshake-2.jpeg&quot; data-origin-width=&quot;736&quot; data-origin-height=&quot;766&quot;/&gt;&lt;/span&gt;&lt;/figure&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;3. TCP의 혼잡제어&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;b&gt;혼잡도란?&lt;/b&gt;&lt;br /&gt;네트워크는 공공의 영역이기 때문에 혼잡도가 저마다 다르다. 같은 네트워크 상에서도 혼잡도를 낮추기 위해 데이터의 양을 조절한다. 네트워크의 혼잡이 예상되면 데이터의 양을 줄여 혼잡도를 낮출 수 있고, 네트워크가 혼잡하지 않을 것으로 예측되면 데이터의 양을 유동적으로 늘린다.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;혼잡도 고려 사항&lt;/b&gt; &lt;br /&gt;라우터들이 지속적으로 혼잡도의 변화를 알려준다. 혼잡도는 보통 RTT를 보고 판단한다. 혼잡제어는 성능이 더 안좋은 쪽을 고려하여 발생함.&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock floatLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;tcp-slow-start.png&quot; data-origin-width=&quot;286&quot; data-origin-height=&quot;425&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zXp6w/btrG8tNEwwD/RPlF5GZTsnwuo9CGa1Btyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zXp6w/btrG8tNEwwD/RPlF5GZTsnwuo9CGa1Btyk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zXp6w/btrG8tNEwwD/RPlF5GZTsnwuo9CGa1Btyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzXp6w%2FbtrG8tNEwwD%2FRPlF5GZTsnwuo9CGa1Btyk%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;308&quot; height=&quot;458&quot; data-filename=&quot;tcp-slow-start.png&quot; data-origin-width=&quot;286&quot; data-origin-height=&quot;425&quot;/&gt;&lt;/span&gt;&lt;/figure&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;TCP slow start&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;처음에 전송시에는 적은 데이터를 전송&lt;/li&gt;
&lt;li&gt;RTT를 확인한 후 괜찮다는 판단이 들면 데이터의 양을 늘림&lt;/li&gt;
&lt;/ul&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&gt;&lt;figure class=&quot;imageblock floatRight&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;tcp-congestion-control-diagram.png&quot; data-origin-width=&quot;592&quot; data-origin-height=&quot;497&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bI6s2U/btrG9kCqnbM/JYT2O5HShhW84MTuIqSId1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bI6s2U/btrG9kCqnbM/JYT2O5HShhW84MTuIqSId1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bI6s2U/btrG9kCqnbM/JYT2O5HShhW84MTuIqSId1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbI6s2U%2FbtrG9kCqnbM%2FJYT2O5HShhW84MTuIqSId1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;432&quot; height=&quot;363&quot; data-filename=&quot;tcp-congestion-control-diagram.png&quot; data-origin-width=&quot;592&quot; data-origin-height=&quot;497&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터를 보내다가 한계점 이상이 되면 패킷 손실이 발생함
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;모든 사용자가 보내는 패킷의 양을 줄임&lt;/li&gt;
&lt;li&gt;혼잡 제어가 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;4. TCP의 혼잡 제어 방시&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;tcp-tahoe-reno.png&quot; data-origin-width=&quot;1103&quot; data-origin-height=&quot;717&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ne1nE/btrG4GUKybc/bYzXKFKcO18aZWW3Z2C7I1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ne1nE/btrG4GUKybc/bYzXKFKcO18aZWW3Z2C7I1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ne1nE/btrG4GUKybc/bYzXKFKcO18aZWW3Z2C7I1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fne1nE%2FbtrG4GUKybc%2FbYzXKFKcO18aZWW3Z2C7I1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;489&quot; height=&quot;318&quot; data-filename=&quot;tcp-tahoe-reno.png&quot; data-origin-width=&quot;1103&quot; data-origin-height=&quot;717&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style11&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;b&gt;TCP Tahoe&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;b&gt;TCP Reno&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: left;&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터를 보내다가 한계점에서 유실이 발생되면 다시 처음으로 돌아감&lt;/li&gt;
&lt;li&gt;한계점은 유실이 발생한 곳에서 절반이 됨&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: left;&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;timeout 발생 시 다시 처음으로 돌아감&lt;/li&gt;
&lt;li&gt;timeout 발생 전에 ACK응답들이 오는 경우(3번 중복)&lt;/li&gt;
&lt;li&gt;한계점은 Tahoe와 마찬가지로 유실이 발생한 지점에서 절반이 됨&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description>
      <category>Infra/Network</category>
      <author>miinsun</author>
      <guid isPermaLink="true">https://miinsun.tistory.com/289</guid>
      <comments>https://miinsun.tistory.com/289#entry289comment</comments>
      <pubDate>Tue, 12 Jul 2022 16:43:39 +0900</pubDate>
    </item>
  </channel>
</rss>