<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>jihyee</title>
    <link>https://jihyee.tistory.com/</link>
    <description>기록하는 습관 가지기</description>
    <language>ko</language>
    <pubDate>Sun, 23 Aug 2026 14:30:06 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>jihyee</managingEditor>
    <image>
      <title>jihyee</title>
      <url>https://tistory1.daumcdn.net/tistory/4958256/attach/123b2ebfd5df4e268eb10a8197301c78</url>
      <link>https://jihyee.tistory.com</link>
    </image>
    <item>
      <title>[Naver Cloud Platform] SpringBoot 스프링부트 React 리액트 네이버 클라우드 플랫폼 배포하기  ➁ 서버 접속(공인 IP &amp;amp; 포트 포워딩)</title>
      <link>https://jihyee.tistory.com/31</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;※ aws 로 &lt;/span&gt;&lt;span&gt;배포하기&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;darr;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;배포,&lt;/span&gt;&lt;span&gt;&lt;i&gt; &lt;/i&gt;&lt;/span&gt;&lt;span&gt;서버&lt;/span&gt;&lt;span&gt;&lt;i&gt; &lt;/i&gt;&lt;/span&gt;&lt;span&gt;등의 &lt;/span&gt;&lt;span&gt;기본&amp;nbsp;&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;i&gt; &lt;/i&gt;&lt;/span&gt;&lt;span&gt;아래&lt;/span&gt;&lt;span&gt;&lt;i&gt; &lt;/i&gt;&lt;/span&gt;&lt;span&gt;포스팅을 참고하면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1645427261307&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;[AWS + spring boot] 서버 배포하기 _ 1&quot; data-og-description=&quot;서버는 왜 배포해야할까 서버를 24시간 작동하게 하는 방법은 3가지 내 pc를 24시간 구동시킨다. 호스팅 서비스를 이용한다. 클라우드 서비스를 이용한다. 그 중 유동적으로 트래픽 관리가 가능한&quot; data-og-host=&quot;jihyee.tistory.com&quot; data-og-source-url=&quot;https://jihyee.tistory.com/4?category=1061703&quot; data-og-url=&quot;https://jihyee.tistory.com/4&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/wYeiR/hyNunr9Op2/Ru4DLxLSfZnaZwgc70LYlK/img.png?width=259&amp;amp;height=194&amp;amp;face=0_0_259_194,https://scrap.kakaocdn.net/dn/Bpb6Z/hyNubkWDSG/XSMAO6Z6cj01eTe13xhkY0/img.png?width=259&amp;amp;height=194&amp;amp;face=0_0_259_194,https://scrap.kakaocdn.net/dn/dCapMc/hyNuqh7mjM/stZVjSgkSV2aRQnZJDbl31/img.jpg?width=1440&amp;amp;height=1080&amp;amp;face=0_0_1440_1080&quot;&gt;&lt;a href=&quot;https://jihyee.tistory.com/4?category=1061703&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://jihyee.tistory.com/4?category=1061703&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/wYeiR/hyNunr9Op2/Ru4DLxLSfZnaZwgc70LYlK/img.png?width=259&amp;amp;height=194&amp;amp;face=0_0_259_194,https://scrap.kakaocdn.net/dn/Bpb6Z/hyNubkWDSG/XSMAO6Z6cj01eTe13xhkY0/img.png?width=259&amp;amp;height=194&amp;amp;face=0_0_259_194,https://scrap.kakaocdn.net/dn/dCapMc/hyNuqh7mjM/stZVjSgkSV2aRQnZJDbl31/img.jpg?width=1440&amp;amp;height=1080&amp;amp;face=0_0_1440_1080');&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;[AWS + spring boot] 서버 배포하기 _ 1&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;서버는 왜 배포해야할까 서버를 24시간 작동하게 하는 방법은 3가지 내 pc를 24시간 구동시킨다. 호스팅 서비스를 이용한다. 클라우드 서비스를 이용한다. 그 중 유동적으로 트래픽 관리가 가능한&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;jihyee.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;figure id=&quot;og_1645427277394&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;[AWS + spring boot] 서버 배포하기 _ 2 rds mysql 데이터 베이스 생성 spring boot 연동 spring boot 프로젝트 배&quot; data-og-description=&quot;얼른 써야지 했는데 생각보다 2번째 포스팅이 오래 걸렸다 ㅠ [AWS + spring boot] 서버 배포하기 _ 1 [AWS + spring boot] 서버 배포하기 _ 1 서버는 왜 배포해야할까 서버를 24시간 작동하게 하는 방법은 3가&quot; data-og-host=&quot;jihyee.tistory.com&quot; data-og-source-url=&quot;https://jihyee.tistory.com/21?category=1061703&quot; data-og-url=&quot;https://jihyee.tistory.com/21&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/YAM0O/hyNs5s8XM6/FpgXSYPabYHUUvnLEu2w11/img.png?width=800&amp;amp;height=321&amp;amp;face=0_0_800_321,https://scrap.kakaocdn.net/dn/brHpYN/hyNsTM0TrL/IqdJ28ll3LfPbKlyMXGuU1/img.png?width=800&amp;amp;height=321&amp;amp;face=0_0_800_321,https://scrap.kakaocdn.net/dn/bXcdq3/hyNug7CQao/Xpku8d3Su6a0vZUMTKiyk1/img.png?width=1576&amp;amp;height=540&amp;amp;face=0_0_1576_540&quot;&gt;&lt;a href=&quot;https://jihyee.tistory.com/21?category=1061703&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://jihyee.tistory.com/21?category=1061703&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/YAM0O/hyNs5s8XM6/FpgXSYPabYHUUvnLEu2w11/img.png?width=800&amp;amp;height=321&amp;amp;face=0_0_800_321,https://scrap.kakaocdn.net/dn/brHpYN/hyNsTM0TrL/IqdJ28ll3LfPbKlyMXGuU1/img.png?width=800&amp;amp;height=321&amp;amp;face=0_0_800_321,https://scrap.kakaocdn.net/dn/bXcdq3/hyNug7CQao/Xpku8d3Su6a0vZUMTKiyk1/img.png?width=1576&amp;amp;height=540&amp;amp;face=0_0_1576_540');&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;[AWS + spring boot] 서버 배포하기 _ 2 rds mysql 데이터 베이스 생성 spring boot 연동 spring boot 프로젝트 배&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;얼른 써야지 했는데 생각보다 2번째 포스팅이 오래 걸렸다 ㅠ [AWS + spring boot] 서버 배포하기 _ 1 [AWS + spring boot] 서버 배포하기 _ 1 서버는 왜 배포해야할까 서버를 24시간 작동하게 하는 방법은 3가&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;jihyee.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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;※ paas-ta 로 &lt;/span&gt;&lt;span&gt;배포하기&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;darr;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1645427289009&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;[PaaS-TA] PaaS-TA 서비스를 통해 node.js 기반 프로젝트 배포하기&quot; data-og-description=&quot;PaaS-TA 파스-타 도입 전 미리 파스-타를 체험하실 수 있도록 체험 서비스를 제공하고 있습니다. paas-ta.kr 배포하면 떠오르는 플랫폼이 aws, naver cloud platform, gcp 정도인 것 같은데 이번에 동아리 프로&quot; data-og-host=&quot;jihyee.tistory.com&quot; data-og-source-url=&quot;https://jihyee.tistory.com/16?category=1061703&quot; data-og-url=&quot;https://jihyee.tistory.com/16&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/fxm94/hyNsYOiXzv/7zbgf88JvWW0bWUOXXfG31/img.png?width=800&amp;amp;height=440&amp;amp;face=0_0_800_440,https://scrap.kakaocdn.net/dn/B799U/hyNukvp0Qw/UsdlpTgnOjHFmUkzDg3tL1/img.png?width=800&amp;amp;height=440&amp;amp;face=0_0_800_440,https://scrap.kakaocdn.net/dn/Q3ZSD/hyNs7j9zZn/WKwlQdWksidAyL8RQq9ve1/img.jpg?width=1440&amp;amp;height=1080&amp;amp;face=0_0_1440_1080&quot;&gt;&lt;a href=&quot;https://jihyee.tistory.com/16?category=1061703&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://jihyee.tistory.com/16?category=1061703&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/fxm94/hyNsYOiXzv/7zbgf88JvWW0bWUOXXfG31/img.png?width=800&amp;amp;height=440&amp;amp;face=0_0_800_440,https://scrap.kakaocdn.net/dn/B799U/hyNukvp0Qw/UsdlpTgnOjHFmUkzDg3tL1/img.png?width=800&amp;amp;height=440&amp;amp;face=0_0_800_440,https://scrap.kakaocdn.net/dn/Q3ZSD/hyNs7j9zZn/WKwlQdWksidAyL8RQq9ve1/img.jpg?width=1440&amp;amp;height=1080&amp;amp;face=0_0_1440_1080');&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;[PaaS-TA] PaaS-TA 서비스를 통해 node.js 기반 프로젝트 배포하기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;PaaS-TA 파스-타 도입 전 미리 파스-타를 체험하실 수 있도록 체험 서비스를 제공하고 있습니다. paas-ta.kr 배포하면 떠오르는 플랫폼이 aws, naver cloud platform, gcp 정도인 것 같은데 이번에 동아리 프로&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;jihyee.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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;※&lt;span&gt;&lt;span&gt; naver cloud platform 배포 ① 서버 생성&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1645776426977&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;[Naver Cloud Platform] SpringBoot 스프링부트 React 리액트 네이버 클라우드 플랫폼 배포하기  ① 서버 생&quot; data-og-description=&quot;※ aws 로 배포하기 &amp;darr; 배포 서버 등의 개념 설명은 아래 포스팅에 적어두었다! [AWS + spring boot] 서버 배포하기 _ 1 서버는 왜 배포해야할까 서버를 24시간 작동하게 하는 방법은 3가지 내 pc를 24시간&quot; data-og-host=&quot;jihyee.tistory.com&quot; data-og-source-url=&quot;https://jihyee.tistory.com/26?category=1061703&quot; data-og-url=&quot;https://jihyee.tistory.com/26&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/MgZA4/hyNwVixoDx/2W4YVe1338rhqCWfKv6B21/img.png?width=800&amp;amp;height=276&amp;amp;face=0_0_800_276,https://scrap.kakaocdn.net/dn/y4fh0/hyNwSF6ZNf/YGShqCQ8fH0rh8nZAYvXSk/img.png?width=800&amp;amp;height=276&amp;amp;face=0_0_800_276,https://scrap.kakaocdn.net/dn/bm9SHk/hyNw1Qz2Bq/GVjbTKcg0kyZi47HUvEl41/img.png?width=2214&amp;amp;height=1698&amp;amp;face=0_0_2214_1698&quot;&gt;&lt;a href=&quot;https://jihyee.tistory.com/26?category=1061703&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://jihyee.tistory.com/26?category=1061703&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/MgZA4/hyNwVixoDx/2W4YVe1338rhqCWfKv6B21/img.png?width=800&amp;amp;height=276&amp;amp;face=0_0_800_276,https://scrap.kakaocdn.net/dn/y4fh0/hyNwSF6ZNf/YGShqCQ8fH0rh8nZAYvXSk/img.png?width=800&amp;amp;height=276&amp;amp;face=0_0_800_276,https://scrap.kakaocdn.net/dn/bm9SHk/hyNw1Qz2Bq/GVjbTKcg0kyZi47HUvEl41/img.png?width=2214&amp;amp;height=1698&amp;amp;face=0_0_2214_1698');&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;[Naver Cloud Platform] SpringBoot 스프링부트 React 리액트 네이버 클라우드 플랫폼 배포하기 ① 서버 생&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;※ aws 로 배포하기 &amp;darr; 배포 서버 등의 개념 설명은 아래 포스팅에 적어두었다! [AWS + spring boot] 서버 배포하기 _ 1 서버는 왜 배포해야할까 서버를 24시간 작동하게 하는 방법은 3가지 내 pc를 24시간&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;jihyee.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;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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;naver cloud platform 배포 ① 서버 생성까지 했고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;IP 주소 할당받고 서버에 접속하는 방법에 대해 설명하려 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;서버 접속&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버에 접속하려면 외부에서 접속할 수 있는&lt;b&gt; ip 주소&lt;/b&gt;가 필요한데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ip 주소 할당을 위한 방법은 두 가지가 있다.&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 style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;1. 공인 ip 주소 할당 &lt;span style=&quot;color: #ee2323;&quot;&gt;&amp;rarr; 유료&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;※ 경험상 공인 ip 주소한 달에 약 5000원 정도의 요금이 나온다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 포트 포워딩 설정 &lt;span style=&quot;color: #ee2323;&quot;&gt;&amp;rarr; 무료&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작성자는 1번 방식으로 구현했기 때문에 1번 방식으로 설명하고 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;&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;a href=&quot;https://docs.3rdeyesys.com/1.compute/ncp_server_connect_no_public_ip/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://docs.3rdeyesys.com/1.compute/ncp_server_connect_no_public_ip/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1645776775640&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;서버 접속 가이드(Linux) - 공인IP 없을 때&quot; data-og-description=&quot;네이버 클라우드 서버 접속 가이드 - 공인IP 없을 때&quot; data-og-host=&quot;docs.3rdeyesys.com&quot; data-og-source-url=&quot;https://docs.3rdeyesys.com/1.compute/ncp_server_connect_no_public_ip/&quot; data-og-url=&quot;https://docs.3rdeyesys.com/1.compute/ncp_server_connect_no_public_ip/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://docs.3rdeyesys.com/1.compute/ncp_server_connect_no_public_ip/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.3rdeyesys.com/1.compute/ncp_server_connect_no_public_ip/&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;서버 접속 가이드(Linux) - 공인IP 없을 때&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;네이버 클라우드 서버 접속 가이드 - 공인IP 없을 때&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;docs.3rdeyesys.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;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;공인 IP 주소 할당&lt;/span&gt;&lt;/blockquote&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;1184&quot; data-origin-height=&quot;814&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dLmW74/btruk4mlzlw/oVMojko9vEmj7axkVTfuP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dLmW74/btruk4mlzlw/oVMojko9vEmj7axkVTfuP1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dLmW74/btruk4mlzlw/oVMojko9vEmj7axkVTfuP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdLmW74%2Fbtruk4mlzlw%2FoVMojko9vEmj7axkVTfuP1%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;1184&quot; height=&quot;814&quot; data-origin-width=&quot;1184&quot; data-origin-height=&quot;814&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;Products &amp;amp; Services &amp;rarr; Public IP&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;1334&quot; data-origin-height=&quot;426&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AfWkr/btruk47MrTi/k9AKzBNTQGtBgVzFEVtKa0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AfWkr/btruk47MrTi/k9AKzBNTQGtBgVzFEVtKa0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AfWkr/btruk47MrTi/k9AKzBNTQGtBgVzFEVtKa0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAfWkr%2Fbtruk47MrTi%2Fk9AKzBNTQGtBgVzFEVtKa0%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;1334&quot; height=&quot;426&quot; data-origin-width=&quot;1334&quot; data-origin-height=&quot;426&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Screen Shot 2022-02-25 at 5.17.58 PM.png&quot; data-origin-width=&quot;1356&quot; data-origin-height=&quot;1086&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bf7WLF/btrul4fh24V/pAgisIxaYPJ65MjSJTwsm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bf7WLF/btrul4fh24V/pAgisIxaYPJ65MjSJTwsm1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bf7WLF/btrul4fh24V/pAgisIxaYPJ65MjSJTwsm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbf7WLF%2Fbtrul4fh24V%2FpAgisIxaYPJ65MjSJTwsm1%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;1356&quot; height=&quot;1086&quot; data-filename=&quot;Screen Shot 2022-02-25 at 5.17.58 PM.png&quot; data-origin-width=&quot;1356&quot; data-origin-height=&quot;1086&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;p data-ke-size=&quot;size16&quot;&gt;작성자는 공인 IP 주소가 할당되지 않은 서버가 없어서 미할당이라고 뜨는데 생성한 서버가 있다면 해당 서버 이름이 뜰 것이다.&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-filename=&quot;Screen Shot 2022-02-25 at 5.18.58 PM.png&quot; data-origin-width=&quot;1350&quot; data-origin-height=&quot;908&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wpr8w/btruqFyQMOY/xXZTFd9oYWFHblv0LDK7fk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wpr8w/btruqFyQMOY/xXZTFd9oYWFHblv0LDK7fk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wpr8w/btruqFyQMOY/xXZTFd9oYWFHblv0LDK7fk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fwpr8w%2FbtruqFyQMOY%2FxXZTFd9oYWFHblv0LDK7fk%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;1350&quot; height=&quot;908&quot; data-filename=&quot;Screen Shot 2022-02-25 at 5.18.58 PM.png&quot; data-origin-width=&quot;1350&quot; data-origin-height=&quot;908&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;생성 완료!&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;2586&quot; data-origin-height=&quot;1072&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cMgJrj/btruiSmnc3O/ixmlKDvummh6Lk6R7z6mxk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cMgJrj/btruiSmnc3O/ixmlKDvummh6Lk6R7z6mxk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cMgJrj/btruiSmnc3O/ixmlKDvummh6Lk6R7z6mxk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcMgJrj%2FbtruiSmnc3O%2FixmlKDvummh6Lk6R7z6mxk%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;2586&quot; height=&quot;1072&quot; data-origin-width=&quot;2586&quot; data-origin-height=&quot;1072&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 data-grammar=&quot;{&amp;quot;input&amp;quot;:&amp;quot;server 로&amp;quot;,&amp;quot;output&amp;quot;:&amp;quot;server로&amp;quot;,&amp;quot;etype&amp;quot;:&amp;quot;space&amp;quot;}&quot; data-grammar-id=&quot;grammar2&quot; data-grammar-focus=&quot;false&quot;&gt;server 로&lt;/span&gt; 돌아와서 연결한 서버를 클릭하면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상세 페이지에서 공인 &lt;span data-grammar=&quot;{&amp;quot;input&amp;quot;:&amp;quot;IP 에&amp;quot;,&amp;quot;output&amp;quot;:&amp;quot;IP에&amp;quot;,&amp;quot;etype&amp;quot;:&amp;quot;space&amp;quot;}&quot; data-grammar-id=&quot;grammar3&quot; data-grammar-focus=&quot;false&quot;&gt;IP 에&lt;/span&gt; 방금 연결한 IP 주소가 들어와 있는 것을 확인할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;서버 생성했고 &lt;u&gt;IP 주소&lt;/u&gt;, &lt;u&gt;관리자 비밀번호&lt;/u&gt; (= root 비밀 &lt;span data-grammar=&quot;{&amp;quot;input&amp;quot;:&amp;quot;번호) 까지&amp;quot;,&amp;quot;output&amp;quot;:&amp;quot;번호)까지&amp;quot;,&amp;quot;etype&amp;quot;:&amp;quot;space&amp;quot;}&quot; data-grammar-id=&quot;grammar4&quot; data-grammar-focus=&quot;false&quot;&gt;번호) 까지&lt;/span&gt; 다 아니까&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이제 접속이 가능하다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;ssh 접속&lt;/blockquote&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-filename=&quot;Screen Shot 2022-02-25 at 5.25.35 PM.png&quot; data-origin-width=&quot;1134&quot; data-origin-height=&quot;202&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lsooU/btruh7xmM3W/rUt9jutsD05kyaSgxM3K8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lsooU/btruh7xmM3W/rUt9jutsD05kyaSgxM3K8K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lsooU/btruh7xmM3W/rUt9jutsD05kyaSgxM3K8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlsooU%2Fbtruh7xmM3W%2FrUt9jutsD05kyaSgxM3K8K%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;1134&quot; height=&quot;202&quot; data-filename=&quot;Screen Shot 2022-02-25 at 5.25.35 PM.png&quot; data-origin-width=&quot;1134&quot; data-origin-height=&quot;202&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1645777619718&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;% ssh root@{공인 IP 주소}&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;&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;color: #ee2323;&quot;&gt;&lt;b&gt;관리자 비밀번호&lt;/b&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;&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;842&quot; data-origin-height=&quot;112&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mqRre/btruolnkTTv/RscE5fScKz8i6fME1OLL4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mqRre/btruolnkTTv/RscE5fScKz8i6fME1OLL4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mqRre/btruolnkTTv/RscE5fScKz8i6fME1OLL4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmqRre%2FbtruolnkTTv%2FRscE5fScKz8i6fME1OLL4k%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;112&quot; data-origin-width=&quot;842&quot; data-origin-height=&quot;112&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;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-filename=&quot;Screen Shot 2022-02-25 at 5.29.12 PM.png&quot; data-origin-width=&quot;1012&quot; data-origin-height=&quot;738&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dWXspC/btrup8nARE0/p9l7Jbhxlz7LiKCDyj6HqK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dWXspC/btrup8nARE0/p9l7Jbhxlz7LiKCDyj6HqK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dWXspC/btrup8nARE0/p9l7Jbhxlz7LiKCDyj6HqK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdWXspC%2Fbtrup8nARE0%2Fp9l7Jbhxlz7LiKCDyj6HqK%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;1012&quot; height=&quot;738&quot; data-filename=&quot;Screen Shot 2022-02-25 at 5.29.12 PM.png&quot; data-origin-width=&quot;1012&quot; data-origin-height=&quot;738&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이런 식으로 나오면 정상적으로 접속이 완료된 것이다!&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;관리자 비밀번호 변경&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;매번 네이버에서 준 관리자 비밀번호 입력하기 귀찮다면 접속하고 바로 관리자 비밀번호를 변경할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1645777851709&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;% sudo root passwd&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입력해서 new password 두 번 정상적으로 입력해주면 관리자 비밀번호를 직접 설정할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;서버 생성이 끝났다 ⸜(*ˊᗜˋ*)⸝&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이제 프로젝트를 빌드하고 실행시키면 되는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;로컬에서 &lt;span data-grammar=&quot;{&amp;quot;input&amp;quot;:&amp;quot;어플리케이션&amp;quot;,&amp;quot;output&amp;quot;:&amp;quot;애플리케이션&amp;quot;,&amp;quot;etype&amp;quot;:&amp;quot;spell&amp;quot;}&quot; data-grammar-id=&quot;grammar5&quot; data-grammar-focus=&quot;false&quot;&gt;어플리케이션&lt;/span&gt; 빌드 &amp;amp; 실행했던 과정을 그~대로 클라우드 서버에서 한다&lt;/span&gt;&lt;/blockquote&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;고 생각하면 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&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;깡통 그 자체&lt;/b&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 data-grammar=&quot;{&amp;quot;input&amp;quot;:&amp;quot;되는게&amp;quot;,&amp;quot;output&amp;quot;:&amp;quot;되는 게&amp;quot;,&amp;quot;etype&amp;quot;:&amp;quot;space&amp;quot;}&quot; data-grammar-id=&quot;grammar6&quot; data-grammar-focus=&quot;false&quot;&gt;되는게&lt;/span&gt; 없는 상태고 당연히 프로젝트에 대한 아무런 정보도 가지고 있지 않다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러므로 본인의 &lt;span data-grammar=&quot;{&amp;quot;input&amp;quot;:&amp;quot;어플리케이션에&amp;quot;,&amp;quot;output&amp;quot;:&amp;quot;애플리케이션에&amp;quot;,&amp;quot;etype&amp;quot;:&amp;quot;spell&amp;quot;}&quot; data-grammar-id=&quot;grammar7&quot; data-grammar-focus=&quot;false&quot;&gt;어플리케이션에&lt;/span&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;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;b&gt;프레임워크&lt;/b&gt;를 사용했느냐에 따라 다른데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;ex)&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-grammar=&quot;{&amp;quot;input&amp;quot;:&amp;quot;스프링부트&amp;quot;,&amp;quot;output&amp;quot;:&amp;quot;스프링 부트&amp;quot;,&amp;quot;etype&amp;quot;:&amp;quot;space&amp;quot;}&quot; data-grammar-id=&quot;grammar8&quot; data-grammar-focus=&quot;false&quot;&gt;스프링부트&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;노드 리액트 뷰&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;플라스크&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;등등등&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;span data-grammar=&quot;{&amp;quot;input&amp;quot;:&amp;quot;GCP 까지&amp;quot;,&amp;quot;output&amp;quot;:&amp;quot;GCP까지&amp;quot;,&amp;quot;etype&amp;quot;:&amp;quot;space&amp;quot;}&quot; data-grammar-id=&quot;grammar9&quot; data-grammar-focus=&quot;false&quot;&gt;GCP 까지&lt;/span&gt; 모두 마치면 &lt;span data-grammar=&quot;{&amp;quot;input&amp;quot;:&amp;quot;그 때&amp;quot;,&amp;quot;output&amp;quot;:&amp;quot;그때&amp;quot;,&amp;quot;etype&amp;quot;:&amp;quot;space&amp;quot;}&quot; data-grammar-id=&quot;grammar10&quot; data-grammar-focus=&quot;false&quot;&gt;그 때&lt;/span&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;&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: center;&quot; data-ke-size=&quot;size16&quot;&gt;끝!&lt;/p&gt;</description>
      <category>공부/Server</category>
      <category>naver cloud platform</category>
      <category>NCP</category>
      <category>REACT</category>
      <category>Spring Boot</category>
      <category>공인 IP</category>
      <category>리액트</category>
      <category>배포</category>
      <category>스프링부트</category>
      <category>포트 포워딩</category>
      <author>jihyee</author>
      <guid isPermaLink="true">https://jihyee.tistory.com/31</guid>
      <comments>https://jihyee.tistory.com/31#entry31comment</comments>
      <pubDate>Fri, 25 Feb 2022 18:02:11 +0900</pubDate>
    </item>
    <item>
      <title>[PS_DP] 3078 좋은 친구 파이썬</title>
      <link>https://jihyee.tistory.com/30</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2362&quot; data-origin-height=&quot;446&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dogJcA/btrtXrix0Hl/Uycxrcidn2Qeimt5y1y1w0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dogJcA/btrtXrix0Hl/Uycxrcidn2Qeimt5y1y1w0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dogJcA/btrtXrix0Hl/Uycxrcidn2Qeimt5y1y1w0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdogJcA%2FbtrtXrix0Hl%2FUycxrcidn2Qeimt5y1y1w0%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;2362&quot; height=&quot;446&quot; data-origin-width=&quot;2362&quot; data-origin-height=&quot;446&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;문제&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&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;/li&gt;
&lt;li&gt;??: 오빠! 오빠는 말콤의 친구와 성적이라는 책 안 읽어 봤어? 이 책에는 성적과 친구가 무슨 관계가 있는지 나와. 요즘 애들은 친구를 사귀기 전에 먼저 그 친구의 반 등수를 살펴봐. 말콤은 이 연구를 하기 위해서 6년동안 초등학교에서 선생님으로 위장 했었지. 하지만, 6년이라는 시간을 초등학교에서 보냈지만, 그 사람은 결국 결론을 얻지 못했어.&lt;/li&gt;
&lt;li&gt;상근: 근데?&lt;/li&gt;
&lt;li&gt;??: 말콤이 어느 날 자신이 초등학생이 되어 학교를 활보하는 꿈을 꾸었어. 근데 잠을 깨고 나니 내가 꿈을 꾸고 초등학생이 된건지, 아니면 초등학생이 꿈을 꾸고 지금의 내가 되어있는지를 모르겠는거야. 그래서 말콤은 상식적인 사고 방식에 큰 의문을 가졌지. 그 때 말콤은 깨달았던거야. 초등학교 친구는 부질없구나. 그제서야 알게된거야. 모든 학생은 자신과 반 등수의 차이가 K를 넘으면 친구가 아니라는거.&lt;/li&gt;
&lt;li&gt;상근: 아? 근데 K는 어떻게 구해?&lt;/li&gt;
&lt;li&gt;??: K는 문제에서 주어지지. 근데, 더 중요한 사실이 있어. 친구와 좋은 친구의 차이야. 말콤이 친구와 성적을 쓰고 2년 뒤에 낸 책인 좋은 친구라는 책에는 좋은 친구는 이름의 길이가 같아야 된다는 말이 나와.&lt;/li&gt;
&lt;li&gt;상근: 아! 그럼 난 오늘 집에 가서 우리 반에 좋은 친구가 몇 쌍이나 있는지 구해봐야 겠어!&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상근이네 반의 N명 학생들의 이름이 성적순으로 주어졌을 때, 좋은 친구가 몇 쌍이나 있는지 구하는 프로그램을 작성하시오. 좋은 친구는 등수의 차이가 K보다 작거나 같으면서 이름의 길이가 같은 친구이다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;입력&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 N과 K가 주어진다. (3 &amp;le; N &amp;le; 300,000, 1 &amp;le; K &amp;le; N) 다음 N개 줄에는 상근이네 반 학생의 이름이 성적순으로 주어진다. 이름은 알파벳 대문자로 이루어져 있고, 2글자 ~ 20글자이다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;출력&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 좋은 친구가 몇 쌍이 있는지&amp;nbsp;출력한다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;풀이&lt;/blockquote&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;pre id=&quot;code_1645541732486&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;n, k = map(int, input().split())
student = []
for i in range(n):
    student.append(len(input()))
print(enumerate(student))&lt;/code&gt;&lt;/pre&gt;</description>
      <category>공부/Algorithm</category>
      <author>jihyee</author>
      <guid isPermaLink="true">https://jihyee.tistory.com/30</guid>
      <comments>https://jihyee.tistory.com/30#entry30comment</comments>
      <pubDate>Tue, 22 Feb 2022 23:55:49 +0900</pubDate>
    </item>
    <item>
      <title>[PS_스택 큐 덱] 1158 요세푸스 문제 파이썬</title>
      <link>https://jihyee.tistory.com/29</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1171&quot; data-origin-height=&quot;224&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lu6IQ/btrtREhRRsG/NvVIeIjLxkX6ROXOCQ7Jck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lu6IQ/btrtREhRRsG/NvVIeIjLxkX6ROXOCQ7Jck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lu6IQ/btrtREhRRsG/NvVIeIjLxkX6ROXOCQ7Jck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flu6IQ%2FbtrtREhRRsG%2FNvVIeIjLxkX6ROXOCQ7Jck%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;224&quot; data-origin-width=&quot;1171&quot; data-origin-height=&quot;224&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;문제&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요세푸스 문제는 다음과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1번부터 N번까지 N명의 사람이 원을 이루면서&amp;nbsp;앉아있고, 양의 정수 K(&amp;le; N)가&amp;nbsp;주어진다. 이제 순서대로 K번째 사람을 제거한다. 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나간다. 이 과정은 N명의 사람이 모두 제거될 때까지 계속된다. 원에서 사람들이 제거되는 순서를 (N, K)-요세푸스 순열이라고 한다. 예를 들어 (7, 3)-요세푸스 순열은 &amp;lt;3, 6, 2, 7, 5, 1, 4&amp;gt;이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;N과 K가 주어지면 (N, K)-요세푸스 순열을 구하는 프로그램을 작성하시오.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;입력&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 &amp;le; K &amp;le; N &amp;le; 5,000)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;출력&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예제와 같이 요세푸스 순열을 출력한다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;코드&lt;/blockquote&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;pre id=&quot;code_1645511241395&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from collections import deque
n, k = map(int, input().split())
deque = deque()
index = 1
answer = []
deque = [i for i in range(1, n + 1)]
while len(deque):
    if index % k == 0:
        answer.append(deque.popleft())
        index += 1
    else:
        deque.append(deque.popleft())
        index += 1
print(&quot;&amp;lt;&quot;, ', '.join(str(i) for i in answer), &quot;&amp;gt;&quot;, sep=&quot;&quot;)&lt;/code&gt;&lt;/pre&gt;</description>
      <category>공부/Algorithm</category>
      <author>jihyee</author>
      <guid isPermaLink="true">https://jihyee.tistory.com/29</guid>
      <comments>https://jihyee.tistory.com/29#entry29comment</comments>
      <pubDate>Tue, 22 Feb 2022 15:27:31 +0900</pubDate>
    </item>
    <item>
      <title>HTTP ⁉ HTTPS ‼ HTTPS 개념과 NGINX, SPRING BOOT 어플리케이션 적용하기</title>
      <link>https://jihyee.tistory.com/28</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;오늘 GDSC 10 min Tech seminar가 진행됐는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;주제가&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt; HTTP와 HTTPS&lt;/b&gt; &lt;/span&gt;였다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;예전에 이 문제로 사이트 배포를 다 해두고도 프로젝트 제출을 못했던 안타까운 경험이 있었기 때문에..,,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;항상 정리해야지 해야지 했는데 이번 기회에 발표 내용도 정리하고 기록할 겸 포스팅을 올리려고 한다!&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;GDSC 10min 세션 링크 &amp;darr;&lt;i&gt;&amp;darr;&lt;/i&gt;&lt;i&gt;&amp;darr;&lt;/i&gt;&lt;/i&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1645496409506&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;http와 https&quot; data-og-description=&quot;목차 HTTP와 HTTPS의 개념 HTTPS의 특징 - ① 보안성 HTTPS의 특징 - ② 암호화 기술 HTTPS의 동작 과정 HTTP와 HTTPS의 개념 HTTP (Hypertext Transfer Protocol) 우리가 잘 알고 있는 http는 서로 다른 시스템들..&quot; data-og-host=&quot;dsc-sookmyung.tistory.com&quot; data-og-source-url=&quot;https://dsc-sookmyung.tistory.com/263?category=943365&quot; data-og-url=&quot;https://dsc-sookmyung.tistory.com/263&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/y2eSH/hyNuh0VgQZ/48NCThB5TUYYLFFl45Pcb1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/ekSakW/hyNuf27S9G/HfmkDD2KebE5pqqyK7PfT0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/befZK9/hyNvnFeC6H/CiTVnI2d7y8rqNUH8yR6Ak/img.jpg?width=1024&amp;amp;height=1024&amp;amp;face=0_0_1024_1024&quot;&gt;&lt;a href=&quot;https://dsc-sookmyung.tistory.com/263?category=943365&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://dsc-sookmyung.tistory.com/263?category=943365&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/y2eSH/hyNuh0VgQZ/48NCThB5TUYYLFFl45Pcb1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/ekSakW/hyNuf27S9G/HfmkDD2KebE5pqqyK7PfT0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/befZK9/hyNvnFeC6H/CiTVnI2d7y8rqNUH8yR6Ak/img.jpg?width=1024&amp;amp;height=1024&amp;amp;face=0_0_1024_1024');&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;http와 https&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;목차 HTTP와 HTTPS의 개념 HTTPS의 특징 - ① 보안성 HTTPS의 특징 - ② 암호화 기술 HTTPS의 동작 과정 HTTP와 HTTPS의 개념 HTTP (Hypertext Transfer Protocol) 우리가 잘 알고 있는 http는 서로 다른 시스템들..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;dsc-sookmyung.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;HTTPS 는 HTTP에서 &lt;b&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;secure, 보안이 강화된 프로토콜&lt;/span&gt;&lt;/b&gt;이라고 이해하면 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;362&quot; data-origin-height=&quot;139&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qmCVU/btrtYWawU1A/1T170w6ySBg9KlHK122kK0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qmCVU/btrtYWawU1A/1T170w6ySBg9KlHK122kK0/img.jpg&quot; data-alt=&quot;계층 구조 위치&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qmCVU/btrtYWawU1A/1T170w6ySBg9KlHK122kK0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqmCVU%2FbtrtYWawU1A%2F1T170w6ySBg9KlHK122kK0%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;362&quot; height=&quot;139&quot; data-origin-width=&quot;362&quot; data-origin-height=&quot;139&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;계층 구조 위치&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;보안이 강화된&lt;/span&gt;&lt;/blockquote&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;보안이 강화됐다는 것은 &lt;b&gt;&lt;/b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;패킷이 암호화돼서&lt;/b&gt;&lt;/span&gt; 중간에 다른 사용자가 이를 가로채 악용할 가능성이 없다는 것을 의미하며&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;(이미지 참고!)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;이런 이유로&lt;span style=&quot;color: #0593d3;&quot;&gt; &lt;b&gt;믿을 수 있는 사이트임&lt;/b&gt;&lt;/span&gt;을 보장한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;621&quot; data-origin-height=&quot;468&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/E3dtL/btrt1JBJktm/s9bjBo5I4E357GPKV2Vut0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/E3dtL/btrt1JBJktm/s9bjBo5I4E357GPKV2Vut0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/E3dtL/btrt1JBJktm/s9bjBo5I4E357GPKV2Vut0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FE3dtL%2Fbtrt1JBJktm%2Fs9bjBo5I4E357GPKV2Vut0%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;621&quot; height=&quot;468&quot; data-origin-width=&quot;621&quot; data-origin-height=&quot;468&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;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;적용 방식 : 어떻게 secure 보안을 강화할까?&lt;/span&gt;&lt;/blockquote&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;우선 웹 사이트 동작 과정을 보면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt; 클라이언트 (사용자) &amp;harr; 서버 (사이트)&lt;/b&gt;&lt;/span&gt; 가 각자 데이터를 주고받으며 상호작용한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;하지만 이는 데이터가 암호화되어 있는지 사용자는 알 방법이 없다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;따라서 인증을 위한 &lt;u&gt;제삼자를&lt;/u&gt; 둬야 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;제삼자? 제삼자가 왜 필요해?&lt;/span&gt;&lt;/blockquote&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;예시를 들어 설명하면 &lt;span style=&quot;background-color: #9feec3;&quot;&gt;나랑 민수&lt;/span&gt;는 서로&lt;span style=&quot;background-color: #9feec3;&quot;&gt; 비밀 일기장&lt;/span&gt;을 교환하는 사이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;근데 아무래도 일기장을 교환하는 중간중간에 &lt;span style=&quot;background-color: #9feec3;&quot;&gt;철수&lt;/span&gt;가 우리의 일기장을 몰래 보는 것 같다 !!&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;나와 민수는 우리의 일기장을 지키기 위한 보안의 필요성을 느꼈고 머리를 굴렸다&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그때 저 멀리 놀고 있는 &lt;span style=&quot;background-color: #9feec3;&quot;&gt;영희&lt;/span&gt;가 눈에 띄었다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;나는 영희에게 간식을 바치는 조건으로 일기장을 열 수 있는 &lt;span style=&quot;background-color: #9feec3;&quot;&gt;열쇠&lt;/span&gt;를 좀 보관해달라고 부탁했다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이후 나와 민수는 영희의 키를 이용해 일기장을 열어 공유했고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;영희에게 받은 키가 없는 철수는 더 이상 우리의 일기장을 몰래 보는 것을 포기할 수밖에 없었다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;맞는 예시인지 모르겠지만 대칭키 비대칭키 제외하고 최대한 간단하게 과정을 설명하면 이와 같을 것 같다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;제삼자인 인증 기관(Let's Encrypt) &amp;rarr; 영희&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;인증키 발급 (TTL/SSL 인증서) &amp;rarr; 열쇠&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;사용자 &amp;rarr; 나와 민수&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;원리는 여기까지고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;nginx, java 각각의 적용 방식&lt;/span&gt;&lt;/b&gt;을 설명하면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;※ 우선 무조건 도메인이 연결되어 있어야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;❌ localhost 153.548.21.15 ❌&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;NGINX 기반 애플리케이션 HTTPS 적용&lt;/span&gt;&lt;/blockquote&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Cerbot 설치&lt;/blockquote&gt;
&lt;pre id=&quot;code_1645499656044&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo apt-get update
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository universe
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update

$ sudo apt-get install certbot python3-certbot-nginx&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Nginx Configuration 설정&lt;/blockquote&gt;
&lt;pre id=&quot;code_1645499704228&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo vi /etc/nginx/sites-available/default&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이 파일 내부에 server_name 에 HTTPS 로 적용하고 싶은 사이트의 도메인 주소를 넣어준다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1645499793686&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo nginx -t
// 파일 변경이 잘 적용되었는지 확인
$ sudo systemctl reload nginx
// nginx reload&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;blockquote data-ke-style=&quot;style2&quot;&gt;SSL 인증서 받기&lt;/blockquote&gt;
&lt;pre class=&quot;shell&quot; data-ke-language=&quot;shell&quot;&gt;&lt;code&gt;$ sudo certbot --nginx -d {적용할 도메인 주소} -d {www.적용할 도메인 주소}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아까 설치한 cerbot 을 사용해서 도메인을 위한 인증서를 받는다.&lt;/p&gt;
&lt;pre class=&quot;shell&quot; data-ke-language=&quot;shell&quot;&gt;&lt;code&gt;$ sudo service nginx restart&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;nginx 재실행&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;&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;Spring Boot 기반 애플리케이션 HTTPS 적용&lt;/blockquote&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;인증키 옮기기&lt;/blockquote&gt;
&lt;pre class=&quot;gradle&quot;&gt;&lt;code&gt;$ sudo su
# cp -r /etc/letsencrypt/archive/[domain_name] /home/secure&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;아까 인증키 발급받았던 것을 스프링 부트에 적용하기 위해 home/secure 로 옮겨 준다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;파일 변환&lt;/blockquote&gt;
&lt;pre class=&quot;shell&quot; data-ke-language=&quot;shell&quot;&gt;&lt;code&gt;# openssl pkcs12 -export -in fullchain2.pem -inkey privkey2.pem -out cert_and_key.p12 -name ttp -CAfile chain2.pem -caname root
# keytool -importkeystore -deststorepass [사용할 암호] -destkeypass [사용할 암호] -destkeystore [생성할 jks 파일명] -srckeystore cert_and_key.p12 -srcstoretype PKCS12 -srcstorepass [PKCS12에서 사용한 암호 (위에서 입력한 암호)]
keytool -importkeystore -deststorepass mymy -destkeypass mymy -destkeystore letsencrypt.jks -srckeystore cert_and_key.p12 -srcstoretype PKCS12 -srcstorepass password&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Application.properties 추가&lt;/blockquote&gt;
&lt;pre id=&quot;code_1645503948727&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;server.port=8080
server.ssl.enabled=true
server.ssl.key-store={키 파일 위치 ex) /home/secure/letsencrypt.jks}
server.ssl.key-store-password= {인증키 비밀번호}
server.ssl.key-password= {인증키 비밀번호}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;끝~~&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;٩(&amp;nbsp;ᐛ&amp;nbsp;)و&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>공부/HTTP</category>
      <category>http</category>
      <category>http https 변환</category>
      <category>https</category>
      <category>Let's encrypt</category>
      <category>nginx</category>
      <category>nginx https</category>
      <category>spring boot https</category>
      <category>SpringBoot</category>
      <category>TTL/SSL 인증서</category>
      <author>jihyee</author>
      <guid isPermaLink="true">https://jihyee.tistory.com/28</guid>
      <comments>https://jihyee.tistory.com/28#entry28comment</comments>
      <pubDate>Tue, 22 Feb 2022 13:32:17 +0900</pubDate>
    </item>
    <item>
      <title>[Tistory] 티스토리 화면 편집 팁⁉️ 글꼴 변경부터 사이드바 편집까지‼️</title>
      <link>https://jihyee.tistory.com/27</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot; data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;Tistoy&lt;/span&gt;&lt;/blockquote&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;처음 사용하신다면 &lt;b&gt;&lt;span style=&quot;color: #6164c6;&quot;&gt;화면 구성 편집&lt;/span&gt;&lt;/b&gt;이나 &lt;b&gt;&lt;span style=&quot;color: #6164c6;&quot;&gt;텍스트 편집&lt;/span&gt;&lt;/b&gt;이 도대체 어디에 있나 궁금하신 분들이 있을 것 같다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;스킨을 제공하기도 하고 글을 작성할 때도 6가지 정도의 간단한 서체와 크기를 지정할 수 있는 기능이 있지만&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;기본이니 만큼 마음에 안들 수도 있을 것 같다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;(본인도 굉장히 맘에 안 들었음)&lt;/s&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;티스토리를 약 3달 정도 사용하면서 나름 터득한 티스토리 화면 편집 방법을 공유하려 한다&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;(๑･̑◡･̑๑)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;blockquote style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot; data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;css 편집&lt;/span&gt;&lt;/blockquote&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;웹 프론트 공부를 하지 않고서야 css 가 뭐지 싶은 게 당연할 것 같은데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;한 마디로 설명하면 &lt;span style=&quot;color: #5733b1;&quot;&gt;&lt;b&gt;웹 사이트를 구성하는 모든 요소에 대한 스타일&lt;/b&gt;&lt;/span&gt;이라고 생각하면 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;티스토리는 css 를 직접 편집하는 방식으로 화면 편집이 가능하다.&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/csR7VI/btrtO8WYXgc/pc7H8hsppgcATJDj4G1SA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/csR7VI/btrtO8WYXgc/pc7H8hsppgcATJDj4G1SA1/img.png&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;460&quot; style=&quot;width: 19.958%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/csR7VI/btrtO8WYXgc/pc7H8hsppgcATJDj4G1SA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcsR7VI%2FbtrtO8WYXgc%2Fpc7H8hsppgcATJDj4G1SA1%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;500&quot; height=&quot;460&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qiogB/btrtJCcRAAX/HBFpjqwhVtw5f0KGXtjNYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qiogB/btrtJCcRAAX/HBFpjqwhVtw5f0KGXtjNYk/img.png&quot; data-origin-width=&quot;1186&quot; data-origin-height=&quot;362&quot; data-is-animation=&quot;false&quot; style=&quot;width: 60.1561%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qiogB/btrtJCcRAAX/HBFpjqwhVtw5f0KGXtjNYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqiogB%2FbtrtJCcRAAX%2FHBFpjqwhVtw5f0KGXtjNYk%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;1186&quot; height=&quot;362&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b88GYI/btrtQoZwZ2w/k5TrmImf1PKyzq6cLZiTN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b88GYI/btrtQoZwZ2w/k5TrmImf1PKyzq6cLZiTN1/img.png&quot; data-origin-width=&quot;570&quot; data-origin-height=&quot;596&quot; data-is-animation=&quot;false&quot; style=&quot;width: 17.5603%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b88GYI/btrtQoZwZ2w/k5TrmImf1PKyzq6cLZiTN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb88GYI%2FbtrtQoZwZ2w%2Fk5TrmImf1PKyzq6cLZiTN1%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;570&quot; height=&quot;596&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;편집 &amp;rarr; (꾸미기) 스킨 편집 &amp;rarr; html 편집 &amp;rarr; CSS 클릭!&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이제 여기서 코드를 직접 수정해가며 화면을 편집하면 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;글꼴 변경&lt;/blockquote&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;amp; 눈누 등)&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1645412112149&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;Google Fonts&quot; data-og-description=&quot;Making the web more beautiful, fast, and open through great typography&quot; data-og-host=&quot;fonts.google.com&quot; data-og-source-url=&quot;https://fonts.google.com/?subset=korean&quot; data-og-url=&quot;https://fonts.google.com/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bWUMnq/hyNuoxFbTg/DNPyMjB3riDhGqMBFvotWK/img.png?width=2400&amp;amp;height=1260&amp;amp;face=0_0_2400_1260&quot;&gt;&lt;a href=&quot;https://fonts.google.com/?subset=korean&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://fonts.google.com/?subset=korean&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bWUMnq/hyNuoxFbTg/DNPyMjB3riDhGqMBFvotWK/img.png?width=2400&amp;amp;height=1260&amp;amp;face=0_0_2400_1260');&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;Google Fonts&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Making the web more beautiful, fast, and open through great typography&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;fonts.google.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;figure id=&quot;og_1645412283443&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;noonnu.cc&quot; data-og-source-url=&quot;https://noonnu.cc/&quot; data-og-url=&quot;https://noonnu.cc&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ofdNS/hyNsUrqIxz/NCNEQddlE0pKZ6yuhI0QUK/img.png?width=1200&amp;amp;height=628&amp;amp;face=0_0_1200_628&quot;&gt;&lt;a href=&quot;https://noonnu.cc/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://noonnu.cc/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ofdNS/hyNsUrqIxz/NCNEQddlE0pKZ6yuhI0QUK/img.png?width=1200&amp;amp;height=628&amp;amp;face=0_0_1200_628');&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;noonnu.cc&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-02-21 오후 12.00.02.png&quot; data-origin-width=&quot;2664&quot; data-origin-height=&quot;890&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/czbUWl/btrtLUREaDv/GzU78QvkOc0POxjxU5sDH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/czbUWl/btrtLUREaDv/GzU78QvkOc0POxjxU5sDH0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/czbUWl/btrtLUREaDv/GzU78QvkOc0POxjxU5sDH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FczbUWl%2FbtrtLUREaDv%2FGzU78QvkOc0POxjxU5sDH0%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;2664&quot; height=&quot;890&quot; data-filename=&quot;스크린샷 2022-02-21 오후 12.00.02.png&quot; data-origin-width=&quot;2664&quot; data-origin-height=&quot;890&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;
&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;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1645412053361&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@font-face {
    font-family: 'KyoboHand';
    src: url('https://cdn.jsdelivr.net/gh/projectnoonnu/noonfonts_20-04@1.0/KyoboHand.woff') format('woff');
    font-weight: normal;
    font-style: normal;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;CSS 에 @charset &quot;UTF-8&quot; 아래에 아래 이미지와 같이 붙여 넣기를 해준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-02-21 오후 12.18.11.png&quot; data-origin-width=&quot;1176&quot; data-origin-height=&quot;536&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cqOOYa/btrtRWogycu/xTqkfGUEmmy3VtOZwrLJvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cqOOYa/btrtRWogycu/xTqkfGUEmmy3VtOZwrLJvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cqOOYa/btrtRWogycu/xTqkfGUEmmy3VtOZwrLJvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcqOOYa%2FbtrtRWogycu%2FxTqkfGUEmmy3VtOZwrLJvK%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;1176&quot; height=&quot;536&quot; data-filename=&quot;스크린샷 2022-02-21 오후 12.18.11.png&quot; data-origin-width=&quot;1176&quot; data-origin-height=&quot;536&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 웹 폰트를 붙여 넣어주면 &quot;KyoboHand&quot; 이름의 웹 폰트를 CSS 내에서 이제 사용할 수 있음을 의미한다.&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;&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: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;※ 여기서부터가 중요&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;font 를 변경해야 하니까 해당 설정이 무슨 이름으로 정의되어 있는지 찾는 게 중요하다&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;ex )&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;title 을 변경하고 싶다? &amp;rarr; title 이 어떤 태그에 정의되어 있는지 확인!&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;글꼴은 font-family라는 이름으로 정의되어 있다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;CSS 코드에 &lt;b&gt;커서를 올리&lt;/b&gt;고 &lt;b&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;ctrl + F&lt;/span&gt; 를 누르&lt;/b&gt;고&lt;b&gt; font-family를 모두 검색&lt;/b&gt;하고 (검색 여러 개 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;ctrl + G&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;스크린샷 2022-02-21 오후 12.21.16.png&quot; data-origin-width=&quot;868&quot; data-origin-height=&quot;174&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/baYPsS/btrtO8CFJkM/Kx9vyHujhbWFH8GTYkCZmk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/baYPsS/btrtO8CFJkM/Kx9vyHujhbWFH8GTYkCZmk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/baYPsS/btrtO8CFJkM/Kx9vyHujhbWFH8GTYkCZmk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbaYPsS%2FbtrtO8CFJkM%2FKx9vyHujhbWFH8GTYkCZmk%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;868&quot; height=&quot;174&quot; data-filename=&quot;스크린샷 2022-02-21 오후 12.21.16.png&quot; data-origin-width=&quot;868&quot; data-origin-height=&quot;174&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;위 이미지와 같이 monospace 등 지정되어 있는 원래 글꼴들을&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;아까 웹 폰트로 정의했던 'KyoboHand' 로 모두 바꿔준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-02-21 오후 12.27.26.png&quot; data-origin-width=&quot;3140&quot; data-origin-height=&quot;1678&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DhssV/btrtJCjCy7z/kig6TSjagu7xOKjnhk2p61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DhssV/btrtJCjCy7z/kig6TSjagu7xOKjnhk2p61/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DhssV/btrtJCjCy7z/kig6TSjagu7xOKjnhk2p61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDhssV%2FbtrtJCjCy7z%2Fkig6TSjagu7xOKjnhk2p61%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;3140&quot; height=&quot;1678&quot; data-filename=&quot;스크린샷 2022-02-21 오후 12.27.26.png&quot; data-origin-width=&quot;3140&quot; data-origin-height=&quot;1678&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;font-family를 모두 바꾸고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;우측 상단에 적용 버튼 클릭 !&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;중앙 상단에 새로 고침 버튼 클릭 !&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;내가 웹 폰트로 가져온 폰트로 변경된 것을 확인할 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이런 방식으로 글꼴 말고도 다른 화면 전체를 편집할 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;추가적인 설명을 위해 사이드바 크기를 조절하는 예시를 한 번 더 해보면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;사이드 바 크기 조절&lt;/blockquote&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;우선 아까 글꼴은 font-family를 변경하는 것으로 가능했던 것처럼&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;사이드바가 html css 에서 &lt;span style=&quot;color: #5733b1;&quot;&gt;&lt;b&gt;어떤 이름&lt;/b&gt;&lt;/span&gt;으로 지정되어 있는지를 먼저 파악해야 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;1138&quot; data-origin-height=&quot;914&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d0hv5N/btrtXxuwqM1/3kdHQ8ekMQGzWjnJKsv5v0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d0hv5N/btrtXxuwqM1/3kdHQ8ekMQGzWjnJKsv5v0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d0hv5N/btrtXxuwqM1/3kdHQ8ekMQGzWjnJKsv5v0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd0hv5N%2FbtrtXxuwqM1%2F3kdHQ8ekMQGzWjnJKsv5v0%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;636&quot; height=&quot;511&quot; data-origin-width=&quot;1138&quot; data-origin-height=&quot;914&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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;창 위에 커서를 올리로 우클릭을 해서 검사 클릭&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;1262&quot; data-origin-height=&quot;1104&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bosBYR/btrtYdbwj5j/1lWUkTFFSMTUN6hJ3V8MKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bosBYR/btrtYdbwj5j/1lWUkTFFSMTUN6hJ3V8MKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bosBYR/btrtYdbwj5j/1lWUkTFFSMTUN6hJ3V8MKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbosBYR%2FbtrtYdbwj5j%2F1lWUkTFFSMTUN6hJ3V8MKk%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;1262&quot; height=&quot;1104&quot; data-origin-width=&quot;1262&quot; data-origin-height=&quot;1104&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;마우스 아이콘을 클릭하고&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1544&quot; data-origin-height=&quot;778&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/s4THu/btrtOzNwana/fJneFJY0WRluNQnXdvvHx1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/s4THu/btrtOzNwana/fJneFJY0WRluNQnXdvvHx1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/s4THu/btrtOzNwana/fJneFJY0WRluNQnXdvvHx1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fs4THu%2FbtrtOzNwana%2FfJneFJY0WRluNQnXdvvHx1%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;1544&quot; height=&quot;778&quot; data-origin-width=&quot;1544&quot; data-origin-height=&quot;778&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;사이드바를 수정하려고 했으니 사이드 바 부분에 커서를 가져가서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;오른쪽에 뜨는 class 의 이름을 확인하면 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;폰트 &amp;rarr; font-family&lt;br /&gt;사이드 바&amp;nbsp;&amp;rarr; area-aside&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이제 수정해야 되니까 다시 스킨 편집 &lt;span&gt;&amp;rarr; HTML 편집&amp;nbsp;&lt;span&gt;&amp;rarr; &lt;/span&gt;CSS 로&lt;/span&gt; 가서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;ctrl + F&lt;/span&gt; 검색 창에 area-aside &lt;span style=&quot;background-color: #f6e199;&quot;&gt;ctrl + G&lt;/span&gt; 순차 검색으로 변경할 부분 변경&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;658&quot; data-origin-height=&quot;572&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d2Amm7/btrtRDWrThW/e8kJXkd3tSkG5RksbPfljk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d2Amm7/btrtRDWrThW/e8kJXkd3tSkG5RksbPfljk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d2Amm7/btrtRDWrThW/e8kJXkd3tSkG5RksbPfljk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd2Amm7%2FbtrtRDWrThW%2Fe8kJXkd3tSkG5RksbPfljk%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;435&quot; height=&quot;378&quot; data-origin-width=&quot;658&quot; data-origin-height=&quot;572&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여기서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;width 조정하면 되겠다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;조정 &amp;rarr; 적용 &amp;rarr; 새로고침&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;반복하면 끝!&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;\(&amp;nbsp;&amp;circ;o&amp;circ;&amp;nbsp;)/​&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;위에서 예시를 들었던 글꼴 사이드바 말고도&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;html 과 css 에는 화면을 구성하는 모든 요소가 들어있을 테니까&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;수정하고 싶은 부분만 잘 찾아서 수정해주면 될 것 같다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;처음엔 CSS로 이렇게 수정하는게 어렵게 느껴질 수 있는데&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;하다보면 적응돼서 꽤 빠르고 간단하게 할 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;blockquote style=&quot;text-align: center;&quot; data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;내 티스토리&lt;/span&gt;&lt;/blockquote&gt;
&lt;p style=&quot;text-align: center;&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-filename=&quot;스크린샷 2022-02-21 오후 3.03.49.png&quot; data-origin-width=&quot;3180&quot; data-origin-height=&quot;1668&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsirbJ/btrtU8Wceru/nh8mdTCiukMWFYcThMFNy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsirbJ/btrtU8Wceru/nh8mdTCiukMWFYcThMFNy1/img.png&quot; data-alt=&quot;글꼴, 사이드바, 카테고리 텍스트 수정해서 최대한 글에 집중할 수 있게 수정해줬다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsirbJ/btrtU8Wceru/nh8mdTCiukMWFYcThMFNy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsirbJ%2FbtrtU8Wceru%2Fnh8mdTCiukMWFYcThMFNy1%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;860&quot; height=&quot;451&quot; data-filename=&quot;스크린샷 2022-02-21 오후 3.03.49.png&quot; data-origin-width=&quot;3180&quot; data-origin-height=&quot;1668&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;글꼴, 사이드바, 카테고리 텍스트 수정해서 최대한 글에 집중할 수 있게 수정해줬다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>공부/기타</category>
      <category>Tistory</category>
      <category>눈누</category>
      <category>웹폰트</category>
      <category>티스토리</category>
      <category>티스토리css</category>
      <category>티스토리글꼴변경</category>
      <category>티스토리글편집</category>
      <category>티스토리사이드바수정</category>
      <category>티스토리스킨편집</category>
      <category>티스토리편집</category>
      <author>jihyee</author>
      <guid isPermaLink="true">https://jihyee.tistory.com/27</guid>
      <comments>https://jihyee.tistory.com/27#entry27comment</comments>
      <pubDate>Mon, 21 Feb 2022 15:13:31 +0900</pubDate>
    </item>
    <item>
      <title>[Naver Cloud Platform] SpringBoot 스프링부트 React 리액트 네이버 클라우드 플랫폼 배포하기  ① 서버 생성</title>
      <link>https://jihyee.tistory.com/26</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;※ aws 로 배포하기 &amp;darr;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;배포 서버 등의 개념 설명은 아래 포스팅에 적어두었다!&lt;/i&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1645085200112&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;[AWS + spring boot] 서버 배포하기 _ 1&quot; data-og-description=&quot;서버는 왜 배포해야할까 서버를 24시간 작동하게 하는 방법은 3가지 내 pc를 24시간 구동시킨다. 호스팅 서비스를 이용한다. 클라우드 서비스를 이용한다. 그 중 유동적으로 트래픽 관리가 가능한&quot; data-og-host=&quot;jihyee.tistory.com&quot; data-og-source-url=&quot;https://jihyee.tistory.com/4?category=1061703&quot; data-og-url=&quot;https://jihyee.tistory.com/4&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cgclHU/hyNqyIXUq6/4E88UW59D5Xa5SAF37e72K/img.png?width=259&amp;amp;height=194&amp;amp;face=0_0_259_194,https://scrap.kakaocdn.net/dn/4F1sv/hyNrFTZTc1/9F57NUCv02X4F3iyTLVjgK/img.png?width=259&amp;amp;height=194&amp;amp;face=0_0_259_194,https://scrap.kakaocdn.net/dn/pfMRj/hyNqvyGDh0/DwaJKJkQBbBBv6VKkP28HK/img.jpg?width=1440&amp;amp;height=1080&amp;amp;face=0_0_1440_1080&quot;&gt;&lt;a href=&quot;https://jihyee.tistory.com/4?category=1061703&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://jihyee.tistory.com/4?category=1061703&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cgclHU/hyNqyIXUq6/4E88UW59D5Xa5SAF37e72K/img.png?width=259&amp;amp;height=194&amp;amp;face=0_0_259_194,https://scrap.kakaocdn.net/dn/4F1sv/hyNrFTZTc1/9F57NUCv02X4F3iyTLVjgK/img.png?width=259&amp;amp;height=194&amp;amp;face=0_0_259_194,https://scrap.kakaocdn.net/dn/pfMRj/hyNqvyGDh0/DwaJKJkQBbBBv6VKkP28HK/img.jpg?width=1440&amp;amp;height=1080&amp;amp;face=0_0_1440_1080');&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;[AWS + spring boot] 서버 배포하기 _ 1&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;서버는 왜 배포해야할까 서버를 24시간 작동하게 하는 방법은 3가지 내 pc를 24시간 구동시킨다. 호스팅 서비스를 이용한다. 클라우드 서비스를 이용한다. 그 중 유동적으로 트래픽 관리가 가능한&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;jihyee.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;figure id=&quot;og_1645085215846&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;[AWS + spring boot] 서버 배포하기 _ 2 rds mysql 데이터 베이스 생성 spring boot 연동 spring boot 프로젝트 배&quot; data-og-description=&quot;얼른 써야지 했는데 생각보다 2번째 포스팅이 오래 걸렸다 ㅠ [AWS + spring boot] 서버 배포하기 _ 1 [AWS + spring boot] 서버 배포하기 _ 1 서버는 왜 배포해야할까 서버를 24시간 작동하게 하는 방법은 3가&quot; data-og-host=&quot;jihyee.tistory.com&quot; data-og-source-url=&quot;https://jihyee.tistory.com/21?category=1061703&quot; data-og-url=&quot;https://jihyee.tistory.com/21&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/k30lk/hyNrArCqXV/4q9Yyhatosb7QCRY0vWXFk/img.png?width=800&amp;amp;height=321&amp;amp;face=0_0_800_321,https://scrap.kakaocdn.net/dn/mWuuD/hyNrytOfVV/VzEpEuRa8Bgqxb0I9uWPgk/img.png?width=800&amp;amp;height=321&amp;amp;face=0_0_800_321,https://scrap.kakaocdn.net/dn/btNQ3U/hyNqxQPhyZ/2mDPy0wrgm9UtZi60LY1Q0/img.png?width=1576&amp;amp;height=540&amp;amp;face=0_0_1576_540&quot;&gt;&lt;a href=&quot;https://jihyee.tistory.com/21?category=1061703&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://jihyee.tistory.com/21?category=1061703&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/k30lk/hyNrArCqXV/4q9Yyhatosb7QCRY0vWXFk/img.png?width=800&amp;amp;height=321&amp;amp;face=0_0_800_321,https://scrap.kakaocdn.net/dn/mWuuD/hyNrytOfVV/VzEpEuRa8Bgqxb0I9uWPgk/img.png?width=800&amp;amp;height=321&amp;amp;face=0_0_800_321,https://scrap.kakaocdn.net/dn/btNQ3U/hyNqxQPhyZ/2mDPy0wrgm9UtZi60LY1Q0/img.png?width=1576&amp;amp;height=540&amp;amp;face=0_0_1576_540');&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;[AWS + spring boot] 서버 배포하기 _ 2 rds mysql 데이터 베이스 생성 spring boot 연동 spring boot 프로젝트 배&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;얼른 써야지 했는데 생각보다 2번째 포스팅이 오래 걸렸다 ㅠ [AWS + spring boot] 서버 배포하기 _ 1 [AWS + spring boot] 서버 배포하기 _ 1 서버는 왜 배포해야할까 서버를 24시간 작동하게 하는 방법은 3가&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;jihyee.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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;※ paas-ta 로 배포하기 &amp;darr;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1645085262133&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;[PaaS-TA] PaaS-TA 서비스를 통해 node.js 기반 프로젝트 배포하기&quot; data-og-description=&quot;PaaS-TA 파스-타 도입 전 미리 파스-타를 체험하실 수 있도록 체험 서비스를 제공하고 있습니다. paas-ta.kr 배포하면 떠오르는 플랫폼이 aws, naver cloud platform, gcp 정도인 것 같은데 이번에 동아리 프로&quot; data-og-host=&quot;jihyee.tistory.com&quot; data-og-source-url=&quot;https://jihyee.tistory.com/16?category=1061703&quot; data-og-url=&quot;https://jihyee.tistory.com/16&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bQX63k/hyNrFTZUr2/xefkpM9UExYczE5zSs15jk/img.png?width=800&amp;amp;height=440&amp;amp;face=0_0_800_440,https://scrap.kakaocdn.net/dn/cEHNdP/hyNqBeB5QN/tSlxaFeOEn54zQO5v7DH2k/img.png?width=800&amp;amp;height=440&amp;amp;face=0_0_800_440,https://scrap.kakaocdn.net/dn/JWqU3/hyNqvrU0n3/KDJHbJV3xOIekaAeRTCLz1/img.jpg?width=1440&amp;amp;height=1080&amp;amp;face=0_0_1440_1080&quot;&gt;&lt;a href=&quot;https://jihyee.tistory.com/16?category=1061703&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://jihyee.tistory.com/16?category=1061703&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bQX63k/hyNrFTZUr2/xefkpM9UExYczE5zSs15jk/img.png?width=800&amp;amp;height=440&amp;amp;face=0_0_800_440,https://scrap.kakaocdn.net/dn/cEHNdP/hyNqBeB5QN/tSlxaFeOEn54zQO5v7DH2k/img.png?width=800&amp;amp;height=440&amp;amp;face=0_0_800_440,https://scrap.kakaocdn.net/dn/JWqU3/hyNqvrU0n3/KDJHbJV3xOIekaAeRTCLz1/img.jpg?width=1440&amp;amp;height=1080&amp;amp;face=0_0_1440_1080');&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;[PaaS-TA] PaaS-TA 서비스를 통해 node.js 기반 프로젝트 배포하기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;PaaS-TA 파스-타 도입 전 미리 파스-타를 체험하실 수 있도록 체험 서비스를 제공하고 있습니다. paas-ta.kr 배포하면 떠오르는 플랫폼이 aws, naver cloud platform, gcp 정도인 것 같은데 이번에 동아리 프로&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;jihyee.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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;aws, paas-ta 에 이은 웹 사이트 배포 3번째!!&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;이제 gcp 만 남았다..&lt;/s&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;네이버 클라우드 플랫폼으로 웹 사이트 배포하는 방법을 설명하려 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;셋 중에 gui 가 제일 깔끔하고 아무래도 네이버에서 제공하는 서비스라 좀 친숙하게 쉽게 할 수 있었던 것 같다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;٩(&amp;nbsp;&amp;deg;ꇴ&amp;nbsp;&amp;deg;)۶&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;네이버 클라우드 플랫폼&lt;/blockquote&gt;
&lt;figure id=&quot;og_1645085421361&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;NAVER CLOUD PLATFORM&quot; data-og-description=&quot;cloud computing services for corporations, IaaS, PaaS, SaaS, with Global region and Security Technology Certification&quot; data-og-host=&quot;www.ncloud.com&quot; data-og-source-url=&quot;https://www.ncloud.com/&quot; data-og-url=&quot;https://www.ncloud.com&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/beh9Zy/hyNqF2obCy/UOkKIOdYrvbAR6yK3rZFDk/img.jpg?width=526&amp;amp;height=274&amp;amp;face=0_0_526_274&quot;&gt;&lt;a href=&quot;https://www.ncloud.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.ncloud.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/beh9Zy/hyNqF2obCy/UOkKIOdYrvbAR6yK3rZFDk/img.jpg?width=526&amp;amp;height=274&amp;amp;face=0_0_526_274');&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;NAVER CLOUD PLATFORM&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;cloud computing services for corporations, IaaS, PaaS, SaaS, with Global region and Security Technology Certification&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.ncloud.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&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;2784&quot; data-origin-height=&quot;962&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdqm3X/btrtBUYaCLj/okUjVSHA90od0lxiVpjX1K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdqm3X/btrtBUYaCLj/okUjVSHA90od0lxiVpjX1K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdqm3X/btrtBUYaCLj/okUjVSHA90od0lxiVpjX1K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbdqm3X%2FbtrtBUYaCLj%2FokUjVSHA90od0lxiVpjX1K%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;2784&quot; height=&quot;962&quot; data-origin-width=&quot;2784&quot; data-origin-height=&quot;962&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;오른쪽 상단에 로그인 회원가입 버튼을 통해 로그인 회원가입이 가능하다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #409d00;&quot;&gt;aws 와 마찬 가지로 본인 메일 인증과 카드 정보 등록 필수!&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;서버 생성&lt;/blockquote&gt;
&lt;p style=&quot;text-align: center;&quot; 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: #409d00;&quot;&gt;콘솔&lt;/span&gt;&amp;nbsp;&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;1182&quot; data-origin-height=&quot;890&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0C9oG/btrtCVJbhzl/hJUFC8cmKitl0WzjSZz4G0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0C9oG/btrtCVJbhzl/hJUFC8cmKitl0WzjSZz4G0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0C9oG/btrtCVJbhzl/hJUFC8cmKitl0WzjSZz4G0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0C9oG%2FbtrtCVJbhzl%2FhJUFC8cmKitl0WzjSZz4G0%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;551&quot; height=&quot;415&quot; data-origin-width=&quot;1182&quot; data-origin-height=&quot;890&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왼쪽 메뉴바에서 products &amp;amp; services 클릭 &amp;rarr; server 클릭&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2250&quot; data-origin-height=&quot;416&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cOEZFC/btrtxlCzNp7/xRo9tg12tk6n4AHzrtORE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cOEZFC/btrtxlCzNp7/xRo9tg12tk6n4AHzrtORE0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cOEZFC/btrtxlCzNp7/xRo9tg12tk6n4AHzrtORE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcOEZFC%2FbtrtxlCzNp7%2FxRo9tg12tk6n4AHzrtORE0%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;416&quot; data-origin-width=&quot;2250&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;/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;2226&quot; data-origin-height=&quot;906&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zO5aP/btrtCT5FrJp/nM4UqmU7fZ1FDMcNBBWA10/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zO5aP/btrtCT5FrJp/nM4UqmU7fZ1FDMcNBBWA10/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zO5aP/btrtCT5FrJp/nM4UqmU7fZ1FDMcNBBWA10/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzO5aP%2FbtrtCT5FrJp%2FnM4UqmU7fZ1FDMcNBBWA10%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;2226&quot; height=&quot;906&quot; data-origin-width=&quot;2226&quot; data-origin-height=&quot;906&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;부팅 디스크, 이미지 타입, OS 이미지 타입, 서버 타입을 선택하고 다음 클릭!&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;※ 네이버 클라우드 플랫폼은 마이크로(micro) 서버에 한 해 1년 무료 사용 기간을 제공한다. 과금을 피하려면 꼭 micro&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;나머지는 종량, 월정액 금액이 청구되니 꼭 서버 생성 이전에 금액에 대해 알아봐야 한다! 참고로 본인은 compact 서버 하나를 현재 구동 중인데 한 달에 약 5-7 만원 정도 금액이 청구되는 것 같다.&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;한 가지 또 언급하고 싶은 것은 스프링부트와 리액트를 빌드하는데 micro 서버가 너-무 느렸다.. standard, compact 다 구동해봤는데 micro는 개발 과정을 너무 힘들게 했고 결국 프로젝트 지원금을 거의 서버에 다 쓴 것 같다.,. &amp;bull;&amp;nbsp;ᴗ&amp;nbsp;&amp;bull;̥&amp;nbsp;˳&amp;nbsp;˳&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버 설정은 서버 이름만 명시하고 next 클릭!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-02-17 오후 5.27.24.png&quot; data-origin-width=&quot;1476&quot; data-origin-height=&quot;1298&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zgXmL/btrtADP2NWu/eqpBDlNP39ZjexhtKIW9PK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zgXmL/btrtADP2NWu/eqpBDlNP39ZjexhtKIW9PK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zgXmL/btrtADP2NWu/eqpBDlNP39ZjexhtKIW9PK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzgXmL%2FbtrtADP2NWu%2FeqpBDlNP39ZjexhtKIW9PK%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;1476&quot; height=&quot;1298&quot; data-filename=&quot;스크린샷 2022-02-17 오후 5.27.24.png&quot; data-origin-width=&quot;1476&quot; data-origin-height=&quot;1298&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;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;스크린샷 2022-02-17 오후 5.26.36.png&quot; data-origin-width=&quot;1956&quot; data-origin-height=&quot;872&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c6IpiP/btrtwJKwN2k/JnVn4g7hXhY2ZNYPQ2hsV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c6IpiP/btrtwJKwN2k/JnVn4g7hXhY2ZNYPQ2hsV0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c6IpiP/btrtwJKwN2k/JnVn4g7hXhY2ZNYPQ2hsV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc6IpiP%2FbtrtwJKwN2k%2FJnVn4g7hXhY2ZNYPQ2hsV0%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;1956&quot; height=&quot;872&quot; data-filename=&quot;스크린샷 2022-02-17 오후 5.26.36.png&quot; data-origin-width=&quot;1956&quot; data-origin-height=&quot;872&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;
&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: #f6e199;&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;/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;스크린샷 2022-02-17 오후 5.31.40.png&quot; data-origin-width=&quot;2210&quot; data-origin-height=&quot;812&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bS28HM/btrtwj53fXQ/kwXxPosKgCtnKFCgS8dP1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bS28HM/btrtwj53fXQ/kwXxPosKgCtnKFCgS8dP1k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bS28HM/btrtwj53fXQ/kwXxPosKgCtnKFCgS8dP1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbS28HM%2Fbtrtwj53fXQ%2FkwXxPosKgCtnKFCgS8dP1k%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;2210&quot; height=&quot;812&quot; data-filename=&quot;스크린샷 2022-02-17 오후 5.31.40.png&quot; data-origin-width=&quot;2210&quot; data-origin-height=&quot;812&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 ACG 생성이 나오는데 자세히 보면 위에 &lt;b&gt;네트워크 접속 설정&lt;/b&gt;이라고 네이밍 되어 있는 것을 확인할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네트워크에 대한 개념을 어느 정도 이해하고 있어야 하는 부분인데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각각의 웹 서버는 고유의 &lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;ip 주소&lt;/b&gt;&lt;/span&gt;를 가지고 있으며 해당 웹 서버의 어플리케이션은 &lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;포트 넘버&lt;/b&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;▶ ACG 는 생성한 웹 서버에 접근 가능한 ip 주소와 포트 넘버를 한정해준다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ACG 에서 234.123.234.123:8080 을 추가하면 해당 ip 주소와 포트넘버로 접속을 시도하면 허용해줘라 하는 뜻이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버도 구동 중이고 프로젝트 빌드도 다 했고 netstat 으로 잘 돌아가는 것도 확인했는데 이상하게 화면이 안나오는 경우가 있는데 그 때 대부분의 문제는 다 여기 있다고 보면 된다...&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 alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-02-17 오후 5.42.41.png&quot; data-origin-width=&quot;1970&quot; data-origin-height=&quot;1496&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJHF9b/btrtwqLdcjk/Q5bNwr71eEv9LQkKOtF9F0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJHF9b/btrtwqLdcjk/Q5bNwr71eEv9LQkKOtF9F0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJHF9b/btrtwqLdcjk/Q5bNwr71eEv9LQkKOtF9F0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJHF9b%2FbtrtwqLdcjk%2FQ5bNwr71eEv9LQkKOtF9F0%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;1970&quot; height=&quot;1496&quot; data-filename=&quot;스크린샷 2022-02-17 오후 5.42.41.png&quot; data-origin-width=&quot;1970&quot; data-origin-height=&quot;1496&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;p data-ke-size=&quot;size16&quot;&gt;ACG 이름을 정하고 설정에서 IP 를 추가해준다.&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;특정 주소로 한정할 수도 있는데 그냥 0.0.0.0/0 으로 작성해서 모든 IP 접속을 허용해줘도 된다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고로 포트를 따로 명시하지 않고 도메인 주소만 쓰면 22번 포트이니 허용하고 싶으면 22포트 열어줘야 한다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-02-17 오후 5.44.50.png&quot; data-origin-width=&quot;2214&quot; data-origin-height=&quot;1698&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byfhak/btrtwkX9whm/0HDBdW4wLES52oaXNr00YK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byfhak/btrtwkX9whm/0HDBdW4wLES52oaXNr00YK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byfhak/btrtwkX9whm/0HDBdW4wLES52oaXNr00YK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbyfhak%2FbtrtwkX9whm%2F0HDBdW4wLES52oaXNr00YK%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;2214&quot; height=&quot;1698&quot; data-filename=&quot;스크린샷 2022-02-17 오후 5.44.50.png&quot; data-origin-width=&quot;2214&quot; data-origin-height=&quot;1698&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성을 클릭하면 생성 중 표시와 함께 n분이 지나면 생성이 완료될 것이다!&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;blockquote data-ke-style=&quot;style2&quot;&gt;관리자 비밀번호 확인&lt;/blockquote&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;674&quot; data-origin-height=&quot;768&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pUkXQ/btrtCUQ6ln2/Tq3kfkH19lLeECRKjaYKv1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pUkXQ/btrtCUQ6ln2/Tq3kfkH19lLeECRKjaYKv1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pUkXQ/btrtCUQ6ln2/Tq3kfkH19lLeECRKjaYKv1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpUkXQ%2FbtrtCUQ6ln2%2FTq3kfkH19lLeECRKjaYKv1%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;768&quot; data-origin-width=&quot;674&quot; data-origin-height=&quot;768&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;
&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;스크린샷 2022-02-17 오후 5.48.33.png&quot; data-origin-width=&quot;1042&quot; data-origin-height=&quot;402&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pPlcR/btrtza1IZ63/Tqoy9GpMpLj4xC1HKTGajK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pPlcR/btrtza1IZ63/Tqoy9GpMpLj4xC1HKTGajK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pPlcR/btrtza1IZ63/Tqoy9GpMpLj4xC1HKTGajK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpPlcR%2Fbtrtza1IZ63%2FTqoy9GpMpLj4xC1HKTGajK%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;402&quot; data-filename=&quot;스크린샷 2022-02-17 오후 5.48.33.png&quot; data-origin-width=&quot;1042&quot; data-origin-height=&quot;402&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: #409d00;&quot;&gt;&lt;b&gt;관리자 비밀번호&lt;/b&gt;&lt;/span&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;해당 관리자 비밀번호로 &lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;ssh 접속해&lt;/b&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이제 거의 끝.. 인데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;너무 길어서 ip 연결이랑 서버 접속은 다음에..&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;ヾ(๑╹◡╹)ﾉ&quot;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;</description>
      <category>공부/Server</category>
      <category>aws</category>
      <category>Cloud</category>
      <category>IaaS</category>
      <category>naver-cloud-platform</category>
      <category>NCP</category>
      <category>PaaS</category>
      <category>REACT</category>
      <category>SpringBoot</category>
      <category>배포</category>
      <category>웹사이트배포</category>
      <author>jihyee</author>
      <guid isPermaLink="true">https://jihyee.tistory.com/26</guid>
      <comments>https://jihyee.tistory.com/26#entry26comment</comments>
      <pubDate>Thu, 17 Feb 2022 18:02:25 +0900</pubDate>
    </item>
    <item>
      <title>[PS_기댓값과 선형성] 13255 동전 뒤집기 파이썬</title>
      <link>https://jihyee.tistory.com/25</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1191&quot; data-origin-height=&quot;236&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oFxzq/btrric7xt4G/KaxCnBaM7PQgo1QNhEw8yK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oFxzq/btrric7xt4G/KaxCnBaM7PQgo1QNhEw8yK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oFxzq/btrric7xt4G/KaxCnBaM7PQgo1QNhEw8yK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoFxzq%2Fbtrric7xt4G%2FKaxCnBaM7PQgo1QNhEw8yK%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;1191&quot; height=&quot;236&quot; data-origin-width=&quot;1191&quot; data-origin-height=&quot;236&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;문제&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;N개의 동전이 탁자 위에 놓여져 있다. 동전은 모두 앞면이 위를 향하고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;K개의 정수 A[i]가 주어진다. 가장 처음에 A[1]개의 동전을 랜덤하게 골라서 뒤집는다. 그 다음에는 A[2]개의 동전을 랜덤하게 골라서 뒤집는다. 이 과정을 계속해서 반복하고, 마지막에는 A[K]개의 동전을 랜덤하게 골라서 뒤집는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 과정을 완료했을 때, 앞면이 위를 향하는 동전 개수의 기댓값을 구하는 프로그램을 작성하시오.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;입력&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 동전의 개수 N (1 &amp;le; N &amp;le; 1,000)이 주어진다. 둘째 줄에는 K (1 &amp;le; K &amp;le; 50)이 주어진다. 셋째 줄에는 A[i] (1 &amp;le; A[i] &amp;le; N)가 주어진다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;출력&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 과정을 완료한 후에 앞면이 위를 향하는 동전 개수의 기댓값을 출력한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정답과의 절대/상대 오차는 10-9까지 허용한다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;풀이&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;코드&lt;/blockquote&gt;
&lt;pre id=&quot;code_1642655911281&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;n = int(input())
k = int(input())

pr = n
for i in map(int, input().split()):
    tmp = 0
    tmp = tmp + pr * (1 - float(i / n))
    tmp = tmp + (n - pr) * float(i / n)
    pr = tmp
print(pr)&lt;/code&gt;&lt;/pre&gt;</description>
      <category>공부/Algorithm</category>
      <category>기댓값</category>
      <category>백준</category>
      <category>선형성</category>
      <author>jihyee</author>
      <guid isPermaLink="true">https://jihyee.tistory.com/25</guid>
      <comments>https://jihyee.tistory.com/25#entry25comment</comments>
      <pubDate>Thu, 20 Jan 2022 14:18:55 +0900</pubDate>
    </item>
    <item>
      <title>[PS_DP] 13250 주사위 게임 파이썬</title>
      <link>https://jihyee.tistory.com/24</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1244&quot; data-origin-height=&quot;234&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b6mh5L/btrrcig03u8/g0ofo6r8LlMgwfPkpi2eqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b6mh5L/btrrcig03u8/g0ofo6r8LlMgwfPkpi2eqk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b6mh5L/btrrcig03u8/g0ofo6r8LlMgwfPkpi2eqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb6mh5L%2Fbtrrcig03u8%2Fg0ofo6r8LlMgwfPkpi2eqk%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;1244&quot; height=&quot;234&quot; data-origin-width=&quot;1244&quot; data-origin-height=&quot;234&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;문제&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;효빈이는 1부터 6까지 수가 적혀있는 6면 주사위를 가지고 있다. 매번 주사위를 던질 때마다 주사위의 윗 면에 적힌 수 만큼 사탕을 받게 된다. 효빈이가 적어도 N개의 사탕을 받기 위해 주사위를 던져야 하는 횟수의 기댓값을 구하는 프로그램을 작성하시오.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;입력&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 N이 주어진다. (1 &amp;le; N &amp;le;&amp;nbsp;1,000,000)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;출력&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 사탕을 적어도 N개 받기 위해 주사위를 던져야 하는 횟수의 기댓값을 출력한다. 정답과의 절대/상대 오차는 10-9까지 허용한다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;풀이 방법&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;코드&lt;/blockquote&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1642649465377&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;N = int(input())
dp = [0]*1010101

for i in range(N-1, -1, -1):
    ret = 0
    for j in range(1, 7): ret += 1/6 * (1 + dp[i+j])
    dp[i] = ret

print(dp[0])&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>공부/Algorithm</category>
      <category>13250</category>
      <category>BOJ</category>
      <category>dp</category>
      <category>Dynamic Programming</category>
      <category>백준</category>
      <category>주사위 게임</category>
      <author>jihyee</author>
      <guid isPermaLink="true">https://jihyee.tistory.com/24</guid>
      <comments>https://jihyee.tistory.com/24#entry24comment</comments>
      <pubDate>Thu, 20 Jan 2022 12:31:52 +0900</pubDate>
    </item>
    <item>
      <title>[Spring Boot] queryDsl 「 cannot find symbol 」에러</title>
      <link>https://jihyee.tistory.com/23</link>
      <description>&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;※&amp;nbsp; Trouble Shooting 은 문제와 해결 방식 위주로 작성&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&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-filename=&quot;blob&quot; data-origin-width=&quot;1202&quot; data-origin-height=&quot;174&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLpgLG/btrq4x54Vkd/2BFQgVRTLDPvsQDPeK89oK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLpgLG/btrq4x54Vkd/2BFQgVRTLDPvsQDPeK89oK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLpgLG/btrq4x54Vkd/2BFQgVRTLDPvsQDPeK89oK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLpgLG%2Fbtrq4x54Vkd%2F2BFQgVRTLDPvsQDPeK89oK%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;1202&quot; height=&quot;174&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1202&quot; data-origin-height=&quot;174&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;cannot find symbol 이라고 complieQuerydsl 해도 해결 안 된다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;▶ Q 파일이 생성되지 않은 것이 아니고 생성되었는데 위치를 인식할 수 없어서 발생하는 오류기 때문&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;978&quot; data-origin-height=&quot;709&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zWrrN/btrq6O0l3if/ImVaPzRGOzmCeKvD8iZwKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zWrrN/btrq6O0l3if/ImVaPzRGOzmCeKvD8iZwKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zWrrN/btrq6O0l3if/ImVaPzRGOzmCeKvD8iZwKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzWrrN%2Fbtrq6O0l3if%2FImVaPzRGOzmCeKvD8iZwKK%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;978&quot; height=&quot;709&quot; data-origin-width=&quot;978&quot; data-origin-height=&quot;709&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Setting ▷ Annotation Processors ▷ Store generated sources relative to를 모두 Module output directory로 변경해준다.&amp;nbsp;&lt;/p&gt;</description>
      <category>공부/Trouble Shooting</category>
      <category>cannot find symbol</category>
      <category>QueryDSL</category>
      <author>jihyee</author>
      <guid isPermaLink="true">https://jihyee.tistory.com/23</guid>
      <comments>https://jihyee.tistory.com/23#entry23comment</comments>
      <pubDate>Tue, 18 Jan 2022 16:28:01 +0900</pubDate>
    </item>
    <item>
      <title>[AWS + spring boot] 서버 배포하기 _ 2 rds mysql 데이터 베이스 생성 spring boot 연동 spring boot 프로젝트 배포</title>
      <link>https://jihyee.tistory.com/21</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;얼른 써야지 했는데 생각보다 2번째 포스팅이 오래 걸렸다 ㅠ&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://jihyee.tistory.com/4?category=1061703&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[AWS + spring boot] 서버 배포하기 _ 1&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1642274149591&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;[AWS + spring boot] 서버 배포하기 _ 1&quot; data-og-description=&quot;서버는 왜 배포해야할까 서버를 24시간 작동하게 하는 방법은 3가지 내 pc를 24시간 구동시킨다. 호스팅 서비스를 이용한다. 클라우드 서비스를 이용한다. 그 중 유동적으로 트래픽 관리가 가능한&quot; data-og-host=&quot;jihyee.tistory.com&quot; data-og-source-url=&quot;https://jihyee.tistory.com/4?category=1061703&quot; data-og-url=&quot;https://jihyee.tistory.com/4&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bGWjrY/hyM6MTxeW0/XY01xKVPp4k6gsr7tfXvSK/img.png?width=259&amp;amp;height=194&amp;amp;face=0_0_259_194,https://scrap.kakaocdn.net/dn/cgwUl2/hyM6EgTz14/rwRVjJkLxsauYY7SQiyPG0/img.png?width=259&amp;amp;height=194&amp;amp;face=0_0_259_194,https://scrap.kakaocdn.net/dn/jCJGm/hyM5JKRQFG/io9d4Bd2LVdWD6wj3jKL4K/img.jpg?width=1440&amp;amp;height=1080&amp;amp;face=0_0_1440_1080&quot;&gt;&lt;a href=&quot;https://jihyee.tistory.com/4?category=1061703&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://jihyee.tistory.com/4?category=1061703&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bGWjrY/hyM6MTxeW0/XY01xKVPp4k6gsr7tfXvSK/img.png?width=259&amp;amp;height=194&amp;amp;face=0_0_259_194,https://scrap.kakaocdn.net/dn/cgwUl2/hyM6EgTz14/rwRVjJkLxsauYY7SQiyPG0/img.png?width=259&amp;amp;height=194&amp;amp;face=0_0_259_194,https://scrap.kakaocdn.net/dn/jCJGm/hyM5JKRQFG/io9d4Bd2LVdWD6wj3jKL4K/img.jpg?width=1440&amp;amp;height=1080&amp;amp;face=0_0_1440_1080');&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;[AWS + spring boot] 서버 배포하기 _ 1&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;서버는 왜 배포해야할까 서버를 24시간 작동하게 하는 방법은 3가지 내 pc를 24시간 구동시킨다. 호스팅 서비스를 이용한다. 클라우드 서비스를 이용한다. 그 중 유동적으로 트래픽 관리가 가능한&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;jihyee.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;uarr;&amp;uarr;&amp;uarr; 전 포스팅!! &amp;uarr;&amp;uarr;&amp;uarr;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;에서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;aws 계정 생성&lt;/b&gt;하고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ec2 서버 생성&lt;/b&gt;하고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;putty로 &lt;b&gt;접속&lt;/b&gt;하고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;Java 프로젝트 구동을 위한 &lt;b&gt;기초 세팅(git, java)&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;들을 했다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;웹 프로젝트 배포 과정을 크게 구분하면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;서버 생성 - 데이터 베이스 구축 및 연동 - 프로젝트 빌드 및 실행&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이게 다인데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;서버 생성했으니 이제 데이터 베이스 구축 및 연동을 해주고 프로젝트를 빌드 구동해주면 된다!&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;데이터 베이스 구축 및 spring boot 연동&lt;/blockquote&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;스크린샷 2022-01-16 오전 2.05.34.png&quot; data-origin-width=&quot;2080&quot; data-origin-height=&quot;836&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRTsjk/btrqMaKUgCu/nK9j9YaTakiOoAS2Gk1Uh1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRTsjk/btrqMaKUgCu/nK9j9YaTakiOoAS2Gk1Uh1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRTsjk/btrqMaKUgCu/nK9j9YaTakiOoAS2Gk1Uh1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRTsjk%2FbtrqMaKUgCu%2FnK9j9YaTakiOoAS2Gk1Uh1%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;2080&quot; height=&quot;836&quot; data-filename=&quot;스크린샷 2022-01-16 오전 2.05.34.png&quot; data-origin-width=&quot;2080&quot; data-origin-height=&quot;836&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;aws에서 관계형 데이터 베이스 관리를 하기 위해 제공하는 서비스가 rds이다.&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;스크린샷 2022-01-16 오전 2.06.51.png&quot; data-origin-width=&quot;1308&quot; data-origin-height=&quot;428&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdyy8D/btrqRTHpdC4/lHvsPSiNpCPx0zga63Y4L0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdyy8D/btrqRTHpdC4/lHvsPSiNpCPx0zga63Y4L0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdyy8D/btrqRTHpdC4/lHvsPSiNpCPx0zga63Y4L0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbdyy8D%2FbtrqRTHpdC4%2FlHvsPSiNpCPx0zga63Y4L0%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;1308&quot; height=&quot;428&quot; data-filename=&quot;스크린샷 2022-01-16 오전 2.06.51.png&quot; data-origin-width=&quot;1308&quot; data-origin-height=&quot;428&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;
&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;스크린샷 2022-01-16 오전 2.07.17.png&quot; data-origin-width=&quot;1686&quot; data-origin-height=&quot;812&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEiT4n/btrqTZ1FZgp/5m61vQfx6VMZMS2kjADof0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEiT4n/btrqTZ1FZgp/5m61vQfx6VMZMS2kjADof0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEiT4n/btrqTZ1FZgp/5m61vQfx6VMZMS2kjADof0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEiT4n%2FbtrqTZ1FZgp%2F5m61vQfx6VMZMS2kjADof0%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;1686&quot; height=&quot;812&quot; data-filename=&quot;스크린샷 2022-01-16 오전 2.07.17.png&quot; data-origin-width=&quot;1686&quot; data-origin-height=&quot;812&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;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;스크린샷 2022-01-16 오후 1.41.35.png&quot; data-origin-width=&quot;1576&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lXpoe/btrqMaYCOWg/CfQD6laZlHPuQlGhA1x611/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lXpoe/btrqMaYCOWg/CfQD6laZlHPuQlGhA1x611/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lXpoe/btrqMaYCOWg/CfQD6laZlHPuQlGhA1x611/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlXpoe%2FbtrqMaYCOWg%2FCfQD6laZlHPuQlGhA1x611%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;1576&quot; height=&quot;540&quot; data-filename=&quot;스크린샷 2022-01-16 오후 1.41.35.png&quot; data-origin-width=&quot;1576&quot; data-origin-height=&quot;540&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;u&gt;프리 티어&lt;/u&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;스크린샷 2022-01-16 오후 1.42.29.png&quot; data-origin-width=&quot;1578&quot; data-origin-height=&quot;346&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/u4D5s/btrqOfEsyHI/OfBEpOv9gzNrECaHNLSYMK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/u4D5s/btrqOfEsyHI/OfBEpOv9gzNrECaHNLSYMK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/u4D5s/btrqOfEsyHI/OfBEpOv9gzNrECaHNLSYMK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fu4D5s%2FbtrqOfEsyHI%2FOfBEpOv9gzNrECaHNLSYMK%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;1578&quot; height=&quot;346&quot; data-filename=&quot;스크린샷 2022-01-16 오후 1.42.29.png&quot; data-origin-width=&quot;1578&quot; data-origin-height=&quot;346&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;그대로 생성 !!&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;span style=&quot;background-color: #99cefa;&quot;&gt;보안 그룹&lt;/span&gt;와 &lt;span style=&quot;background-color: #99cefa;&quot;&gt;파라미터 그룹&lt;/span&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;&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;보안 그룹은 해당 origin 접속 가능한 서버들을 명시하는 것이고&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 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;&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;보안 그룹 수정 &amp;rarr; 모든 IP 에서 3306 포트로의 접속 허가&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/cakohM/btrqNMib2DR/0KQbl2y9M7rDeH5CzLP7V0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cakohM/btrqNMib2DR/0KQbl2y9M7rDeH5CzLP7V0/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;708&quot; data-origin-height=&quot;338&quot; data-filename=&quot;스크린샷 2022-01-16 오후 1.43.44.png&quot; style=&quot;width: 34.5034%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cakohM/btrqNMib2DR/0KQbl2y9M7rDeH5CzLP7V0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcakohM%2FbtrqNMib2DR%2F0KQbl2y9M7rDeH5CzLP7V0%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;708&quot; height=&quot;338&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kTO3a/btrqLC16bag/J1HwZOd3IBxuU2jxLhOpM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kTO3a/btrqLC16bag/J1HwZOd3IBxuU2jxLhOpM0/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;212&quot; data-filename=&quot;스크린샷 2022-01-16 오후 1.47.10.png&quot; style=&quot;width: 64.3338%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kTO3a/btrqLC16bag/J1HwZOd3IBxuU2jxLhOpM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkTO3a%2FbtrqLC16bag%2FJ1HwZOd3IBxuU2jxLhOpM0%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;828&quot; height=&quot;212&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;해당 버튼을 클릭하여 데이터 데이스 서버에 접속이 가능한 ip 주소들을 편집할 수 있다.&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;2000&quot; data-origin-height=&quot;386&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cQjvpq/btrqMcvm5qI/JeeY0eRkK0s8yrf2yhICbK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cQjvpq/btrqMcvm5qI/JeeY0eRkK0s8yrf2yhICbK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cQjvpq/btrqMcvm5qI/JeeY0eRkK0s8yrf2yhICbK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcQjvpq%2FbtrqMcvm5qI%2FJeeY0eRkK0s8yrf2yhICbK%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;2000&quot; height=&quot;386&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;386&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3306 포트에 모든 ip4 접속을 허가하는 규칙을 추가해주면 어느 ip 주소에서도 암호만 입력하면 해당 데이터 베이스에 연결할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보안을 위해 접속을 막고 싶다면 내 ip 를 선택하거나 직접 ip 주소를 명시해 특정 주소에서만 연결이 가능하게 변경할 수도 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파라미터 그룹 수정 &amp;rarr; 타입 인코딩 정보 변경&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;charset (아래 이미지 6개) &amp;rarr; utf8mb4&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;collection_server &amp;rarr; &lt;span style=&quot;background-color: #ffffff; color: #16191f;&quot;&gt;utf8mb4_general_ci&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;collection_database &amp;rarr; &lt;span style=&quot;background-color: #ffffff; color: #16191f;&quot;&gt;utf8mb4_general_ci&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;background-color: #ffffff; color: #16191f;&quot;&gt;이는 데이터 베이스의 &lt;b&gt;한글 사용(utf8)&lt;/b&gt;과 &lt;b&gt;이모티콘 사용(mb4)&lt;/b&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-01-16 오후 1.51.18.png&quot; data-origin-width=&quot;674&quot; data-origin-height=&quot;1792&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dx169u/btrqLZo77hC/537gdcywaqKNz8s5INOlEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dx169u/btrqLZo77hC/537gdcywaqKNz8s5INOlEK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dx169u/btrqLZo77hC/537gdcywaqKNz8s5INOlEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdx169u%2FbtrqLZo77hC%2F537gdcywaqKNz8s5INOlEK%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;323&quot; height=&quot;859&quot; data-filename=&quot;스크린샷 2022-01-16 오후 1.51.18.png&quot; data-origin-width=&quot;674&quot; data-origin-height=&quot;1792&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성을 완료되면 데이터 베이스 생성 주소로 mysql-workbench에서 connection 생성해주면 된다.&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 data-ke-size=&quot;size16&quot;&gt;hostname : database 연결 주소&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;username : rds 는 default 가 admin 인 것 같다. root 로 되어 있는 경우 연결이 안되니 주의하자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;port : 3306 db 는 포트 주소가 default 가 3306 이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;password : rds database 생성 시 입력했던 비밀번호&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-filename=&quot;스크린샷 2022-01-16 오전 2.09.14.png&quot; data-origin-width=&quot;2488&quot; data-origin-height=&quot;1356&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xNWUj/btrqNLi27Xy/xjrfRkV8trL750nH2fIyuk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xNWUj/btrqNLi27Xy/xjrfRkV8trL750nH2fIyuk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xNWUj/btrqNLi27Xy/xjrfRkV8trL750nH2fIyuk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxNWUj%2FbtrqNLi27Xy%2FxjrfRkV8trL750nH2fIyuk%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;2488&quot; height=&quot;1356&quot; data-filename=&quot;스크린샷 2022-01-16 오전 2.09.14.png&quot; data-origin-width=&quot;2488&quot; data-origin-height=&quot;1356&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ok 누르고 connection 완성되면 들어가서 스키마 만들고 테이블 만들고 수정하고 관리하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버 자체에서 mysql 접속해서 터미널로 관리할 수도 있는데 workbench 가 있으니까 gui 서비스를 굳이 안 쓸 필요는 없을 것 같다. workbench 없으면 안 된다.. 너무 편해//..,, ヽ(^。^) ノ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터 베이스를 구축했으니 이제 작성하고 있는 프로젝트와 연동시켜줘야 한다. node를 쓰던 django를 쓰던 spring boot를 쓰던 데이터 베이스 연동 부분은 맥락이 비슷하니 방식도 비슷할 거라고 생각한다.&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;spring boot에 mysql 데이터 베이스 연동하는 방법은&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;application.properties 파일에 데이터 베이스를 명시하는 것이다. 해당 파일은 db 말고도 외부 api key 나 token과 같이 프로젝트 전반적으로 관리해야 하는 값들을 저장하고 있다고 생각하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1642267162765&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;spring.profiles.active=local
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://{rds주소}/{스키마명}?serverTimezone=UTC&amp;amp;characterEncoding=UTF-8
spring.datasource.username={username}
spring.datasource.password={password}
spring.datasource.hikari.pool-name=jpa-hikari-pool
spring.datasource.hikari.maximum-pool-size=5
spring.datasource.hikari.jdbc-url=${spring.datasource.url}
spring.datasource.hikari.username=${spring.datasource.username}
spring.datasource.hikari.password=${spring.datasource.password}
spring.datasource.hikari.driver-class-name=${spring.datasource.driver-class-name}
spring.datasource.hikari.data-source-properties.rewriteBatchedStatements=true
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
spring.jpa.properties.hibernate.hbm2ddl.import_files_sql_extractor=org.hibernate.tool.hbm2ddl.MultipleLinesSqlCommandExtractor
spring.jpa.properties.hibernate.current_session_context_class=org.springframework.orm.hibernate5.SpringSessionContext
spring.jpa.properties.hibernate.default_batch_fetch_size=${chunkSize:100}
spring.jpa.properties.hibernate.jdbc.batch_size=20
spring.jpa.properties.hibernate.order_inserts=true
spring.jpa.properties.hibernate.order_updates=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위와 같은 코드로 구축한 데이터 베이스를 spring boot 프로젝트와 연동할 수 있다.&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;uml;&amp;nbsp;)ว&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;외부 서버에 spring boot 실행&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저번 포스팅에서 생성한 ec2 서버에 들어가서 git java 등을 다운로드하였으면&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성한 프로젝트를 git clone을 통해 clone 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1642267924240&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git clone {clone 할 프로젝트 깃 저장소 주소}&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;를 생성해줘야 한다 &amp;rarr; &lt;b&gt;deploy.sh&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1642267974285&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vim ~/{프로젝트주소}/deploy.sh&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;스크립트 파일을 clone 받은 프로젝트와 &lt;u&gt;같은 위치&lt;/u&gt;에 생성시키고 내부 코드를 아래와 같이 작성해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1642268027039&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#!/bin/bash

REPOSITORY={프로젝트 주소}
PROJECT_NAME={프로젝트명}

cd $REPOSITORY/$PROJECT_NAME/

echo &quot;&amp;gt; Git Pull&quot;

git pull

echo &quot;&amp;gt; 프로젝트 Build 시작&quot;

./gradlew build

echo &quot;&amp;gt; step1 디렉토리 이동&quot;

cd $REPOSITORY

echo &quot;&amp;gt; Build 파일 복사&quot;

cp $REPOSITORY/$PROJECT_NAME/build/libs/*.jar $REPOSITORY/

echo &quot;&amp;gt; 현재 구동중인 애플리케이션 pid 확인&quot;

CURRENT_PID=$(pgrep -f ${PROJECT_NAME}*.jar)

echo &quot;현재 구동 중인 애플리케이션 pid: $CURRENT_PID&quot;

if [ -z &quot;$CURRENT_PID&quot; ]; then
   echo &quot;&amp;gt; 현재 구동 중인 애플리케이션이 없으므로 종료하지 않습니다.&quot;
else
   echo &quot;&amp;gt; kill -15 $CURRENT_PID&quot;
   kill -15 $CURRENT_PID
   sleep 5
fi

echo &quot;&amp;gt; 새 애플리케이션 배포&quot;

JAR_NAME=$(ls -tr $REPOSITORY/ | grep *.jar | tail -n 1)

echo &quot;&amp;gt; JAR Name: $JAR_NAME&quot;

nohup java -jar $REPOSITORY/$JAR_NAME 2&amp;gt;&amp;amp;1 &amp;amp;&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;우선 프로젝트 위치와 프로젝트 명을 변수에 저장해 관리하고 ($REPOSITORY &amp;amp; $PROJECT_NAME)&lt;/li&gt;
&lt;li&gt;git pull을 해서 만약 프로젝트가 최신 상태가 아니라면 최신 상태로 update 해준다.&lt;/li&gt;
&lt;li&gt;프로젝트를 build 하고&lt;/li&gt;
&lt;li&gt;jar 파일을 만들어 nohup (백그라운드 실행)으로 jar 파일 실행시켜서 프로젝트를 실행해준다.&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;&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;실행을 위한 파일이기 때문에 build와 같은 실행 시에 어떤 조건들을 주고 싶다 하면 이 파일 내부의 코드들을 수정하면 된다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;다른 포스팅에서 설명했지만 나는 queryDsl 설정 관련해서 build 전에 해줘야 할 설정이 있어서 이 deploy.sh 파일 코드를 조금 수정했다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;또 포트 kill 관련해서도 8080 포트가 살아있는지 확인하고 재실행시키는데 살아있으면 kill 하는 코드도 여기에 넣었다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;darr;&amp;darr;&amp;darr;&amp;darr;&amp;darr;&amp;darr; 이 부분을 확인하고 싶으면 &amp;darr;&amp;darr;&amp;darr;&amp;darr;&amp;darr;&amp;darr;&lt;/p&gt;
&lt;figure id=&quot;og_1642268368053&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;[AWS + Spring Boot ] 스프링부트 QueryDSL 연동 배포&quot; data-og-description=&quot;드디어 spring boot 에 querydsl 적용하고 배포까지 구현했다. 나중에 또 하면 1시간 넘게 헤맬 수 있으니 기억이 온전할 때 바로 내용 정리해놓고 두고두고 공부해야겠다. ๑･̑◡･̑๑ querydsl 이란? &quot; data-og-host=&quot;jihyee.tistory.com&quot; data-og-source-url=&quot;https://jihyee.tistory.com/7?category=1061683&quot; data-og-url=&quot;https://jihyee.tistory.com/7&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/yRLgE/hyM6KH99BW/AdCdGStQSDljFDaam1n990/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/c7ymko/hyM6FfL2EX/5Nkt2WMF2ohmO1kAEhTtB1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/cyFdRt/hyM6CpOHMv/MvUaXg15CxWWtBGgKkk290/img.jpg?width=1440&amp;amp;height=1080&amp;amp;face=0_0_1440_1080&quot;&gt;&lt;a href=&quot;https://jihyee.tistory.com/7?category=1061683&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://jihyee.tistory.com/7?category=1061683&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/yRLgE/hyM6KH99BW/AdCdGStQSDljFDaam1n990/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/c7ymko/hyM6FfL2EX/5Nkt2WMF2ohmO1kAEhTtB1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/cyFdRt/hyM6CpOHMv/MvUaXg15CxWWtBGgKkk290/img.jpg?width=1440&amp;amp;height=1080&amp;amp;face=0_0_1440_1080');&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;[AWS + Spring Boot ] 스프링부트 QueryDSL 연동 배포&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;드디어 spring boot 에 querydsl 적용하고 배포까지 구현했다. 나중에 또 하면 1시간 넘게 헤맬 수 있으니 기억이 온전할 때 바로 내용 정리해놓고 두고두고 공부해야겠다. ๑･̑◡･̑๑ querydsl 이란?&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;jihyee.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;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;이렇게 deploy.sh 파일을 만들면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1642268544129&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// deploy.sh 파일 실행 권한 부여
chmod +x ./deploy.sh

// 실행
./deploy.sh&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;&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;span&gt;nohup.out 파일이 생기는데 &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;1434&quot; data-origin-height=&quot;136&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b2dsNY/btrqMvONG82/Q9UKZEkMohKd7wiaj5nG1K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b2dsNY/btrqMvONG82/Q9UKZEkMohKd7wiaj5nG1K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b2dsNY/btrqMvONG82/Q9UKZEkMohKd7wiaj5nG1K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2dsNY%2FbtrqMvONG82%2FQ9UKZEkMohKd7wiaj5nG1K%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;1434&quot; height=&quot;136&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1434&quot; data-origin-height=&quot;136&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&gt;여기에 로컬로 spring boot 돌렸을 때 run terminal에 뜨는 log들이 기록된다. 만약 서버가 갑자기 꺼지거나 에러로 인해 실행이 안되면 이 파일 열어서 확인해보면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;드디어 aws ec2 서버에 spring boot 프로젝트 배포하기 정리 끝!!!&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;데이터 베이스 구축이랑 연동까지 설명하려니까 글이 정말 길어진 것 같다...&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이제 다음은 &lt;span style=&quot;color: #ee2323;&quot;&gt;gcp&lt;/span&gt; 랑 &lt;span style=&quot;color: #409d00;&quot;&gt;naver cloud platform&lt;/span&gt;이다...&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;어떤 클라우드 서버 서비스를 쓰는지에는 관계 없이 위 방식은 동일하게 적용되는 것 같다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;단, paas-ta 제외.. ㅎ&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;클라우드 공부도 꾸준히 해서 방학에 자격증도 한번 도전해봐야겠다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;아자아자 ੧ᐛ੭&lt;/span&gt;&lt;/p&gt;</description>
      <category>공부/Server</category>
      <category>aws</category>
      <category>MySQL</category>
      <category>mysql spring boot 연동</category>
      <category>rds</category>
      <category>Spring Boot</category>
      <category>Spring Boot 배포</category>
      <author>jihyee</author>
      <guid isPermaLink="true">https://jihyee.tistory.com/21</guid>
      <comments>https://jihyee.tistory.com/21#entry21comment</comments>
      <pubDate>Sun, 16 Jan 2022 04:20:58 +0900</pubDate>
    </item>
    <item>
      <title>[Spring Boot] 프로그래머스 과제관 「주문관리 API 개발」 jpa lombok 어노테이션없이 스프링 부트 개발하기 가능?</title>
      <link>https://jihyee.tistory.com/20</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스 과제관에서 스프링 부트 프레임워크 기반으로 api 개발하는 과제가 있어 도전했다!&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;(੭&amp;bull;̀ᴗ&amp;bull;̀)੭&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;인턴포함 crud 짜는 건 많이 경험했다고 생각했고 주문 관리 정도야 하면서 시작했는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;...&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;정말 너무 어려웠고 .. 결국 깃헙의 도움을..,, 받을 수밖에 없었다..&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;(&amp;rsaquo;&amp;acute;&amp;omega;`&amp;lsaquo;&amp;nbsp;)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;꼭 혼자 하고 싶었는데..&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;jpa.. jpa 정말 너무 소중하다..&lt;/li&gt;
&lt;li&gt;Lombok 너무 소중하다...&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기능이 정말 좋은&lt;span style=&quot;color: #409d00;&quot;&gt;&lt;span&gt;&amp;nbsp;&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 data-ke-size=&quot;size16&quot;&gt;옛날에 김영한님의 스프링 강좌 들을 때 옛날엔 스프링 부트로 코드 짜는 게 정말 어려웠다며 jpa를 굉장히 강조하셨던 게 생각났다..&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발할 때 경험만큼 좋은 공부는 없다는 것을 또 한 번 느꼈고 강의를 여러 번 들어도 이해가 되지 않았던 jdbc와 jpa의 차이를 보다 선명하게 이해할 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어려웠던 이유와 이해한 내용을 코드와 정리해보면,&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;blockquote data-ke-style=&quot;style2&quot;&gt;jpa vs jdbc&lt;/blockquote&gt;
&lt;pre id=&quot;code_1641407705938&quot; class=&quot;java&quot; style=&quot;margin: 20px auto 0px; display: block; overflow: auto; padding: 20px; color: #383a42; background: #f8f8f8; font-size: 14px; font-family: 'SF Mono', Menlo, Consolas, Monaco, monospace; border: 1px solid #ebebeb; line-height: 1.71; cursor: default; z-index: 1;&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Repository
public class JdbcOrderRepository implements OrderRepository{

  private final JdbcTemplate jdbcTemplate;

  public JdbcOrderRepository(JdbcTemplate jdbcTemplate) {
    this.jdbcTemplate = jdbcTemplate;
  }

  @Override
  public List&amp;lt;Order&amp;gt; findAll(Pageable pageable) {

    String query = &quot;SELECT * FROM orders ORDER BY seq DESC &quot;
    + &quot; LIMIT &quot; + pageable.getSize() + &quot; OFFSET &quot; + pageable.getOffset();

    return jdbcTemplate.query(
      query,
      mapper
    );
  }
  static RowMapper&amp;lt;Order&amp;gt; mapper = (rs, rowNum) -&amp;gt;
    new Order.Builder()
      .seq(rs.getLong(&quot;seq&quot;))
      .userId(rs.getLong(&quot;user_seq&quot;))
      .productId(rs.getLong(&quot;product_seq&quot;))
      .reviewId(rs.getLong(&quot;review_seq&quot;))
      .state(State.valueOf(rs.getString(&quot;state&quot;)))
      .requestMessage(rs.getString(&quot;request_msg&quot;))
      .rejectMessage(rs.getString(&quot;reject_msg&quot;))
      .completedAt(dateTimeOf(rs.getTimestamp(&quot;completed_at&quot;)))
      .rejectedAt(dateTimeOf(rs.getTimestamp(&quot;rejected_at&quot;)))
      .createAt(dateTimeOf(rs.getTimestamp(&quot;create_at&quot;)))
      .build();
}&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;이게 jdbcTemplate을 사용한 repository인데 jpa를 항상 사용했던 입장에선 굉장히 생소한 코드였다..&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;jdbcTemplate에 string 형식 그대로의 쿼리문&lt;/p&gt;
&lt;pre id=&quot;code_1641407705938&quot; class=&quot;java&quot; style=&quot;margin: 20px auto 0px; display: block; overflow: auto; padding: 20px; color: #383a42; background: #f8f8f8; font-size: 14px; font-family: 'SF Mono', Menlo, Consolas, Monaco, monospace; border: 1px solid #ebebeb; line-height: 1.71; cursor: default; z-index: 1;&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;String query = &quot;SELECT * FROM orders ORDER BY seq DESC &quot;
    + &quot; LIMIT &quot; + pageable.getSize() + &quot; OFFSET &quot; + pageable.getOffset();&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;을 보내면 데이터베이스의 출력 값을 받아오고 그걸 mapper를 통해 하나하나 Order 객체로 매핑시키고 있다.&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;&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;&amp;nbsp;&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;h2&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;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;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;span&gt;&amp;nbsp;_&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;span&gt;&amp;nbsp;pk&amp;nbsp;&lt;/span&gt;칼럼들이&lt;span&gt;&amp;nbsp;&lt;/span&gt;당연히&lt;span&gt;&amp;nbsp;id&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;seq&amp;nbsp;&lt;/span&gt;들을&lt;span&gt;&amp;nbsp;&lt;/span&gt;다&lt;span&gt;&amp;nbsp;id&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;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;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;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;span&gt;..??&amp;nbsp;&lt;/span&gt;게다가&lt;span&gt;&amp;nbsp;&lt;/span&gt;자동&lt;span&gt;&amp;nbsp;entity&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;jpa&lt;/span&gt;만&lt;span&gt;&amp;nbsp;&lt;/span&gt;써왔다&lt;span&gt;&amp;nbsp;&lt;/span&gt;보니&lt;span&gt;&amp;nbsp;reivew&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;span&gt;&amp;nbsp;entity&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;span&gt;&amp;nbsp;getLong&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;span&gt;&amp;nbsp;&lt;/span&gt;생각했다&lt;span&gt;.&amp;nbsp;&lt;/span&gt;찾아보니&lt;span&gt;&amp;nbsp;getObject&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;span&gt;&amp;nbsp;&lt;/span&gt;바로&lt;span&gt;&amp;nbsp;&lt;/span&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 data-ke-size=&quot;size16&quot;&gt;어림도&amp;nbsp;없는..,,&amp;nbsp;(&amp;rsaquo;&amp;acute;&amp;omega;`&amp;lsaquo;&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;&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;위&lt;span&gt; &lt;/span&gt;코드를&lt;span&gt; jpa &lt;/span&gt;사용한다고&lt;span&gt; &lt;/span&gt;가정하고&lt;span&gt; &lt;/span&gt;바꾸면&lt;/p&gt;
&lt;pre id=&quot;code_1641407705939&quot; class=&quot;java&quot; style=&quot;margin: 20px auto 0px; display: block; overflow: auto; padding: 20px; color: #383a42; background: #f8f8f8; font-size: 14px; font-family: 'SF Mono', Menlo, Consolas, Monaco, monospace; border: 1px solid #ebebeb; line-height: 1.71; cursor: default; z-index: 1;&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Repository
public interface OrderRepository extends JpaRepository&amp;lt;Order, Long&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;&amp;nbsp;&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 data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;jpa 쓰면 findAll과 같은 메서드는 내장 메서드로 기능이 박혀있어서 JpaRepository만 상속받아주면 그 자체로 그냥 끝이다..&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;jdbc 코드와 비교해보면&amp;nbsp;자바 스프링으로 개발할 때 jpa가 왜 필요한지 왜 써야 하는지&amp;nbsp;이해할 수밖에 없다. 단순하게 코드 길이만 비교해도 34줄&amp;nbsp;&amp;rarr; 3줄..&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;아마 JpaRepository findAll 내장 메서드 다 뜯어보면 위에서 jdbcTemplate query문 포함해서 Oder 엔티티에 매핑하는 코드가 들어있을 것이다. jpa 사용을 안 할 이유는 없지만 내장 메서드만으로는 해결이 안 되는 경우도 있고 결국 저 jdbc 코드를 기반으로 jpa가 있는 거니까 원 코드를 알아서 나쁠 건 없다고 본다.&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;lombok 어노테이션&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;span&gt;쓰고&lt;/span&gt; &lt;span&gt;직접&lt;/span&gt; getter setter constructor builder toString &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;/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;span&gt;많긴&lt;/span&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;pre id=&quot;code_1641407705940&quot; class=&quot;java&quot; style=&quot;margin: 20px auto 0px; display: block; overflow: auto; padding: 20px; color: #383a42; background: #f8f8f8; font-size: 14px; font-family: 'SF Mono', Menlo, Consolas, Monaco, monospace; border: 1px solid #ebebeb; line-height: 1.71; cursor: default; z-index: 1;&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class Order {

  private final Long seq;

  private Long userId;

  private Long productId;

  private Long reviewId;

  private Review review;

  private State state;

  private String requestMessage;

  private String rejectMessage;

  private LocalDateTime completedAt;

  private LocalDateTime rejectedAt;

  private final LocalDateTime createAt;

    public Order(Long seq,
    Long userId,
    Long productId,
    Long reviewId,
    State state,
    String requestMessage,
    String rejectMessage,
    LocalDateTime completedAt,
    LocalDateTime rejectedAt,
    LocalDateTime createAt){
    
    this.seq = seq;
    this.userId = userId;
    this.productId = productId;
    this.reviewId = reviewId;
    this.state = state;
    this.requestMessage = requestMessage;
    this.rejectMessage = rejectMessage;
    this.completedAt = completedAt;
    this.rejectedAt = rejectedAt;
    this.createAt = createAt;

  }

  public Long getSeq() {
    return seq;
  }

  public Long getUserId() {
    return userId;
  }

  public void setUserId(Long userId) {
    this.userId = userId;
  }

  public Long getProductId() {
    return productId;
  }

  public void setProductId(Long productId) {
    this.productId = productId;
  }

  public Review getReview() {
    return review;
  }

  public void setReview(Review review) {
    this.review = review;
  }

  public Long getReviewId() {
    return reviewId;
  }

  public void setReviewId(Long reviewId) {
    this.reviewId = reviewId;
  }
  
  public State getState() {
    return state;
  }

  public void setState(State state) {
    this.state = state;
  }
  
  public String getRequestMessage() {
    return requestMessage;
  }

  public void setRequestMessage(String requestMessage) {
    this.requestMessage = requestMessage;
  }
  
  public String getRejectMessage() {
    return rejectMessage;
  }

  public void setRejectMessage(String rejectMessage) {
    this.rejectMessage = rejectMessage;
  }

  public LocalDateTime getCompletedAt() {
    return completedAt;
  }

  public void setCompletedAt(LocalDateTime completedAt) {
    this.completedAt = completedAt;
  }

  public LocalDateTime getRejectedAt() {
    return rejectedAt;
  }

  public void getRejectedAt(LocalDateTime rejectedAt) {
    this.rejectedAt = rejectedAt;
  }

  public LocalDateTime getCreateAt() {
    return createAt;
  }

  @Override
  public String toString() {
    return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE)
      .append(&quot;seq&quot;, seq)
      .append(&quot;userId&quot;, userId)
      .append(&quot;productId&quot;, productId)
      .append(&quot;reviewId&quot;, reviewId)
      .append(&quot;review&quot;, review.toString())
      .append(&quot;state&quot;, state)
      .append(&quot;requestMessage&quot;, requestMessage)
      .append(&quot;rejectMessage&quot;, rejectMessage)
      .append(&quot;completedAt&quot;, completedAt)
      .append(&quot;rejectedAt&quot;, rejectedAt)
      .append(&quot;createAt&quot;, createAt)
      .toString();
  }

  static public class Builder {
    
    private Long seq;
    private Long userId;
    private Long productId;
    private Long reviewId;
    private State state;
    private String requestMessage;
    private String rejectMessage;
    private LocalDateTime completedAt;
    private LocalDateTime rejectedAt;
    private LocalDateTime createAt;

    public Builder() {/*empty*/}

    public Builder(Order order) {
      this.seq = order.seq;
      this.userId = order.userId;
      this.productId = order.productId;
      this.reviewId = order.reviewId;
      this.state = order.state;
      this.requestMessage = order.requestMessage;
      this.rejectMessage = order.rejectMessage;
      this.completedAt = order.completedAt;
      this.rejectedAt = order.rejectedAt;
      this.createAt = order.createAt;
    }

    public Builder seq(Long seq) {
      this.seq = seq;
      return this;
    }
    public Builder userId(Long userId) {
      this.userId = userId;
      return this;
    }
    public Builder productId(Long productId) {
      this.productId = productId;
      return this;
    }
    public Builder reviewId(Long reviewId) {
      this.reviewId = reviewId;
      return this;
    }
    public Builder state(State state) {
      this.state = state;
      return this;
    }
    public Builder requestMessage(String requestMessage) {
      this.requestMessage = requestMessage;
      return this;
    }
    public Builder rejectMessage(String rejectMessage) {
      this.rejectMessage = rejectMessage;
      return this;
    }
    public Builder completedAt(LocalDateTime completedAt) {
      this.completedAt = completedAt;
      return this;
    }
    public Builder rejectedAt(LocalDateTime rejectedAt) {
      this.rejectedAt = rejectedAt;
      return this;
    }
    public Builder createAt(LocalDateTime createAt) {
      this.createAt = createAt;
      return this;
    }


    public Order build() {
      return new Order(
        seq,
        userId,
        productId,
        reviewId,
        state,
        requestMessage,
        rejectMessage,
        completedAt,
        rejectedAt,
        createAt
      );
    }
  }
}&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;보면 class 위에 어떤 어노테이션도 없는 걸 확인할 수 있는데 이게 롬복 어노테이션들을 하나도 안 쓴 순수한 데이터 클래스이다.&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;어노테이이션이랑&lt;span&gt; entity &lt;/span&gt;어노테이션&lt;span&gt; &lt;/span&gt;사용한&lt;span&gt; &lt;/span&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;pre id=&quot;code_1641407705940&quot; class=&quot;java&quot; style=&quot;margin: 20px auto 0px; display: block; overflow: auto; padding: 20px; color: #383a42; background: #f8f8f8; font-size: 14px; font-family: 'SF Mono', Menlo, Consolas, Monaco, monospace; border: 1px solid #ebebeb; line-height: 1.71; cursor: default; z-index: 1;&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = &quot;JOINS&quot;)
public class Join {
    @JsonIgnore
    @Id
    @Column(name = &quot;JOIN_SEQ&quot;)
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long joinSeq;

    @NotNull
    @ManyToOne(targetEntity = User.class, fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
    @JoinColumn(name = &quot;USER_SEQ&quot;, referencedColumnName = &quot;user_seq&quot;)
    private User joinUser;

    @NotNull
    @ManyToOne(targetEntity = Study.class, fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
    @JoinColumn(name = &quot;STUDY_SEQ&quot;, referencedColumnName = &quot;study_seq&quot;)
    private Study joinStudy;

    @NotNull
    @Enumerated(EnumType.STRING)
    private JoinType joinType;

    @Column(name = &quot;COMMENT&quot;)
    private String comment;
}&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;/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;@Getter&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;get형 메서드 자동 생성&lt;br /&gt;@Setter&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;set형 메소드 자동 생성&lt;br /&gt;@NoArgsConstructor&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파라미터 없는 생성자 자동 생성&lt;br /&gt;@AllArgsConstructor&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파라미터 채운 생성자 자동 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;@toString&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;toString 메소드 자동 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;@builder&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;builder 클래스 자동 생성&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;6가지 롬복 어노테이션으로 entity 나 dto 등의 데이터 정의 부분에서 코드를 간결하게 줄일 수 있고 반복적인 개발 과정을 수월하게 도와준다.&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;lombok 최고 (&amp;nbsp;･ᴗ･̥̥̥&amp;nbsp;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;과제와 함께 jdbc와 jpa의 차이, 롬복 어노테이션에 대해 공부할 수 있어서 좋았던 것 같고 이런 과제가 아니었더라면 존재조차 모르고 넘어갔을 것 같아서 더 중요했던 것 같다.&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;jpa는 편한 만큼 어렵고 공부가 많이 필요한 부분이라는 것에 이유도 많이 느꼈고 라이브러리나 예시 코드 없이 코드를 통으로 혼자 짜는 것도 많이 연습해야겠다고 생각했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;(*&amp;bull;̀ᴗ&amp;bull;́*)&lt;span&gt;و&lt;/span&gt;&amp;nbsp;̑̑&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>공부/Spring Boot</category>
      <category>JDBC</category>
      <category>jpa</category>
      <category>lombok</category>
      <category>Spring Boot</category>
      <category>스프링 부트</category>
      <category>프로그래머스</category>
      <category>프로그래머스 과제관</category>
      <category>프로그래머스 주문 api 개발</category>
      <author>jihyee</author>
      <guid isPermaLink="true">https://jihyee.tistory.com/20</guid>
      <comments>https://jihyee.tistory.com/20#entry20comment</comments>
      <pubDate>Thu, 6 Jan 2022 03:29:42 +0900</pubDate>
    </item>
    <item>
      <title>HTTP 웹 기본 지식 ➄ HTTP 헤더 / 캐시, 검증, 조건부 요청</title>
      <link>https://jihyee.tistory.com/19</link>
      <description>&lt;figure id=&quot;og_1641104989511&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;모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의&quot; data-og-description=&quot;실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., 웹 기술을 사용하는 개발자라면 누구나 OK!꼭 필요한 HTTP의 핵심을 알려드립니다.   확인해주세요!본 강의는 자바 스&quot; data-og-host=&quot;www.inflearn.com&quot; data-og-source-url=&quot;https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC&quot; data-og-url=&quot;https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bwhKJu/hyMFNxVAxt/EsDTYkrg5kKEs2M9Ts9RO1/img.jpg?width=768&amp;amp;height=500&amp;amp;face=0_0_768_500,https://scrap.kakaocdn.net/dn/eL2ZTA/hyMFFNqEBK/SNWT8jQg8kHPgw084Kpt7k/img.jpg?width=768&amp;amp;height=500&amp;amp;face=0_0_768_500,https://scrap.kakaocdn.net/dn/bL5nHv/hyMERvajWk/BkG2tL0uCdkvEkMJ5TYxyK/img.jpg?width=1200&amp;amp;height=666&amp;amp;face=0_0_1200_666&quot;&gt;&lt;a href=&quot;https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC&quot; data-source-url=&quot;https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bwhKJu/hyMFNxVAxt/EsDTYkrg5kKEs2M9Ts9RO1/img.jpg?width=768&amp;amp;height=500&amp;amp;face=0_0_768_500,https://scrap.kakaocdn.net/dn/eL2ZTA/hyMFFNqEBK/SNWT8jQg8kHPgw084Kpt7k/img.jpg?width=768&amp;amp;height=500&amp;amp;face=0_0_768_500,https://scrap.kakaocdn.net/dn/bL5nHv/hyMERvajWk/BkG2tL0uCdkvEkMJ5TYxyK/img.jpg?width=1200&amp;amp;height=666&amp;amp;face=0_0_1200_666');&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;모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., 웹 기술을 사용하는 개발자라면 누구나 OK!꼭 필요한 HTTP의 핵심을 알려드립니다.   확인해주세요!본 강의는 자바 스&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.inflearn.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;위 강의를 통해 공부한 내용을 정리함&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&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;&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;blockquote data-ke-style=&quot;style2&quot;&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-filename=&quot;스크린샷 2022-01-02 오후 3.32.52.png&quot; data-origin-width=&quot;1656&quot; data-origin-height=&quot;950&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/shmRT/btrpz1tgMJD/atA4JWXhBp6ceFAZ4Kv1V1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/shmRT/btrpz1tgMJD/atA4JWXhBp6ceFAZ4Kv1V1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/shmRT/btrpz1tgMJD/atA4JWXhBp6ceFAZ4Kv1V1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FshmRT%2Fbtrpz1tgMJD%2FatA4JWXhBp6ceFAZ4Kv1V1%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;1656&quot; height=&quot;950&quot; data-filename=&quot;스크린샷 2022-01-02 오후 3.32.52.png&quot; data-origin-width=&quot;1656&quot; data-origin-height=&quot;950&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 data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럴 때 네트워크 비용과 시간을 줄이기 위해 캐시를 사용한다. 헤더에 Cache-Control 헤더를 명시하고 보내주면 여기에 명시된 정보를 바탕으로 브라우저 캐시에 데이터가 저장된다. 이러면 그 정보에 일치하는 데이터 요청이 왔을 때 직접 네트워크 타고 서버에서 데이터를 응답받는 게 아니라 브라우저 캐시에서 데이터를 바로 응답받는다.&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;스크린샷 2022-01-02 오후 3.35.03.png&quot; data-origin-width=&quot;1702&quot; data-origin-height=&quot;898&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/y0uFB/btrpqzx18XF/BfqOTkfoxxasqNiHekBKik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/y0uFB/btrpqzx18XF/BfqOTkfoxxasqNiHekBKik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/y0uFB/btrpqzx18XF/BfqOTkfoxxasqNiHekBKik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fy0uFB%2Fbtrpqzx18XF%2FBfqOTkfoxxasqNiHekBKik%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;1702&quot; height=&quot;898&quot; data-filename=&quot;스크린샷 2022-01-02 오후 3.35.03.png&quot; data-origin-width=&quot;1702&quot; data-origin-height=&quot;898&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-01-02 오후 3.35.12.png&quot; data-origin-width=&quot;1724&quot; data-origin-height=&quot;904&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c9CmvY/btrpz2Z0rQd/Ca42g0oukRc9HrpKLCkMak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c9CmvY/btrpz2Z0rQd/Ca42g0oukRc9HrpKLCkMak/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c9CmvY/btrpz2Z0rQd/Ca42g0oukRc9HrpKLCkMak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc9CmvY%2Fbtrpz2Z0rQd%2FCa42g0oukRc9HrpKLCkMak%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;1724&quot; height=&quot;904&quot; data-filename=&quot;스크린샷 2022-01-02 오후 3.35.12.png&quot; data-origin-width=&quot;1724&quot; data-origin-height=&quot;904&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;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;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;/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;&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;1의 경우는 데이터를 그대로 다시 받는 게 아까울 수 있음. 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;&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;이를 위한 방법이 바로 최종 수정 시간이라는 &lt;span style=&quot;color: #ef6f53;&quot;&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;스크린샷 2022-01-02 오후 3.41.42.png&quot; data-origin-width=&quot;1748&quot; data-origin-height=&quot;908&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cnofZI/btrpu6bAzqi/QgS30QtwjNq3yv41Lry2K1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cnofZI/btrpu6bAzqi/QgS30QtwjNq3yv41Lry2K1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cnofZI/btrpu6bAzqi/QgS30QtwjNq3yv41Lry2K1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcnofZI%2Fbtrpu6bAzqi%2FQgS30QtwjNq3yv41Lry2K1%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;1748&quot; height=&quot;908&quot; data-filename=&quot;스크린샷 2022-01-02 오후 3.41.42.png&quot; data-origin-width=&quot;1748&quot; data-origin-height=&quot;908&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;Last-Modified라는&amp;nbsp;검증 헤더를 추가해서 응답을 보내면 클라이언트 측에서는 해당 정보를 함께 브라우저 캐시에 저장한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 번째 요청이 발생했는데 캐시 유효 시간도 초과한 경우라면 데이터를&amp;nbsp;통으로 주고받는 것을 막기 위해 요청에 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;if-modified-since라는&lt;/span&gt; &lt;span style=&quot;color: #ef6f53;&quot;&gt;조건부 요청 헤더&lt;/span&gt;를 달고 보낸다. &amp;rarr; if 붙는 게 조건부 요청임&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-01-02 오후 3.44.15.png&quot; data-origin-width=&quot;1710&quot; data-origin-height=&quot;932&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcimkv/btrput5TilB/KMuZwNR4G7v6e0TTXpGBE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcimkv/btrput5TilB/KMuZwNR4G7v6e0TTXpGBE1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcimkv/btrput5TilB/KMuZwNR4G7v6e0TTXpGBE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbcimkv%2Fbtrput5TilB%2FKMuZwNR4G7v6e0TTXpGBE1%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;1710&quot; height=&quot;932&quot; data-filename=&quot;스크린샷 2022-01-02 오후 3.44.15.png&quot; data-origin-width=&quot;1710&quot; data-origin-height=&quot;932&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버는 해당 날짜와 데이터 최종 수정일 날짜를 비교해서 만약 이후 수정됐으면 첫 번째 요청과 동일하게 응답을 보내고 수정이 안됐으면 (결국 브라우저 캐시 데이터나 서버 데이터나 같다는 뜻) 데이터 payload 없이 304 not-modified 응답 메시지를 보내게 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-01-02 오후 3.45.58.png&quot; data-origin-width=&quot;1828&quot; data-origin-height=&quot;920&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QT5zL/btrpwO9hKwh/Ut9680D8PeMe8N3h7Img01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QT5zL/btrpwO9hKwh/Ut9680D8PeMe8N3h7Img01/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QT5zL/btrpwO9hKwh/Ut9680D8PeMe8N3h7Img01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQT5zL%2FbtrpwO9hKwh%2FUt9680D8PeMe8N3h7Img01%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;1828&quot; height=&quot;920&quot; data-filename=&quot;스크린샷 2022-01-02 오후 3.45.58.png&quot; data-origin-width=&quot;1828&quot; data-origin-height=&quot;920&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;스크린샷 2022-01-02 오후 3.46.56.png&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;584&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cmrJw7/btrpyi3mnC7/6pupEIcTG1h15ZGvkWpPrK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cmrJw7/btrpyi3mnC7/6pupEIcTG1h15ZGvkWpPrK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cmrJw7/btrpyi3mnC7/6pupEIcTG1h15ZGvkWpPrK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcmrJw7%2Fbtrpyi3mnC7%2F6pupEIcTG1h15ZGvkWpPrK%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;508&quot; height=&quot;345&quot; data-filename=&quot;스크린샷 2022-01-02 오후 3.46.56.png&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;584&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;
&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;blockquote data-ke-style=&quot;style2&quot;&gt;ETag&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 캐시 정보에 관한 검증, 조건부 헤더들이 있는데 만약 날짜 기반으로 한 해당 헤더 말고 다른 검증, 조건부 헤더를 만들고 싶다 하면 ETag를 활용하면 된다.&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;날짜 대신 ETag값을 기준으로 한다는 점 빼고는 위 캐시 검증, 조건부 헤더와 방법은 일치한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;lt;검증 헤더와 조건부 헤더 정리&amp;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;스크린샷 2022-01-02 오후 3.58.20.png&quot; data-origin-width=&quot;1540&quot; data-origin-height=&quot;924&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/doY4Cs/btrpvRFhPuR/QEU8U5QWJ3sj1iKXxQgmqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/doY4Cs/btrpvRFhPuR/QEU8U5QWJ3sj1iKXxQgmqk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/doY4Cs/btrpvRFhPuR/QEU8U5QWJ3sj1iKXxQgmqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdoY4Cs%2FbtrpvRFhPuR%2FQEU8U5QWJ3sj1iKXxQgmqk%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;1540&quot; height=&quot;924&quot; data-filename=&quot;스크린샷 2022-01-02 오후 3.58.20.png&quot; data-origin-width=&quot;1540&quot; data-origin-height=&quot;924&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;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;blockquote data-ke-style=&quot;style2&quot;&gt;캐시 제어 헤더&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-01-02 오후 3.57.41.png&quot; data-origin-width=&quot;862&quot; data-origin-height=&quot;314&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5oC7w/btrpjxVlgr8/kEc0uroNOWnCZvzcC4KoK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5oC7w/btrpjxVlgr8/kEc0uroNOWnCZvzcC4KoK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5oC7w/btrpjxVlgr8/kEc0uroNOWnCZvzcC4KoK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5oC7w%2FbtrpjxVlgr8%2FkEc0uroNOWnCZvzcC4KoK0%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;481&quot; height=&quot;175&quot; data-filename=&quot;스크린샷 2022-01-02 오후 3.57.41.png&quot; data-origin-width=&quot;862&quot; data-origin-height=&quot;314&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 캐시 무효화&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-01-02 오후 4.04.18.png&quot; data-origin-width=&quot;1068&quot; data-origin-height=&quot;810&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ok2XS/btrpzKZBJuL/543HlG0Z5FBWrMBKIlmxd1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ok2XS/btrpzKZBJuL/543HlG0Z5FBWrMBKIlmxd1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ok2XS/btrpzKZBJuL/543HlG0Z5FBWrMBKIlmxd1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fok2XS%2FbtrpzKZBJuL%2F543HlG0Z5FBWrMBKIlmxd1%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;466&quot; height=&quot;353&quot; data-filename=&quot;스크린샷 2022-01-02 오후 4.04.18.png&quot; data-origin-width=&quot;1068&quot; data-origin-height=&quot;810&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;☆ 왜 no-cache 하는데 must-revalivate 도 해야 하는 걸까?&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;no-cache 만 명시하면 만약 프록시에서 원서버 사이에 문제가 발생했을 때 그래도 에러나는 것보단 프록시에 저장된 기존 데이터라도 보내주라고 설정해놓은 경우가 있어서 결국 캐시를 사용하게 될 수도 있다.&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;그렇기 때문에 완벽한 캐시 무효화를 하기 위해선 must-revalidate까지 넣어줘야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;※ 개인 프로젝트할 때 그런 경우는 없겠지만 개인 api 키나 계좌 정보 같은 중요 데이터를 주고받으면 중간 캐시에 저장되지 않게 하기 위해서 캐시 무효화 헤더를 꼭 추가하자 ※&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-01-02 오후 3.59.20.png&quot; data-origin-width=&quot;1602&quot; data-origin-height=&quot;948&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DKK9f/btrpvSc5M6l/TnuoNi1FIDvZovtfvGPHBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DKK9f/btrpvSc5M6l/TnuoNi1FIDvZovtfvGPHBk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DKK9f/btrpvSc5M6l/TnuoNi1FIDvZovtfvGPHBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDKK9f%2FbtrpvSc5M6l%2FTnuoNi1FIDvZovtfvGPHBk%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;1602&quot; height=&quot;948&quot; data-filename=&quot;스크린샷 2022-01-02 오후 3.59.20.png&quot; data-origin-width=&quot;1602&quot; data-origin-height=&quot;948&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;스크린샷 2022-01-02 오후 4.00.10.png&quot; data-origin-width=&quot;1816&quot; data-origin-height=&quot;818&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CklK2/btrpq64o2pG/ldynsWF79CEIou4aRlPV3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CklK2/btrpq64o2pG/ldynsWF79CEIou4aRlPV3K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CklK2/btrpq64o2pG/ldynsWF79CEIou4aRlPV3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCklK2%2Fbtrpq64o2pG%2FldynsWF79CEIou4aRlPV3K%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;1816&quot; height=&quot;818&quot; data-filename=&quot;스크린샷 2022-01-02 오후 4.00.10.png&quot; data-origin-width=&quot;1816&quot; data-origin-height=&quot;818&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중간에 공용으로 사용하는 public 캐시 서버를 한국에 두면 첫 요청이 아닌 경우에는 요청이 중복되면 프록시&amp;nbsp;캐시에 저장돼서 좀 빠르게 데이터를 주고받을 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>공부/HTTP</category>
      <category>http</category>
      <category>http캐시</category>
      <category>검증헤더</category>
      <category>원서버</category>
      <category>조건부요청</category>
      <category>캐시</category>
      <category>캐시무효화</category>
      <category>프록시</category>
      <category>프록시서버</category>
      <author>jihyee</author>
      <guid isPermaLink="true">https://jihyee.tistory.com/19</guid>
      <comments>https://jihyee.tistory.com/19#entry19comment</comments>
      <pubDate>Sun, 2 Jan 2022 16:14:20 +0900</pubDate>
    </item>
    <item>
      <title>HTTP 웹 기본 지식 ➃ HTTP 헤더 / 표현, 협상, 일반 정보, 인증, 쿠키</title>
      <link>https://jihyee.tistory.com/18</link>
      <description>&lt;figure id=&quot;og_1641101223763&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;모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의&quot; data-og-description=&quot;실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., 웹 기술을 사용하는 개발자라면 누구나 OK!꼭 필요한 HTTP의 핵심을 알려드립니다.   확인해주세요!본 강의는 자바 스&quot; data-og-host=&quot;www.inflearn.com&quot; data-og-source-url=&quot;https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC&quot; data-og-url=&quot;https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bwhKJu/hyMFNxVAxt/EsDTYkrg5kKEs2M9Ts9RO1/img.jpg?width=768&amp;amp;height=500&amp;amp;face=0_0_768_500,https://scrap.kakaocdn.net/dn/eL2ZTA/hyMFFNqEBK/SNWT8jQg8kHPgw084Kpt7k/img.jpg?width=768&amp;amp;height=500&amp;amp;face=0_0_768_500,https://scrap.kakaocdn.net/dn/bL5nHv/hyMERvajWk/BkG2tL0uCdkvEkMJ5TYxyK/img.jpg?width=1200&amp;amp;height=666&amp;amp;face=0_0_1200_666&quot;&gt;&lt;a href=&quot;https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC&quot; data-source-url=&quot;https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bwhKJu/hyMFNxVAxt/EsDTYkrg5kKEs2M9Ts9RO1/img.jpg?width=768&amp;amp;height=500&amp;amp;face=0_0_768_500,https://scrap.kakaocdn.net/dn/eL2ZTA/hyMFFNqEBK/SNWT8jQg8kHPgw084Kpt7k/img.jpg?width=768&amp;amp;height=500&amp;amp;face=0_0_768_500,https://scrap.kakaocdn.net/dn/bL5nHv/hyMERvajWk/BkG2tL0uCdkvEkMJ5TYxyK/img.jpg?width=1200&amp;amp;height=666&amp;amp;face=0_0_1200_666');&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;모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., 웹 기술을 사용하는 개발자라면 누구나 OK!꼭 필요한 HTTP의 핵심을 알려드립니다.   확인해주세요!본 강의는 자바 스&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.inflearn.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;위 강의를 통해 공부한 내용을 정리함&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;HTTP 헤더&lt;/blockquote&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;HTTP 헤더는 요청과 응답 메시지에 대한 다양한 부가 정보들을 담고 있다.&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 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;&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;blockquote data-ke-style=&quot;style2&quot;&gt;표현&lt;/blockquote&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;표현은 요청이나 응답에서 전달한 실제 데이터를 의미하며 이는 payload라고 하기도 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; 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;/li&gt;
&lt;li&gt;데이터 길이&lt;/li&gt;
&lt;li&gt;표현 데이터의 자연 언어&lt;/li&gt;
&lt;li&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;스크린샷 2022-01-02 오후 2.26.10.png&quot; data-origin-width=&quot;1880&quot; data-origin-height=&quot;952&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RQU3T/btrpz26KMd5/VgpPSkUYegHy7H20pFbkHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RQU3T/btrpz26KMd5/VgpPSkUYegHy7H20pFbkHK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RQU3T/btrpz26KMd5/VgpPSkUYegHy7H20pFbkHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRQU3T%2Fbtrpz26KMd5%2FVgpPSkUYegHy7H20pFbkHK%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;1880&quot; height=&quot;952&quot; data-filename=&quot;스크린샷 2022-01-02 오후 2.26.10.png&quot; data-origin-width=&quot;1880&quot; data-origin-height=&quot;952&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;blockquote data-ke-style=&quot;style2&quot;&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-01-02 오후 2.44.38.png&quot; data-origin-width=&quot;1304&quot; data-origin-height=&quot;874&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6gEC9/btrpvTwezdu/T3ypi9TAVKnjfx7SQ4lvZ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6gEC9/btrpvTwezdu/T3ypi9TAVKnjfx7SQ4lvZ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6gEC9/btrpvTwezdu/T3ypi9TAVKnjfx7SQ4lvZ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6gEC9%2FbtrpvTwezdu%2FT3ypi9TAVKnjfx7SQ4lvZ0%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;1304&quot; height=&quot;874&quot; data-filename=&quot;스크린샷 2022-01-02 오후 2.44.38.png&quot; data-origin-width=&quot;1304&quot; data-origin-height=&quot;874&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;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-01-02 오후 2.45.59.png&quot; data-origin-width=&quot;1462&quot; data-origin-height=&quot;468&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3fHTP/btrpwPf2QlI/UvCZ6TOc4qTgUw4aHKm5dK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3fHTP/btrpwPf2QlI/UvCZ6TOc4qTgUw4aHKm5dK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3fHTP/btrpwPf2QlI/UvCZ6TOc4qTgUw4aHKm5dK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3fHTP%2FbtrpwPf2QlI%2FUvCZ6TOc4qTgUw4aHKm5dK%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;1462&quot; height=&quot;468&quot; data-filename=&quot;스크린샷 2022-01-02 오후 2.45.59.png&quot; data-origin-width=&quot;1462&quot; data-origin-height=&quot;468&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-01-02 오후 2.47.30.png&quot; data-origin-width=&quot;1510&quot; data-origin-height=&quot;380&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c0SRsP/btrpyi3kTQP/UmXtrN5317eood9KJukSck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c0SRsP/btrpyi3kTQP/UmXtrN5317eood9KJukSck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c0SRsP/btrpyi3kTQP/UmXtrN5317eood9KJukSck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc0SRsP%2Fbtrpyi3kTQP%2FUmXtrN5317eood9KJukSck%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;1510&quot; height=&quot;380&quot; data-filename=&quot;스크린샷 2022-01-02 오후 2.47.30.png&quot; data-origin-width=&quot;1510&quot; data-origin-height=&quot;380&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다중 언어 지원 서버에 get 요청을 보냈다고 가정하면 협상과 관련된 헤더를 명시하지 않으면 데이터 언어가 en으로 초기 세팅된게 응답된다. 근데 나는 ko 언어로 응답을 받고 싶다면 Content-Language에 ko를 넣어서 보내주면 서버의 우선순위보다 요청 헤더의 우선순위가 먼저 반영돼서 ko 가 응답되게 된다.&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;만약 요청에서 보낸 Content-Language 가 서버에 없으면?&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-01-02 오후 2.49.35.png&quot; data-origin-width=&quot;994&quot; data-origin-height=&quot;116&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Do3sY/btrpBBOQT5Y/1dQQXCfW01jmY3mILJ7ie1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Do3sY/btrpBBOQT5Y/1dQQXCfW01jmY3mILJ7ie1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Do3sY/btrpBBOQT5Y/1dQQXCfW01jmY3mILJ7ie1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDo3sY%2FbtrpBBOQT5Y%2F1dQQXCfW01jmY3mILJ7ie1%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;994&quot; height=&quot;116&quot; data-filename=&quot;스크린샷 2022-01-02 오후 2.49.35.png&quot; data-origin-width=&quot;994&quot; data-origin-height=&quot;116&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;&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;blockquote data-ke-style=&quot;style2&quot;&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;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;content-length 를 알아서 한 번에 요청하고 한 번에 쭉 받는 것&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;/ul&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;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터 덩어리를 쪼개서 보낸다. (데이터 순서가 매우 중요)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터 양은 많은데 조금이라도 보여지고 싶을 때 사용 content-length를 보내면 안 된다. 얼마큼 올지 모르니까&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;/ul&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;일반 정보 헤더&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-01-02 오후 3.03.01.png&quot; data-origin-width=&quot;1266&quot; data-origin-height=&quot;498&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/I8hRb/btrpjyzU439/0egd9SbBK9Ghf4OyHBRBi0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/I8hRb/btrpjyzU439/0egd9SbBK9Ghf4OyHBRBi0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/I8hRb/btrpjyzU439/0egd9SbBK9Ghf4OyHBRBi0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FI8hRb%2FbtrpjyzU439%2F0egd9SbBK9Ghf4OyHBRBi0%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;1266&quot; height=&quot;498&quot; data-filename=&quot;스크린샷 2022-01-02 오후 3.03.01.png&quot; data-origin-width=&quot;1266&quot; data-origin-height=&quot;498&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;특별한 정보 헤더&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-01-02 오후 3.03.38.png&quot; data-origin-width=&quot;1602&quot; data-origin-height=&quot;676&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cPc19i/btrpq8nBcSJ/XOGeCOiK9RMF9o0wJWYTt1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cPc19i/btrpq8nBcSJ/XOGeCOiK9RMF9o0wJWYTt1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cPc19i/btrpq8nBcSJ/XOGeCOiK9RMF9o0wJWYTt1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcPc19i%2Fbtrpq8nBcSJ%2FXOGeCOiK9RMF9o0wJWYTt1%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;1602&quot; height=&quot;676&quot; data-filename=&quot;스크린샷 2022-01-02 오후 3.03.38.png&quot; data-origin-width=&quot;1602&quot; data-origin-height=&quot;676&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ip 통신의 문제점 중 하나로 ip주소만 가지고 통신을 하면 서버에서 여러 애플리케이션이 돌아가고 있다고 가정하면 해당 요청이 이 중 어느 애플리케이션에 관한 건지 알 수 있는 방법이 없었음. 그래서 서버에서 구동 중인 애플리케이션 호스트 주소도 함께 요청에 담아 보내도록 함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞선 헤더들은 선택 헤더들이 많았는데 &lt;span style=&quot;color: #ee2323;&quot;&gt;이건 필수&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-01-02 오후 3.07.17.png&quot; data-origin-width=&quot;1762&quot; data-origin-height=&quot;802&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/I898D/btrpwPNScC9/ixFzprMQSwKI1wdydNh9XK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/I898D/btrpwPNScC9/ixFzprMQSwKI1wdydNh9XK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/I898D/btrpwPNScC9/ixFzprMQSwKI1wdydNh9XK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FI898D%2FbtrpwPNScC9%2FixFzprMQSwKI1wdydNh9XK%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;1762&quot; height=&quot;802&quot; data-filename=&quot;스크린샷 2022-01-02 오후 3.07.17.png&quot; data-origin-width=&quot;1762&quot; data-origin-height=&quot;802&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-01-02 오후 3.07.29.png&quot; data-origin-width=&quot;1350&quot; data-origin-height=&quot;478&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bau3k6/btrptgTgd2C/g29qyQeQSkf3RPGDuXwbm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bau3k6/btrptgTgd2C/g29qyQeQSkf3RPGDuXwbm1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bau3k6/btrptgTgd2C/g29qyQeQSkf3RPGDuXwbm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbau3k6%2FbtrptgTgd2C%2Fg29qyQeQSkf3RPGDuXwbm1%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;1350&quot; height=&quot;478&quot; data-filename=&quot;스크린샷 2022-01-02 오후 3.07.29.png&quot; data-origin-width=&quot;1350&quot; data-origin-height=&quot;478&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-01-02 오후 3.07.40.png&quot; data-origin-width=&quot;1612&quot; data-origin-height=&quot;610&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxVbW9/btrpthLoWT7/7AUp7mmkczKqbnmIajk7UK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxVbW9/btrpthLoWT7/7AUp7mmkczKqbnmIajk7UK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxVbW9/btrpthLoWT7/7AUp7mmkczKqbnmIajk7UK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxVbW9%2FbtrpthLoWT7%2F7AUp7mmkczKqbnmIajk7UK%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;1612&quot; height=&quot;610&quot; data-filename=&quot;스크린샷 2022-01-02 오후 3.07.40.png&quot; data-origin-width=&quot;1612&quot; data-origin-height=&quot;610&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;blockquote data-ke-style=&quot;style2&quot;&gt;인증&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-01-02 오후 3.10.16.png&quot; data-origin-width=&quot;1288&quot; data-origin-height=&quot;478&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c6Zgi2/btrpxx0ikqC/dwksn7IkY4qjtyFH8YdnU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c6Zgi2/btrpxx0ikqC/dwksn7IkY4qjtyFH8YdnU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c6Zgi2/btrpxx0ikqC/dwksn7IkY4qjtyFH8YdnU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc6Zgi2%2Fbtrpxx0ikqC%2Fdwksn7IkY4qjtyFH8YdnU0%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;1288&quot; height=&quot;478&quot; data-filename=&quot;스크린샷 2022-01-02 오후 3.10.16.png&quot; data-origin-width=&quot;1288&quot; data-origin-height=&quot;478&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;www-Authenticate 헤더는 401 응답과 함께 보내주는 데이터로 어떠한 방식으로 인증 정보를 갖추라는 것을 알려준다.&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;blockquote data-ke-style=&quot;style2&quot;&gt;쿠키&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-01-02 오후 3.11.50.png&quot; data-origin-width=&quot;1720&quot; data-origin-height=&quot;474&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/T9XPD/btrpwQlJvhz/JCxg6qRBdtAskb22kZKefK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/T9XPD/btrpwQlJvhz/JCxg6qRBdtAskb22kZKefK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/T9XPD/btrpwQlJvhz/JCxg6qRBdtAskb22kZKefK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FT9XPD%2FbtrpwQlJvhz%2FJCxg6qRBdtAskb22kZKefK%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;1720&quot; height=&quot;474&quot; data-filename=&quot;스크린샷 2022-01-02 오후 3.11.50.png&quot; data-origin-width=&quot;1720&quot; data-origin-height=&quot;474&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쿠키는 http의 비연결성 지향을 보완할 수 있는 수단 중 하나이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-01-02 오후 3.12.52.png&quot; data-origin-width=&quot;1360&quot; data-origin-height=&quot;696&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/difnLa/btrpwOuF2jP/L968RxyzkznthC7LLgeibK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/difnLa/btrpwOuF2jP/L968RxyzkznthC7LLgeibK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/difnLa/btrpwOuF2jP/L968RxyzkznthC7LLgeibK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdifnLa%2FbtrpwOuF2jP%2FL968RxyzkznthC7LLgeibK%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;1360&quot; height=&quot;696&quot; data-filename=&quot;스크린샷 2022-01-02 오후 3.12.52.png&quot; data-origin-width=&quot;1360&quot; data-origin-height=&quot;696&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;&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;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-01-02 오후 3.14.30.png&quot; data-origin-width=&quot;1118&quot; data-origin-height=&quot;840&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c3R50y/btrpu2mbmr3/9pjap1tti7Wdq9gkz2Sizk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c3R50y/btrpu2mbmr3/9pjap1tti7Wdq9gkz2Sizk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c3R50y/btrpu2mbmr3/9pjap1tti7Wdq9gkz2Sizk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc3R50y%2Fbtrpu2mbmr3%2F9pjap1tti7Wdq9gkz2Sizk%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;1118&quot; height=&quot;840&quot; data-filename=&quot;스크린샷 2022-01-02 오후 3.14.30.png&quot; data-origin-width=&quot;1118&quot; data-origin-height=&quot;840&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;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;스크린샷 2022-01-02 오후 3.15.34.png&quot; data-origin-width=&quot;1648&quot; data-origin-height=&quot;948&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bS3eUA/btrpD1T3yOz/uDf2Sn0jthbpgQRzviGWdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bS3eUA/btrpD1T3yOz/uDf2Sn0jthbpgQRzviGWdK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bS3eUA/btrpD1T3yOz/uDf2Sn0jthbpgQRzviGWdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbS3eUA%2FbtrpD1T3yOz%2FuDf2Sn0jthbpgQRzviGWdK%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;1648&quot; height=&quot;948&quot; data-filename=&quot;스크린샷 2022-01-02 오후 3.15.34.png&quot; data-origin-width=&quot;1648&quot; data-origin-height=&quot;948&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;응답에 Set-Cookie라는 헤더에 데이터를 담아서 보내면 클라이언트 측에서 쿠키 저장소에 해당 데이터를 저장한다.&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;스크린샷 2022-01-02 오후 3.17.03.png&quot; data-origin-width=&quot;1610&quot; data-origin-height=&quot;860&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/coVJf1/btrpzKFiqqF/b56qqH2x4seDe3uAncOkXk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/coVJf1/btrpzKFiqqF/b56qqH2x4seDe3uAncOkXk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/coVJf1/btrpzKFiqqF/b56qqH2x4seDe3uAncOkXk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcoVJf1%2FbtrpzKFiqqF%2Fb56qqH2x4seDe3uAncOkXk%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;1610&quot; height=&quot;860&quot; data-filename=&quot;스크린샷 2022-01-02 오후 3.17.03.png&quot; data-origin-width=&quot;1610&quot; data-origin-height=&quot;860&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;
&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;만약에 서버에 요청을 보낼 필요까진 없고 클라이언트 측에서만 확인하고 싶다 하면 web-storage, session-storage 등을 사용한다.&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-filename=&quot;스크린샷 2022-01-02 오후 3.19.43.png&quot; data-origin-width=&quot;1364&quot; data-origin-height=&quot;896&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cb4aqV/btrpthLpifp/Rv0WcKDcQ9yKA0tQN5yY41/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cb4aqV/btrpthLpifp/Rv0WcKDcQ9yKA0tQN5yY41/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cb4aqV/btrpthLpifp/Rv0WcKDcQ9yKA0tQN5yY41/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcb4aqV%2FbtrpthLpifp%2FRv0WcKDcQ9yKA0tQN5yY41%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;1364&quot; height=&quot;896&quot; data-filename=&quot;스크린샷 2022-01-02 오후 3.19.43.png&quot; data-origin-width=&quot;1364&quot; data-origin-height=&quot;896&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;
&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;u&gt;도메인, 경로, 보안&lt;/u&gt;에 대한 정보들을 명시할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>공부/HTTP</category>
      <category>http</category>
      <category>http보안</category>
      <category>http인증</category>
      <category>http쿠키</category>
      <category>HTTP헤더</category>
      <category>표현</category>
      <category>표현데이터</category>
      <category>헤더</category>
      <category>협상</category>
      <author>jihyee</author>
      <guid isPermaLink="true">https://jihyee.tistory.com/18</guid>
      <comments>https://jihyee.tistory.com/18#entry18comment</comments>
      <pubDate>Sun, 2 Jan 2022 15:27:53 +0900</pubDate>
    </item>
    <item>
      <title>[React] 자바스크립트 리액트 이벤트 리스너</title>
      <link>https://jihyee.tistory.com/17</link>
      <description>&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;span style=&quot;color: #8a3db6;&quot;&gt;이벤트 리스너&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;갠 적으로 이 이름 맘에 든다&amp;nbsp; &amp;nbsp; ᵔࡇᵔ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제일 많이 사용하는 이벤트 리스너 중 하나인 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;onClick&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;onClick은 해당 태그를 사용자가 &lt;span style=&quot;color: #8a3db6;&quot;&gt;클릭&lt;/span&gt;했을 때 이벤트 리스너와 연결된 일을 수행하게 해 준다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;말고도 마우스 관련해서만 이벤트 리스너가 아래와 같이 많다.&lt;/p&gt;
&lt;pre class=&quot;html xml&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;onClick onContextMenu onDoubleClick onDrag onDragEnd onDragEnter onDragExit
onDragLeave onDragOver onDragStart onDrop onMouseDown onMouseEnter onMouseLeave
onMouseMove onMouseOut onMouseOver onMouseUp&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://ko.reactjs.org/docs/events.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://ko.reactjs.org/docs/events.html&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1640896303337&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;합성 이벤트(SyntheticEvent) &amp;ndash; React&quot; data-og-description=&quot;A JavaScript library for building user interfaces&quot; data-og-host=&quot;ko.reactjs.org&quot; data-og-source-url=&quot;https://ko.reactjs.org/docs/events.html&quot; data-og-url=&quot;https://ko.reactjs.org/docs/events.html&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/t8dN1/hyMTQC0EEA/8iBRn1HaeOLhK0juZRiI4K/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://ko.reactjs.org/docs/events.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ko.reactjs.org/docs/events.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/t8dN1/hyMTQC0EEA/8iBRn1HaeOLhK0juZRiI4K/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;합성 이벤트(SyntheticEvent) &amp;ndash; React&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A JavaScript library for building user interfaces&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;ko.reactjs.org&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이벤트 리스너도 클래스형과 함수형으로 나뉘는데 맨날 함수형만 써서 함수형을 설명하면 (코드가 간결하고 바인드 안 해도 돼서 맨날 함수형만 쓰는데 클래스형이랑 함수형 정확히 어떻게 다른지 공부해봐야겠다&amp;nbsp; ٩(&amp;nbsp;*˙0˙*)۶)&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;blockquote data-ke-style=&quot;style2&quot;&gt;리액트 함수형 컴포넌트에서 이벤트 리스너 등록하기&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1640896996464&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const handle{무언가} = (e) =&amp;gt; {
    e.preventDefault();
    {처리할 무언가}
  };


&amp;lt;div&amp;gt;
  &amp;lt;img
    onClick={handle{무언가}}
  /&amp;gt;
  &amp;lt;div&amp;gt;확인&amp;lt;/div&amp;gt;
 &amp;lt;/div&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;html 태그 내에 onClick 이벤트 리스너를 넣고 jsx 문법 {} 안에 클릭했을 때 실행할 함수를 넣어주면 된다.&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;&amp;nbsp;&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;/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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1640897178643&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;div&amp;gt;
  &amp;lt;img
    onClick={(e) =&amp;gt; {
      e.preventDefault();
      {처리할 무언가}
    }
  /&amp;gt;
  &amp;lt;div&amp;gt;확인&amp;lt;/div&amp;gt;
 &amp;lt;/div&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;/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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&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;html 코드 내에서 for 같은 조건문 쓰는 경우에 onClick 이벤트에서 함수에 파라미터 전달해야 하는 경우가 있다.&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;pre id=&quot;code_1640897859763&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const clickHandler = (params, e) =&amp;gt; {
  console.log(params); // error
  e.preventDefault();
  // do someting...
}

return (
	&amp;lt;button onClick={(e)=&amp;gt;{clickHandler(params, e)}}&amp;gt; Do Something!&amp;lt;/button&amp;gt;
)&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;&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;pre id=&quot;code_1640898776271&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const clickHandler = (params, e) =&amp;gt; {
  console.log(params); // error
  e.preventDefault();
  // do someting...
}

return (
	&amp;lt;button onClick={clickHandler(params, e)}&amp;gt; Do Something!&amp;lt;/button&amp;gt;
)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;props 함수 이벤트 리스너 등록하기&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모달 구현할 때 하위 컴포넌트 이벤트 리스너를 props로 상위 컴포넌트의 함수 변수와 연결해서 사용하는 경우가 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1640898129282&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import React from 'react';


const Modal2 = (props) =&amp;gt; {
    const { open, close, header } = props;
    return (
        &amp;lt;div className={open ? 'openModal modal' : 'modal'}&amp;gt;
            {open ? (
                &amp;lt;section&amp;gt;
                    &amp;lt;main&amp;gt;
                        {props.children}
                    &amp;lt;/main&amp;gt;
                    &amp;lt;footer&amp;gt;
                        &amp;lt;button className=&quot;close&quot; onClick={close}&amp;gt; 확인 &amp;lt;/button&amp;gt;
                    &amp;lt;/footer&amp;gt;
                &amp;lt;/section&amp;gt;
            ) : null}
        &amp;lt;/div&amp;gt;
    )
}

export default Modal2;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;onClick으로 연결된 close는 props로 연결되어 있으니까 클릭하면 상위 컴포넌트에 작성되어 있는 close 함수가 실행될 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>공부/React</category>
      <category>onclick</category>
      <category>Props</category>
      <category>REACT</category>
      <category>리액트</category>
      <category>이벤트리스너</category>
      <author>jihyee</author>
      <guid isPermaLink="true">https://jihyee.tistory.com/17</guid>
      <comments>https://jihyee.tistory.com/17#entry17comment</comments>
      <pubDate>Fri, 31 Dec 2021 06:13:57 +0900</pubDate>
    </item>
    <item>
      <title>[PaaS-TA] PaaS-TA 서비스를 통해 node.js 기반 프로젝트 배포하기</title>
      <link>https://jihyee.tistory.com/16</link>
      <description>&lt;figure id=&quot;og_1640668158697&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;PaaS-TA&quot; data-og-description=&quot;파스-타 도입 전 미리 파스-타를 체험하실 수 있도록 체험 서비스를 제공하고 있습니다.&quot; data-og-host=&quot;paas-ta.kr&quot; data-og-source-url=&quot;https://paas-ta.kr/&quot; data-og-url=&quot;https://paas-ta.kr/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://paas-ta.kr/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://paas-ta.kr/&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;PaaS-TA&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;paas-ta.kr&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;p data-ke-size=&quot;size16&quot;&gt;배포하면 떠오르는 플랫폼이 aws, naver cloud platform, gcp 정도인 것 같은데 이번에 동아리 프로젝트로 공모전을 알아보면서 paas-ta 라는 개방형 클라우드 플랫폼을 알게 됐다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;aws 배포 경험이 있고 naver cloud에 적용할 때도 프로세스는 거의 일치해서 어려움 없이 배포할 수 있겠다 생각했고 무턱대고 도전..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;결과는 ...&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; 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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;߹ ߹&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;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;타 클라우드 플랫폼 서비스에 비해 paas-ta &lt;u&gt;사용이 어려웠던 이유&lt;/u&gt;를 고르자면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;자료가 정말 없다..&lt;br /&gt;&lt;br /&gt;그냥 paas-ta 자체 제공 자료만 있다고 생각하면 돼서 구글링 불가...&lt;br /&gt;&lt;br /&gt;어찌나 자료가 없는지 이미 배포 경험이 있는 분 깃헙에서 리드미 읽어보고 코드 읽어보고 직접 연락해보고..&lt;br /&gt;물론 자료가 무조건 있어야 하는건 아니지만 paas 서비스라 하란대로 해야하는데 .. 어려웠다..&amp;nbsp;&lt;br /&gt;마지막엔 기도하면서 코드 쳤던 것 같다..&lt;br /&gt;&lt;br /&gt;반면에 aws 나 gcp나 네이버나 워낙 자료가 많아서 거의 블로그 글 따라만 해도 1시간 안에 배포가 가능했다는 차이가 있는 것 같다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;자료 업데이트&lt;br /&gt;&lt;br /&gt;그래도 겨우 겨우 찾은 가이드로 따라하다 보면 중간에 막히는 부분이 분명 있다.&lt;br /&gt;묻고 답하기 들어가 보면 나와 같은 어려움을 겪는 사람들의 글이 있는데 버전별로 가이드를 업데이트하고 있는 건 같은데&lt;br /&gt;중간 중간 빠진 부분이 있는 것 같다...&amp;nbsp;&lt;br /&gt;&lt;br /&gt;기도하면서 따라하는데 중간에 막혀서 진짜 울고 싶었을 때가 한 두번이 아닌데 이 부분들은 묻고 답하기에서 답변만 달아주는게 아니라 자료를 업데이트 해줬으면 좋겠다...&lt;br /&gt;&lt;br /&gt;특히 교육 영상 자료 보고 따라하시는 분들..! 중간에 막히면 혼자 해결하려 하지 마시고 홈페이지 묻고 답하기 먼저 들어가보세요..&amp;nbsp;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여튼 이런 문제들이 있지만 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;paas 기반&lt;/span&gt;인 만큼 설정만 제대로 하면 다른 클라우드 서버 플랫폼보다 &lt;u&gt;훨씬 간단하게&lt;/u&gt; 어플리케이션을 배포할 수 있다는 장점이 있다. 아래 과정 보시면 느끼시겠지만 서버 구축하고 어플리케이션을 서버 내에서 직접 구동해야하는 것과 다르게 어플리케이션 푸시만 하면 자동으로 알아서 다 해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;paas-ta 기반 어플리케이션 배포 방법 with 플레이파크&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;위와 같은 어려움을 집착으로 해결한 배포 방법을 설명해보겠다. ..&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;u&gt;플레이 파크&lt;/u&gt;를 사용했고 &lt;u&gt;맥북 기준&lt;/u&gt; 배포할 어플리케이션은 &lt;u&gt;node.js 기반&lt;/u&gt;이고 데이터베이스는 &lt;u&gt;mysql&lt;/u&gt;을 사용했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;플레이파크 로그인&lt;/b&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;&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;&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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이제 어플리케이션 배포를 해야하는데 배포하는 방법 중 내가 찾은 방법은 cf cli 를 이용하는 것이다.&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;b&gt;cf cli 설치&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1640669763013&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;brew install cloudfoundry/tap/cf-cli&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;b&gt;cf cli 로 플레이파크 서비스 로그인&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;pre id=&quot;code_1640669847600&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cf login -a API-URL -u USERNAME -p PASSWORD -o ORG -s SPACE&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;1304&quot; data-origin-height=&quot;718&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/txzQH/btrpaInxaGV/1dIbaRdZIpK9Bkgv7SJMDK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/txzQH/btrpaInxaGV/1dIbaRdZIpK9Bkgv7SJMDK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/txzQH/btrpaInxaGV/1dIbaRdZIpK9Bkgv7SJMDK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtxzQH%2FbtrpaInxaGV%2F1dIbaRdZIpK9Bkgv7SJMDK%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;330&quot; data-origin-width=&quot;1304&quot; data-origin-height=&quot;718&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로그인하면 Authentication ... ok와 함께 로그인한 계정에 대한 정보가 나오면 해당 계정과 조직으로 잘 로그인 된 것이다.&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;&lt;b&gt;어플리케이션 manifest.yml 파일 설정&lt;/b&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;cf-cli 로 어플리케이션을 배포하려면 설정 파일이 하나 필요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;배포할 어플리케이션 폴더에 manifest.yml 파일을 하나 만들고 내용을 아래와 같이 채운다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1640670678635&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;---
applications:
  - name: {배포할 어플리케이션 이름}
    memory: 2000M
    instances: 1
    command: {어플리케이션 실행 방식 ex) npm run serve}
    path: ./&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;이려면 ./ 위치의 파일을 name 이름으로 memory instance command 방식으로 배포하겠단 뜻이다.&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;다른건 괜찮은데 command 는 꼭 package.json 에 명시된 어플리케이션 실행 명령어로 잘 맞춰줘야 한다.&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;&lt;b&gt;어플리케이션 푸시&lt;/b&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;manifest.yml 설정도 마치면 이제 paas 플레이 파크에 어플리케이션을 푸시해주면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1640670392804&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cf push APP-NAME&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;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1286&quot; data-origin-height=&quot;896&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d55oUZ/btro8wASOtw/ru41EmKel9XwFS1kJFgyw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d55oUZ/btro8wASOtw/ru41EmKel9XwFS1kJFgyw1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d55oUZ/btro8wASOtw/ru41EmKel9XwFS1kJFgyw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd55oUZ%2Fbtro8wASOtw%2Fru41EmKel9XwFS1kJFgyw1%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;418&quot; data-origin-width=&quot;1286&quot; data-origin-height=&quot;896&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이와 같은 하면이 나오고 아래 state 에 running 까지 제대로 뜨면 베포가 완료된 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(여긴 빌드팩 명시했는데 난 명시하지 않았다. 자동으로 node 기반 어플리케이션으로 배포됐던 것 같다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&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;저 running 을 보고 울뻔했다&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://docs.cloudfoundry.org/cf-cli/getting-started.html#overview&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://docs.cloudfoundry.org/cf-cli/getting-started.html#overview&lt;/a&gt;&lt;/p&gt;
&lt;p 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;/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;/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;&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;&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;paas-ta 플레이파크는 대신 상업적인 이유로 어플리케이션 배포는 불가능한 것 같다. 그냥 paas-ta 서비스를 한번 경험해보고 배포해보고 싶다는 분들에게 추천한다!&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;&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;&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;</description>
      <category>공부/Server</category>
      <category>aws</category>
      <category>gcp</category>
      <category>paas-ta</category>
      <category>paas-ta 배포</category>
      <category>paas-ta 배포하기</category>
      <category>배포</category>
      <category>파스타</category>
      <category>파스타서비스</category>
      <author>jihyee</author>
      <guid isPermaLink="true">https://jihyee.tistory.com/16</guid>
      <comments>https://jihyee.tistory.com/16#entry16comment</comments>
      <pubDate>Tue, 28 Dec 2021 15:07:55 +0900</pubDate>
    </item>
    <item>
      <title>[Spring Boot] Service 계층과 DTO 존재 이유에 대한 생각</title>
      <link>https://jihyee.tistory.com/14</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;공부할수록 어려운 스프링..&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그래도 쉬운 것보단 어려운 게 공부가 되겠지..,,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;٩(&amp;nbsp;&amp;ouml;̆&amp;nbsp;)و&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;node.js 랑 비교했을 때 spring boot 가 말도 안 되게 CRUD 짜는 게 복잡하다..&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: center;&quot; data-ke-size=&quot;size16&quot;&gt;스프링 부트 : controller - entity - service - repositoy&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;노드 : model - route&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;class 만 몇 개를 만드는 건지..&lt;/s&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;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이런 생각을 했던 이유 중 하나는 스프링 부트를 처음 공부했던 몰캠 시절에 service는 도대체 왜 있냐는 팀원의 질문이 생각나서기도 하다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그땐 spring boot 가 뭔지도 몰랐던 때라 아마 사용자 입장에서 메서드 편하게 불러오려는 거 아닐까 라는 ... 대답을 ..&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;(&amp;nbsp;⚆&amp;nbsp;_&amp;nbsp;⚆&amp;nbsp;)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;참 미안하게 생각한다&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;&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: center;&quot; data-ke-size=&quot;size16&quot;&gt;그때 생각도 나고,,&amp;nbsp; 왜 때문일까 고민하다가 serivce를 없애고 controller에서 바로 repository에 접근하는 방식으로 코드를 고쳐봤다. 즉 프레젠테이션 계층에서 데이터 액세스 계층으로 직접 접근하는 방식으로 코드를 고쳐봤다. 당연히 dto도 안 쓰고 service autowired도 안 걸어도 되는 형태이다.&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;&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: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;절대 안 되겠지만&lt;/s&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;pre id=&quot;code_1636737067400&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@GetMapping()
public ApiResponse getLoginUser(@RequestParam String token) {

  UserRefreshToken byRefreshToken = userRefreshTokenRepository.findByRefreshToken(token);

  User byUserId = userRepository.findByUserId(byRefreshToken.getUserId());

  return ApiResponse.success(&quot;user&quot;, byUserId);
}&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;이렇게 하면 controller - entity - repository 만 있는 아주 깔끔한 상태가 된다.&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;u&gt;사실 작동하지도 않고 좋은 코드도 아니다.&lt;/u&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;&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;&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;&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;/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;&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;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;DAO vs DTO 차이를 이해해야 한다.&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;DAO는 &lt;u&gt;Data Access Object의&lt;/u&gt; 약자로 생성한 entity라고 생각하면 된다. 스프링 부트의 entity 형태를 코드로 보면&lt;/p&gt;
&lt;pre id=&quot;code_1639756576656&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = &quot;USER&quot;)
public class User {
    @JsonIgnore
    @Id
    @Column(name = &quot;USER_SEQ&quot;)
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long userSeq;

    @Column(name = &quot;USER_ID&quot;, length = 64, unique = true)
    @NotNull
    @Size(max = 64)
    private String userId;

    @Column(name = &quot;USERNAME&quot;, length = 100)
    @NotNull
    @Size(max = 100)
    private String username;

    @JsonIgnore
    @Column(name = &quot;PASSWORD&quot;, length = 128)
    @NotNull
    @Size(max = 128)
    private String password;

    @Column(name = &quot;EMAIL&quot;, length = 512, unique = true)
    @NotNull
    @Size(max = 512)
    private String email;

    @Column(name = &quot;EMAIL_VERIFIED_YN&quot;, length = 1)
    @NotNull
    @Size(min = 1, max = 1)
    private String emailVerifiedYn;

    @Column(name = &quot;PROFILE_IMAGE_URL&quot;, length = 512)
    @NotNull
    @Size(max = 512)
    private String profileImageUrl;

    @Column(name = &quot;PROVIDER_TYPE&quot;, length = 20)
    @Enumerated(EnumType.STRING)
    @NotNull
    private ProviderType providerType;

    @Column(name = &quot;IMAGE&quot;, length = 512)
    @NotNull
    @Size(max = 512)
    private String image;

    @Column(name = &quot;USER_INFO&quot;, length = 512)
    @NotNull
    @Size(max = 512)
    private String userInfo;

    @Column(name = &quot;ROLE_TYPE&quot;, length = 20)
    @Enumerated(EnumType.STRING)
    @NotNull
    private RoleType roleType;

    @Column(name = &quot;CREATED_AT&quot;)
    @NotNull
    private LocalDateTime createdAt;

    @Column(name = &quot;MODIFIED_AT&quot;)
    @NotNull
    private LocalDateTime modifiedAt;

    @OneToMany(mappedBy = &quot;joinUser&quot;)
    private List&amp;lt;Join&amp;gt; userJoins;

    @OneToMany(mappedBy = &quot;replyUser&quot;)
    private List&amp;lt;Reply&amp;gt; userReplys;
}&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;이와 같은데 repository에서 내장 메서드 써서 불러온 객체는 이런 상태로 저장되고 이게 DAO이다.&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;만약 이 DAO를 가지고 계층을 거치면서 데이터를 수정하고 사용하면 연관 관계 매핑 때문에 아마 코드 돌리면 양방향 연결 관계있으면 재귀로 계속 서로를 호출하고 있을 거다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;rarr; DAO는 &lt;span style=&quot;color: #000000;&quot;&gt;Persistent 만을 위해서 사용한다.&lt;/span&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;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;※ 즉 DB 랑 연결되어서 도메인 entity로 받아온 데이터인 DAO는 계층을 거치면서 사용하면 절대 안 된다※&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;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이런 DAO를 대신해서 데이터를 들고 다니려고 만드는 게 바로 DTO이며 &lt;u&gt;Data Transfer Object의&lt;/u&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;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;Transfer 이랑 Access의 차이가 결국 DAO 랑 DTO의 차이라고 생각하면 된다.&lt;/span&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;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1639757208200&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Data
public class UserDto {
    private Long userSeq;

    private String username;

    private String password;

    private String email;

    private String emailVerifiedYn;

    private String profileImageUrl;

    private ProviderType providerType;

    private String image;

    private String userInfo;

    private RoleType roleType;

    private LocalDateTime createdAt;

    private LocalDateTime modifiedAt;

    private List&amp;lt;Join&amp;gt; userJoins;
}&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;위 DAO에서 봤던 entity 랑은 다른 형태이다. 이름처럼 계층 간의 데이터 전달 목적으로만 사용되는 객체이기 때문에 사용되는 변수만 잘 연결해서 복사해준다고 생각하면 된다.&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;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;DAO 직접 들고 다니지 말자 DTO로 바꿔서 들고 다니자&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;&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;2. 프레젠테이션 계층 즉 controller에서 비즈니스 로직을 명시하는 것은 좋지 않다.&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;비즈니스 로직은 다른 요청 URL에서 사용해야 하는 경우가 있다. 만약 비즈니스 로직 코드가 컨트롤러에 구현되어 있는 경우, 다른 컨트롤러의 핸들러 메서드에서 똑같은 로직 코드를 구현해야 하니 &lt;span style=&quot;color: #ee2323;&quot;&gt;중복 코드&lt;/span&gt;가&lt;span&gt;&amp;nbsp;&lt;/span&gt;발생하고&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;재사용성&lt;/span&gt;이&lt;span&gt;&amp;nbsp;&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;위의 예시는 그냥 repo에서 조회하는 로직이 전부였지만 (한 줄) 만약 이 로직이 굉장히 복잡하고 긴 코드로 되어있다고 가정하면 이 비즈니스 로직을 필요로 하는 다른 요청이 있는 경우 그것 또 controller에서 다시 작성해줘야한다. 근데 이걸 service 계층으로 분리를 하면 service 에서 해당 비즈니스 로직을 가져다 사용하면 되기 때문에 코드를 중복으로 작성할 필요없이 재사용이 가능하다.&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;b&gt;결론&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비즈니스 로직을 controller 에서 직접 작성하는 게 아니라 service 계층을 따로 두어 모듈화를 하자&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;&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;</description>
      <category>공부/Spring Boot</category>
      <category>controller</category>
      <category>dao</category>
      <category>dto</category>
      <category>dto dao 차이</category>
      <category>service</category>
      <category>spring MVC</category>
      <category>SpringBoot</category>
      <category>스프링부트</category>
      <author>jihyee</author>
      <guid isPermaLink="true">https://jihyee.tistory.com/14</guid>
      <comments>https://jihyee.tistory.com/14#entry14comment</comments>
      <pubDate>Sat, 18 Dec 2021 01:28:11 +0900</pubDate>
    </item>
    <item>
      <title>HTTP 웹 기본 지식 ③ HTTP 메세지 &amp;amp; HTTP 메소드</title>
      <link>https://jihyee.tistory.com/13</link>
      <description>&lt;figure id=&quot;og_1639162355883&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;모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의&quot; data-og-description=&quot;실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., 웹 기술을 사용하는 개발자라면 누구나 OK!꼭 필요한 HTTP의 핵심을 알려드립니다.   확인해주세요!본 강의는 자바 스&quot; data-og-host=&quot;www.inflearn.com&quot; data-og-source-url=&quot;https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC&quot; data-og-url=&quot;https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bwhKJu/hyMFNxVAxt/EsDTYkrg5kKEs2M9Ts9RO1/img.jpg?width=768&amp;amp;height=500&amp;amp;face=0_0_768_500,https://scrap.kakaocdn.net/dn/eL2ZTA/hyMFFNqEBK/SNWT8jQg8kHPgw084Kpt7k/img.jpg?width=768&amp;amp;height=500&amp;amp;face=0_0_768_500,https://scrap.kakaocdn.net/dn/bL5nHv/hyMERvajWk/BkG2tL0uCdkvEkMJ5TYxyK/img.jpg?width=1200&amp;amp;height=666&amp;amp;face=0_0_1200_666&quot;&gt;&lt;a href=&quot;https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bwhKJu/hyMFNxVAxt/EsDTYkrg5kKEs2M9Ts9RO1/img.jpg?width=768&amp;amp;height=500&amp;amp;face=0_0_768_500,https://scrap.kakaocdn.net/dn/eL2ZTA/hyMFFNqEBK/SNWT8jQg8kHPgw084Kpt7k/img.jpg?width=768&amp;amp;height=500&amp;amp;face=0_0_768_500,https://scrap.kakaocdn.net/dn/bL5nHv/hyMERvajWk/BkG2tL0uCdkvEkMJ5TYxyK/img.jpg?width=1200&amp;amp;height=666&amp;amp;face=0_0_1200_666');&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;모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., 웹 기술을 사용하는 개발자라면 누구나 OK!꼭 필요한 HTTP의 핵심을 알려드립니다.   확인해주세요!본 강의는 자바 스&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.inflearn.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;위 강의를 통해 공부한 내용을 정리함&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&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;blockquote data-ke-style=&quot;style2&quot;&gt;HTTP 헤더&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HTTP 통신에서 모든 데이터는 HTTP 메세지로 담겨서 보내지며 이런 HTTP 메세지는 프로토콜이니 당연히 정해진 규칙이 있음.&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;336&quot; data-origin-height=&quot;405&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/p66EG/btrnBXfULUs/r0tEhlbFsM6XKC7HkwAbnK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/p66EG/btrnBXfULUs/r0tEhlbFsM6XKC7HkwAbnK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/p66EG/btrnBXfULUs/r0tEhlbFsM6XKC7HkwAbnK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fp66EG%2FbtrnBXfULUs%2Fr0tEhlbFsM6XKC7HkwAbnK%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;336&quot; height=&quot;405&quot; data-origin-width=&quot;336&quot; data-origin-height=&quot;405&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;754&quot; data-origin-height=&quot;412&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/B8pTl/btrnC2HM3VF/u6lrGEouNgbDdhCGJ7sOo0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/B8pTl/btrnC2HM3VF/u6lrGEouNgbDdhCGJ7sOo0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/B8pTl/btrnC2HM3VF/u6lrGEouNgbDdhCGJ7sOo0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FB8pTl%2FbtrnC2HM3VF%2Fu6lrGEouNgbDdhCGJ7sOo0%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;754&quot; height=&quot;412&quot; data-origin-width=&quot;754&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;시작 라인&amp;nbsp;&lt;/b&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;요청시에는 요청 메소드, 요청 대상, HTTP 버전&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;응답시에는 HTTP 버전, 상태 코드&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HTTP 전송에 필요한 부가 정보들에 대한 정보! (메세지 바디에 대한 정보, 인증, 압축, 캐시 등등...)&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;말 그대로 주고 받는 메세지 그 자체&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이 규칙대로 담고, 이 규칙대로 풀어서 메세지를 주고 받는 것이 HTTP 통신!&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;좋은 API URI 설계&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;좋은 API URI 설계란?&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: #c1bef9;&quot;&gt;&lt;b&gt;리소스 식별&lt;/b&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;URL 짤 때 메소드를 기준으로 하면 절대 &amp;times; 무조건 리소스를 기준으로 해야하고 리소스는 간단하게 설명하면 테이블이라고 할 수 있다.&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 를 짠다고 가정하면 회원 정보를 가져오고, 수정하고, 삭제하고 이 모든걸 URI 로 나누면 안된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 중요한건 &lt;u&gt;&lt;b&gt;회원&lt;/b&gt; 그 자체&lt;/u&gt; 아마 짜면 /api/members 이런 식으로 짜고 각각의 행위는 HTTP 메서드로 나눠주면 된다.&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;741&quot; data-origin-height=&quot;282&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KTzSS/btrnAYtknUM/kymgUtHM9G4kJxCZXoIcFK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KTzSS/btrnAYtknUM/kymgUtHM9G4kJxCZXoIcFK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KTzSS/btrnAYtknUM/kymgUtHM9G4kJxCZXoIcFK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKTzSS%2FbtrnAYtknUM%2FkymgUtHM9G4kJxCZXoIcFK%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;282&quot; data-origin-width=&quot;741&quot; data-origin-height=&quot;282&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;URI 는 이처럼 리소스만 식별하고 행위에 대한 구분은 HTTP 메서드로 해준다.&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;blockquote data-ke-style=&quot;style2&quot;&gt;HTTP 메서드&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;&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;708&quot; data-origin-height=&quot;241&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c1HkaT/btrnAjkgSg2/gwsiDDltQdzGK54LTN7mHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c1HkaT/btrnAjkgSg2/gwsiDDltQdzGK54LTN7mHk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c1HkaT/btrnAjkgSg2/gwsiDDltQdzGK54LTN7mHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc1HkaT%2FbtrnAjkgSg2%2FgwsiDDltQdzGK54LTN7mHk%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;708&quot; height=&quot;241&quot; data-origin-width=&quot;708&quot; data-origin-height=&quot;241&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;GET&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;※ 메세지 바디를 사용할 수 있긴 하지만 지원을 하지 않는 곳이 많아서 GET 요청시 메세지 바디 쓰는 것은 권장하지 않음&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;POST&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;rarr; 만만한게 POST)&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;PUT&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리소스 수정 or 생성&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;PATCH&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;PUT 과 비슷한데 부분 변경한다는 차이가 있다.&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;DELETE&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;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;blockquote data-ke-style=&quot;style2&quot;&gt;HTTP 메서드 속성&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안전 &amp;rarr; 요청이 리소스에 영향을 끼치는지&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;멱등 &amp;rarr; 요청 한 번 한거랑 요청 여러번 한거랑 응답이 같은지 (외부 요인으로 중간에 리소스가 변한 건 제외)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;캐시 가능 &amp;rarr; 거의 GET, HEAD 만 캐싱&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;674&quot; data-origin-height=&quot;284&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cfg3qI/btrnAilfohq/AS6ZGNnkS5pWwiqTYoxWxk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cfg3qI/btrnAilfohq/AS6ZGNnkS5pWwiqTYoxWxk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cfg3qI/btrnAilfohq/AS6ZGNnkS5pWwiqTYoxWxk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcfg3qI%2FbtrnAilfohq%2FAS6ZGNnkS5pWwiqTYoxWxk%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;284&quot; data-origin-width=&quot;674&quot; data-origin-height=&quot;284&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>공부/HTTP</category>
      <category>CRUD</category>
      <category>Get</category>
      <category>http</category>
      <category>HTTP method</category>
      <category>HTTP 메세지</category>
      <category>HTTP메서드속성</category>
      <category>http메소드</category>
      <category>patch</category>
      <category>post</category>
      <category>Put</category>
      <author>jihyee</author>
      <guid isPermaLink="true">https://jihyee.tistory.com/13</guid>
      <comments>https://jihyee.tistory.com/13#entry13comment</comments>
      <pubDate>Sat, 11 Dec 2021 04:30:34 +0900</pubDate>
    </item>
    <item>
      <title>HTTP 웹 기본 지식 ➁ HTTP 특징</title>
      <link>https://jihyee.tistory.com/12</link>
      <description>&lt;figure id=&quot;og_1639160422594&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;모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의&quot; data-og-description=&quot;실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., 웹 기술을 사용하는 개발자라면 누구나 OK!꼭 필요한 HTTP의 핵심을 알려드립니다.   확인해주세요!본 강의는 자바 스&quot; data-og-host=&quot;www.inflearn.com&quot; data-og-source-url=&quot;https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC&quot; data-og-url=&quot;https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bwhKJu/hyMFNxVAxt/EsDTYkrg5kKEs2M9Ts9RO1/img.jpg?width=768&amp;amp;height=500&amp;amp;face=0_0_768_500,https://scrap.kakaocdn.net/dn/eL2ZTA/hyMFFNqEBK/SNWT8jQg8kHPgw084Kpt7k/img.jpg?width=768&amp;amp;height=500&amp;amp;face=0_0_768_500,https://scrap.kakaocdn.net/dn/bL5nHv/hyMERvajWk/BkG2tL0uCdkvEkMJ5TYxyK/img.jpg?width=1200&amp;amp;height=666&amp;amp;face=0_0_1200_666&quot;&gt;&lt;a href=&quot;https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bwhKJu/hyMFNxVAxt/EsDTYkrg5kKEs2M9Ts9RO1/img.jpg?width=768&amp;amp;height=500&amp;amp;face=0_0_768_500,https://scrap.kakaocdn.net/dn/eL2ZTA/hyMFFNqEBK/SNWT8jQg8kHPgw084Kpt7k/img.jpg?width=768&amp;amp;height=500&amp;amp;face=0_0_768_500,https://scrap.kakaocdn.net/dn/bL5nHv/hyMERvajWk/BkG2tL0uCdkvEkMJ5TYxyK/img.jpg?width=1200&amp;amp;height=666&amp;amp;face=0_0_1200_666');&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;모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., 웹 기술을 사용하는 개발자라면 누구나 OK!꼭 필요한 HTTP의 핵심을 알려드립니다.   확인해주세요!본 강의는 자바 스&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.inflearn.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;위 강의를 통해 공부한 내용을 정리함&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&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;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;HTTP&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HyperText Transfer Protocol&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;통신할 때 사용하는 방식 중 원탑&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HTML TEXT IMAGE 음성 영상 파일 JSON XML 거의 모든 형태의 데이터 전송에 쓰임&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버간에 데이터를 주고 받을 때도 거의 HTTP 사용&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: #f6e199;&quot;&gt;&amp;rarr; 지금은 HTTP 시대!&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;HTTP 1.*&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HTTP 2.*&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HTTP 3.*&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;버전이 있는데 사용 기준은 거의 HTTP 1.1 이고 이후 버전들은 성능 위주&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;HTTP 특징&lt;/blockquote&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;/li&gt;
&lt;li&gt;무상태 프로토콜 (비연결성)&lt;/li&gt;
&lt;li&gt;HTTP 메세지&lt;/li&gt;
&lt;li&gt;단순함 확장 가능&lt;/li&gt;
&lt;/ul&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;p data-ke-size=&quot;size16&quot;&gt;request 랑 response 를 구분해서 클라이언트와 서버가 각각 통신에 제약없이 독립적으로 진화할 수 있음&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;stateful (상태 유지) vs stateless (상태 비유지)&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/cqlRdo/btrnCms0LoK/5x55tgyf9yhP6pkTk1AfiK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cqlRdo/btrnCms0LoK/5x55tgyf9yhP6pkTk1AfiK/img.png&quot; data-origin-width=&quot;531&quot; data-origin-height=&quot;296&quot; style=&quot;width: 45.8333%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cqlRdo/btrnCms0LoK/5x55tgyf9yhP6pkTk1AfiK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcqlRdo%2FbtrnCms0LoK%2F5x55tgyf9yhP6pkTk1AfiK%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;531&quot; height=&quot;296&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9CubE/btrnDHpRnBz/sDy0wDKIPrHCABKYUfQeEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9CubE/btrnDHpRnBz/sDy0wDKIPrHCABKYUfQeEK/img.png&quot; data-origin-width=&quot;612&quot; data-origin-height=&quot;295&quot; style=&quot;width: 53.0039%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9CubE/btrnDHpRnBz/sDy0wDKIPrHCABKYUfQeEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9CubE%2FbtrnDHpRnBz%2FsDy0wDKIPrHCABKYUfQeEK%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;295&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클라이언트가 준 정보 (상태) 를 서버가 저장하고 있으면 &amp;rarr; stateful&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클라이언트가 준 정보 (상태) 를 서버가 저장하지 않으면 &amp;rarr; stateless&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;&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;table style=&quot;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 style=&quot;width: 33.3333%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;상태 유지&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;상태 비유지&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;장점&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;요청 간결&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;서버 활용 + 확장성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;단점&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;서버 한정&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;요청 복잡 + 약한 연결 보장&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HTTP 는 이런 상태 유지, 상태 비유지 중에 &lt;b&gt;상태 유지 &lt;/b&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/IP (3-way handshake + persistent connections)로 보완을 한다.&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;431&quot; data-origin-height=&quot;327&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOkeho/btrnB8uV7um/0yCO8L1GpzzvxAhTBFksMK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOkeho/btrnB8uV7um/0yCO8L1GpzzvxAhTBFksMK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOkeho/btrnB8uV7um/0yCO8L1GpzzvxAhTBFksMK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOkeho%2FbtrnB8uV7um%2F0yCO8L1GpzzvxAhTBFksMK%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;431&quot; height=&quot;327&quot; data-origin-width=&quot;431&quot; data-origin-height=&quot;327&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>공부/HTTP</category>
      <category>3-Way HandShake</category>
      <category>http</category>
      <category>http통신</category>
      <category>http특징</category>
      <category>stateful</category>
      <category>stateless</category>
      <category>TCP/IP</category>
      <author>jihyee</author>
      <guid isPermaLink="true">https://jihyee.tistory.com/12</guid>
      <comments>https://jihyee.tistory.com/12#entry12comment</comments>
      <pubDate>Sat, 11 Dec 2021 03:51:24 +0900</pubDate>
    </item>
    <item>
      <title>따로 찾으려면 귀찮은 Ubuntu 명령어들</title>
      <link>https://jihyee.tistory.com/11</link>
      <description>&lt;blockquote data-ke-style=&quot;style2&quot;&gt;특정 port 프로세스 확인하고 죽이기&lt;/blockquote&gt;
&lt;pre id=&quot;code_1638694609941&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ netstat -nap|grep 8080
$ sudo kill $(sudo lsof -t -i:8080)&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;root 비밀번호 변경&lt;/blockquote&gt;
&lt;pre id=&quot;code_1638711744746&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo passwd root&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>공부/기타</category>
      <category>ubuntu</category>
      <category>우분투</category>
      <category>우분투명령어</category>
      <author>jihyee</author>
      <guid isPermaLink="true">https://jihyee.tistory.com/11</guid>
      <comments>https://jihyee.tistory.com/11#entry11comment</comments>
      <pubDate>Sun, 5 Dec 2021 17:57:39 +0900</pubDate>
    </item>
    <item>
      <title>HTTP 웹 기본 지식 ① 인터넷 통신 TCP / UDP PORT DNS 웹 브라우저의 요청 흐름</title>
      <link>https://jihyee.tistory.com/10</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1637832152693&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;모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의&quot; data-og-description=&quot;실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., 웹 기술을 사용하는 개발자라면 누구나 OK!꼭 필요한 HTTP의 핵심을 알려드립니다.   확인해주세요!본 강의는 자바 스&quot; data-og-host=&quot;www.inflearn.com&quot; data-og-source-url=&quot;https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC&quot; data-og-url=&quot;https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/MjaYd/hyMtDDUD5p/zg01buvN3LufdZlLfBLo91/img.jpg?width=768&amp;amp;height=500&amp;amp;face=0_0_768_500,https://scrap.kakaocdn.net/dn/5GMez/hyMuMeVew6/g0U7kJuTU20inStSgKP67k/img.jpg?width=768&amp;amp;height=500&amp;amp;face=0_0_768_500,https://scrap.kakaocdn.net/dn/b3HSG0/hyMtvTmwm2/5wNeORCXIDydPN0b3SDD8K/img.jpg?width=1200&amp;amp;height=666&amp;amp;face=0_0_1200_666&quot;&gt;&lt;a href=&quot;https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/MjaYd/hyMtDDUD5p/zg01buvN3LufdZlLfBLo91/img.jpg?width=768&amp;amp;height=500&amp;amp;face=0_0_768_500,https://scrap.kakaocdn.net/dn/5GMez/hyMuMeVew6/g0U7kJuTU20inStSgKP67k/img.jpg?width=768&amp;amp;height=500&amp;amp;face=0_0_768_500,https://scrap.kakaocdn.net/dn/b3HSG0/hyMtvTmwm2/5wNeORCXIDydPN0b3SDD8K/img.jpg?width=1200&amp;amp;height=666&amp;amp;face=0_0_1200_666');&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;모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., 웹 기술을 사용하는 개발자라면 누구나 OK!꼭 필요한 HTTP의 핵심을 알려드립니다.   확인해주세요!본 강의는 자바 스&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.inflearn.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;위 강의를 통해 공부한 내용을 정리함&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;인터넷 통신&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클라이언트와 서버는 통신을 할 때 1:1로 연결되어 있는 것이 아니다.&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;922&quot; data-origin-height=&quot;423&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdRR3p/btrl9PRrmMw/ftwYgUny7SEQ8rqEmPa4Ak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdRR3p/btrl9PRrmMw/ftwYgUny7SEQ8rqEmPa4Ak/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdRR3p/btrl9PRrmMw/ftwYgUny7SEQ8rqEmPa4Ak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdRR3p%2Fbtrl9PRrmMw%2FftwYgUny7SEQ8rqEmPa4Ak%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;922&quot; height=&quot;423&quot; data-origin-width=&quot;922&quot; data-origin-height=&quot;423&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클라이언트와 서버 주소 위치 정보 (= IP) 가지고 통신은 할 수 있는데..&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;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;노드 중 하나에서 송/수신 실패&amp;nbsp;&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;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;/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;/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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 나온게 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;TCP / UDP 프로토콜 (전송 계층)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;TCP / UDP&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;978&quot; data-origin-height=&quot;442&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cD2pLK/btrl9RIvMdN/VKYsGf6kYIpnRT0KtvHuEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cD2pLK/btrl9RIvMdN/VKYsGf6kYIpnRT0KtvHuEK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cD2pLK/btrl9RIvMdN/VKYsGf6kYIpnRT0KtvHuEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcD2pLK%2Fbtrl9RIvMdN%2FVKYsGf6kYIpnRT0KtvHuEK%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;978&quot; height=&quot;442&quot; data-origin-width=&quot;978&quot; data-origin-height=&quot;442&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;패킷에 IP정보만 명시하는 게 아니라 PORT, 전송 제어, 순서 , 검증 정보 등의 통신을 위한 다른 정보들을 명시한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; TCP/UDP 프로토콜&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;TCP 프로토콜의 특징&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;연결 지향 (3way handshake) 논리적 연결&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;816&quot; data-origin-height=&quot;321&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KRdMP/btrmamVxX7T/51uY101k33UCNrhObVAT30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KRdMP/btrmamVxX7T/51uY101k33UCNrhObVAT30/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KRdMP/btrmamVxX7T/51uY101k33UCNrhObVAT30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKRdMP%2FbtrmamVxX7T%2F51uY101k33UCNrhObVAT30%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;816&quot; height=&quot;321&quot; data-origin-width=&quot;816&quot; data-origin-height=&quot;321&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;데이터 전달 보증&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;822&quot; data-origin-height=&quot;303&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Qnwrz/btrl6LvkIi0/hUsKTzSynGPM0oqMkF8NX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Qnwrz/btrl6LvkIi0/hUsKTzSynGPM0oqMkF8NX0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Qnwrz/btrl6LvkIi0/hUsKTzSynGPM0oqMkF8NX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQnwrz%2Fbtrl6LvkIi0%2FhUsKTzSynGPM0oqMkF8NX0%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;822&quot; height=&quot;303&quot; data-origin-width=&quot;822&quot; data-origin-height=&quot;303&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;순서 보증&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;846&quot; data-origin-height=&quot;297&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/csKcwh/btrmacMs6D9/JAFHCNVSKITEEEiLG1uHJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/csKcwh/btrmacMs6D9/JAFHCNVSKITEEEiLG1uHJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/csKcwh/btrmacMs6D9/JAFHCNVSKITEEEiLG1uHJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcsKcwh%2FbtrmacMs6D9%2FJAFHCNVSKITEEEiLG1uHJ0%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;846&quot; height=&quot;297&quot; data-origin-width=&quot;846&quot; data-origin-height=&quot;297&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;UDP 프로토콜&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TCP 프로토콜이라는 제약이 강한 규약을 하나 만들어 놨음. (이건 이제 변경 불가능)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;근데 TCP는 신뢰할 수 있는 프로토콜인 만큼 시간이 오래 걸릴 수 있음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 UDP를 만들어서 최적화의 여지를 남겨둠.&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;최소한의 조건 (PORT, 체크섬)만 남겨두고 나머지들은 필요한 경우 추가해서 사용하면 됨.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TCP 기능 거의 적용 안됨. (연결 지향, 전달 보장, 순서 보장)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TCP만 쓰다가 요샌 UDP도 쓰는 추세&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;PORT&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;888&quot; data-origin-height=&quot;426&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/u0zT1/btrl55ADqKp/19CIzGYkjQDCKkTVxhYJnk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/u0zT1/btrl55ADqKp/19CIzGYkjQDCKkTVxhYJnk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/u0zT1/btrl55ADqKp/19CIzGYkjQDCKkTVxhYJnk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fu0zT1%2Fbtrl55ADqKp%2F19CIzGYkjQDCKkTVxhYJnk%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;888&quot; height=&quot;426&quot; data-origin-width=&quot;888&quot; data-origin-height=&quot;426&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;이런 동시에 발생하는 연결들을 구분하는게 PORT&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;서버를 찾는 것 : IP&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;▷ 아파트&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 서버에서 돌아가는 애플리케이션을 찾는 것 : PORT&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: #c0d1e7;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;DNS&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;IP로 서버를 구분하는데 IP만으로 구분하는 것은 문제가 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;IP는 외우기 어려움 (xxx.xxx.xxx.xxx:port 이거 사이트마다 외울 순 없음)&lt;/li&gt;
&lt;li&gt;IP가 변경될 수 있음 (겨우 xxx.xxx.xxx.xxx:port 외웠는데 변경되면.. ?)&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;there4; DNS 서버를 하나 두고 IP 주소를 알기 쉬운 주소와 매핑해서 사용&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;994&quot; data-origin-height=&quot;532&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qimMq/btrl5mCzgXg/vN3GMJOpdPEFkhBUQzolJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qimMq/btrl5mCzgXg/vN3GMJOpdPEFkhBUQzolJk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qimMq/btrl5mCzgXg/vN3GMJOpdPEFkhBUQzolJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqimMq%2Fbtrl5mCzgXg%2FvN3GMJOpdPEFkhBUQzolJk%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;994&quot; height=&quot;532&quot; data-origin-width=&quot;994&quot; data-origin-height=&quot;532&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;blockquote data-ke-style=&quot;style2&quot;&gt;URL ?? URI ?? URN ??&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;444&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rybTb/btrmaclkYUd/CJHv6znPK8iwzcNk2sSW5k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rybTb/btrmaclkYUd/CJHv6znPK8iwzcNk2sSW5k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rybTb/btrmaclkYUd/CJHv6znPK8iwzcNk2sSW5k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrybTb%2FbtrmaclkYUd%2FCJHv6znPK8iwzcNk2sSW5k%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;828&quot; height=&quot;444&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;444&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;span style=&quot;background-color: #c0d1e7;&quot;&gt;어떤 &lt;u&gt;프로토콜&lt;/u&gt;로 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;어떤 &lt;u&gt;호스트(IP), 포트&lt;/u&gt;에&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;어떤 &lt;u&gt;경로&lt;/u&gt;로&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;어떤 &lt;u&gt;파라미터&lt;/u&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;보내는지 정의해서 리소스를 요청할 수 있는 식별자 역할을 한다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&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;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;애플리케이션 계층에서 웹 브라우저가 URL 정보를 가지고 HTTP 메세지를 생성한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;애플리케이션 계층에서 OS 계층으로 socket 라이브러리를 통해 전달&lt;/li&gt;
&lt;li&gt;OS 계층(TCP/UDP/IP) 에서 TCP, UDP, IP 패킷 달고 네트워크 인터페이스 계층으로 전달&amp;nbsp;&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;&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;651&quot; data-origin-height=&quot;319&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Fd9h0/btrmajduSzp/xe6NsEKOIUIFdyzqBaFfu0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Fd9h0/btrmajduSzp/xe6NsEKOIUIFdyzqBaFfu0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Fd9h0/btrmajduSzp/xe6NsEKOIUIFdyzqBaFfu0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFd9h0%2FbtrmajduSzp%2Fxe6NsEKOIUIFdyzqBaFfu0%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;651&quot; height=&quot;319&quot; data-origin-width=&quot;651&quot; data-origin-height=&quot;319&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;920&quot; data-origin-height=&quot;422&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btC0J9/btrmaORP7xg/PYeRn3s9KYSVU6zVKTmAz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btC0J9/btrmaORP7xg/PYeRn3s9KYSVU6zVKTmAz1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btC0J9/btrmaORP7xg/PYeRn3s9KYSVU6zVKTmAz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtC0J9%2FbtrmaORP7xg%2FPYeRn3s9KYSVU6zVKTmAz1%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;920&quot; height=&quot;422&quot; data-origin-width=&quot;920&quot; data-origin-height=&quot;422&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>공부/HTTP</category>
      <category>DNS</category>
      <category>http</category>
      <category>http통신</category>
      <category>PORT</category>
      <category>TCP/UDP</category>
      <category>uri</category>
      <category>url</category>
      <category>네트워크프로토콜</category>
      <category>패킷</category>
      <category>프로토콜</category>
      <author>jihyee</author>
      <guid isPermaLink="true">https://jihyee.tistory.com/10</guid>
      <comments>https://jihyee.tistory.com/10#entry10comment</comments>
      <pubDate>Thu, 25 Nov 2021 19:16:46 +0900</pubDate>
    </item>
    <item>
      <title>[React-Hook] 자바스크립트 비동기 처리 useState 와 useEffect 를 곁들인..</title>
      <link>https://jihyee.tistory.com/9</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;자바스크립트로 코드 짤 때 가장 헷갈린게&amp;nbsp;&lt;span style=&quot;color: #8a3db6;&quot;&gt;비동기 처리&lt;/span&gt;인 것 같다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;Vue 를 쓸 때도 그렇고 React 쓸 때도 그렇고 다 좋은데 비동기 처리는 진짜 짜증 났던 것 같다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;난 분명히 값을 할당했는데 &lt;/s&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;undefined..&lt;/s&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;공부하고 정리 좀 해서 아까운 시간 쏟지 말자&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;୧╏&amp;nbsp;՞&amp;nbsp;_&amp;nbsp;՞&amp;nbsp;╏୨&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;비동기 처리란&lt;/blockquote&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 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;/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 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;/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;/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;&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;i&gt;사실 이 부분은 텍스트로 읽는 것보단 코드 짜고 실행시켜보면서 직접 겪어보는게...&amp;nbsp; 그 전까진 죽어도 이해가 안 됐었다..&amp;nbsp;&lt;/i&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;&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;&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;blockquote data-ke-style=&quot;style2&quot;&gt;비동기 처리를 위한 훅 : &lt;b&gt;useState, useEffect&amp;nbsp;&lt;/b&gt;&lt;br /&gt;store 관리를 위한 redux :&amp;nbsp; &lt;b&gt;useSelector&lt;/b&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 비동기 처리를 그나마 편하게 하기 위해 제공하는 훅이 있는데 &lt;span style=&quot;color: #8a3db6;&quot;&gt;useState&lt;/span&gt;와 &lt;span style=&quot;color: #8a3db6;&quot;&gt;useEffect&lt;/span&gt;이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;useState&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;변수의 상태를 추척해준다 &lt;span style=&quot;background-color: #ffff00;&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;b&gt;useEffect&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;변수의 상태를 추적해 뭔가를 하게 해준다. &lt;span style=&quot;background-color: #ffff00;&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;&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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;useState&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1636120890414&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  const [currentUser, setCurrentUser] = useState({초기에 currentUser에 지정할 내용});&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위와 같은 코드는 currentUser 라는 변수를 useState 로 관리한다는 뜻이고 useState가 제공하는 핵심 기능은 추적의 기능을 사용할 수 있어 currentUser라는 변수의 내용이 변하면 자동으로 jsx가 재 렌더링 되어 변화된 변수가 화면에 반영된다.&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;만약에 이렇게 useState 를 지정하지 않고 그냥 무작정&lt;/p&gt;
&lt;pre id=&quot;code_1636121076966&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  const currentUser = &quot;hello&quot;;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 식으로 변수를 설정하면 스크립트 내부에서 currentUser 변수에 변화가 있어도 jsx는 변수의 변화를 감지하지 못하기 때문에 어떻게 바뀌냐 얼마나 바뀌냐 언제 바뀌냐에 상관없이 그냥 hello라는 초기 상태만 표시하게 될 것이다.&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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;useEffect&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;pre id=&quot;code_1636121169755&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;useEffect(() =&amp;gt; {
    const load = async () =&amp;gt; {
      try {
        if (user !== undefined) {
          setCurrentUser(user);
        }
      } catch (error) {
        console.log(&quot;하하&quot;);
      }
    };
    load();
    console.log(&quot;Hello&quot;);
  }, [user]);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;useState와 비슷한 기능의 훅인데 useState는 변수를 추척해 변화가 생긴다면 재 렌더링 하는 기능이라면 useEffect는 변수를 추적해 변화가 생기면 어떠한 기능을 수행할 수 있게 해 준다.&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;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;useEffect(() =&amp;gt; {&lt;/span&gt;&lt;/blockquote&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;{개발자가 꿈을 펼침}&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; 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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;user라는 변수를 추적해서 &amp;rarr; [추적할 변수 지정]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 변수에 변화가 생길 때마다 load() 를 실행한다 &amp;rarr; {개발자가 꿈을 펼침}&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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;리액트로 코드를 짤 때 변수에 대한 비동기 처리는 useState 와 useEffect와 같은 막강한 hook을 써서 정말 편하게 할 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;제대로만 알고 쓰면 너무 좋은 기능이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;ᕦ(&amp;nbsp;ᐛ&amp;nbsp;)ᕡ&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>공부/React</category>
      <category>Hook</category>
      <category>JavaScript</category>
      <category>REACT</category>
      <category>useEffect</category>
      <category>useState</category>
      <category>리액트비동기처리</category>
      <category>비동기처리</category>
      <author>jihyee</author>
      <guid isPermaLink="true">https://jihyee.tistory.com/9</guid>
      <comments>https://jihyee.tistory.com/9#entry9comment</comments>
      <pubDate>Fri, 5 Nov 2021 23:23:10 +0900</pubDate>
    </item>
    <item>
      <title>[TS_React] setupProxy.js 로 CORS 에러 해결하자</title>
      <link>https://jihyee.tistory.com/8</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;TS&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;:Trouble Shooting&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Proxy 설정은 왜 할까&lt;/blockquote&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;서버와 클라이언트를 통신할 때 CORS 헤더를 통해 통신을 진행하는데 이런 CORS 를 통한 통신은 통신을 주고받는 통신 주체들의 &lt;span style=&quot;color: #f3c000;&quot;&gt;도메인, 프로토콜, 포트&lt;/span&gt; 등이 일치하는지 확인한다. 프로젝트를 진행함에 있어 서버와 프론트의 도메인, 프로토콜, 포트가 일치하는 않는 경우에 CORS 에러가 나는 이유가 바로 이런 &lt;b&gt;접근 권한 확인 과정&lt;/b&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;서버와 클라이언트 사이에 중계기로서 대리로 통신을 수행하게 하는 프록시 서버를 설정하면 위와 같은 문제를 해결할 수 있다.&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;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Proxy 서버 설정 방법&lt;/blockquote&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;proxy 서버를 설정하기 위해서는 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;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;1. package.json 파일에서 설정&lt;/p&gt;
&lt;pre id=&quot;code_1636023508013&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&quot;proxy&quot; : &quot;{통신할 서버 주소}&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;2. setupProxy.js 파일 생성&lt;/p&gt;
&lt;pre id=&quot;code_1636023566699&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// module import -&amp;gt; npm install http-proxy-middleware
// src/setupProxy.js
const { createProxyMiddleware } = require(&quot;http-proxy-middleware&quot;);

// src/setupProxy.js
module.exports = function (app) {
  app.use(
    createProxyMiddleware(&quot;/api&quot;, {
      target: &quot;{통신할 서버 주소}&quot;, // 비즈니스 서버 URL 설정
      changeOrigin: true,
    })
  );
};&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;http-proxy-middleware 모듈 import&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;해당 어플리케이션에서 /api 로 시작되는 endpoint 가 서버에 어떠한 통신을 요청한 경우 proxy 서버가 중계 역할을 하며 target으로 지정한 {통신할 서버 주소} 로 통신하면서 서버를 우회함을 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;결론은 프록시 서버를 둬서 cors 에러를 &lt;u&gt;간접적으로&lt;/u&gt; 해결 가능하다!&lt;/p&gt;</description>
      <category>공부/Trouble Shooting</category>
      <category>axios</category>
      <category>baseUrl</category>
      <category>Cors</category>
      <category>Proxy</category>
      <category>REACT</category>
      <category>setProxy</category>
      <category>setupProxy</category>
      <category>서버통신</category>
      <category>프록시</category>
      <author>jihyee</author>
      <guid isPermaLink="true">https://jihyee.tistory.com/8</guid>
      <comments>https://jihyee.tistory.com/8#entry8comment</comments>
      <pubDate>Thu, 4 Nov 2021 20:24:04 +0900</pubDate>
    </item>
    <item>
      <title>[AWS + Spring Boot ] 스프링부트 QueryDSL 연동 배포</title>
      <link>https://jihyee.tistory.com/7</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;드디어 spring boot 에 querydsl 적용하고 배포까지 구현했다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; 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;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 style=&quot;text-align: center;&quot; 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;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;querydsl 이란?&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;결국 검색 조건을 넣으려면 모든 DB 데이터를 엔티티화 해야 한다는 뜻인데 그건 불가능&lt;s&gt;할 수야 있겠지만..&amp;nbsp;&lt;/s&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇기 때문에 애플리케이션이&amp;nbsp;필요한&amp;nbsp;데이터만&amp;nbsp;DB에서&amp;nbsp;불러오려면&amp;nbsp;결국&amp;nbsp;&lt;span style=&quot;background-color: #ffff00;&quot;&gt;검색&amp;nbsp;조건이&amp;nbsp;포함된&amp;nbsp;SQL&lt;/span&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;다행히 (?) JPA는 SQL을 추상화한 JPQL (객체 지향 쿼리 언어)이 있는데 JPQL를 쉽게 만들어주는 방식 중 하나가 QueryDSL이다.&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&gt;&lt;b&gt;JPQL&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;JPA Criteria&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;QueryDSL&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;네이티브 SQL&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;JDBC API 직접 사용, MyBatis, SpringJdbcTemplate 함께 사용&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;&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;blockquote data-ke-style=&quot;style2&quot;&gt;querydsl 사용하기&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;maven 기반 레퍼런스가 압도적으로 많아서 gradle 설정 맞추기가 쉽진 않았었다.. ㅎ&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;&lt;b&gt;build.gradle 설정&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1635615712021&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;plugins {
	id 'org.springframework.boot' version '2.5.4'
	id 'io.spring.dependency-management' version '1.0.11.RELEASE'
	id 'java'
	id 'idea'
	id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10'
}

group = {프로젝트 그룹명}
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
configurations {
	compileOnly {
		extendsFrom annotationProcessor
	}
	querydsl {
		extendsFrom compileClasspath
	}
}

def queryDslDir = &quot;$buildDir/generated/sources/annotationProcessor/java/main&quot;

querydsl {
	jpa = true
	querydslSourcesDir = queryDslDir
}

sourceSets {
	main {
		java {
			srcDir queryDslDir
		}
	}
}

compileQuerydsl {
	options.annotationProcessorPath = configurations.querydsl
}

repositories {
	mavenCentral()
}
dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	implementation 'org.springframework.boot:spring-boot-starter-jdbc'
	implementation 'org.springframework.boot:spring-boot-starter-mustache'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	implementation group: 'org.modelmapper', name: 'modelmapper', version: '2.3.8'
	implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
	implementation 'org.springframework.boot:spring-boot-starter-validation'
	implementation 'junit:junit:4.13.1'
	compileOnly 'org.projectlombok:lombok'
	developmentOnly 'org.springframework.boot:spring-boot-devtools'
	runtimeOnly 'mysql:mysql-connector-java'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	implementation 'io.jsonwebtoken:jjwt-api:0.11.2'
	implementation 'io.jsonwebtoken:jjwt-jackson:0.11.2'
	runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.2'
	annotationProcessor &quot;org.springframework.boot:spring-boot-configuration-processor&quot;
	annotationProcessor 'javax.annotation:javax.annotation-api:1.3.1'
	implementation 'com.querydsl:querydsl-jpa'
	implementation 'com.querydsl:querydsl-apt'
	annotationProcessor 'com.querydsl:querydsl-apt'
}

test {
	useJUnitPlatform()
}
ext {
	querydslSrcDir = 'src/main/generated'
	queryDslVersion = '4.1.4' }
configurations {
	querydsl.extendsFrom compileClasspath
}
querydsl {
	library = &quot;com.querydsl:querydsl-apt&quot;
	querydslSourcesDir = 'src/main/generated'
	jpa = true
	querydslDefault = true
}
sourceSets {
	main {
		java {
			srcDirs += file(querydslSrcDir)
		}
	}
}
idea {
	module {
		generatedSourceDirs += file(querydslSrcDir)
	}
}
compileQuerydsl {
	options.annotationProcessorPath = configurations.querydsl
}&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;b&gt;config 파일 생성&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1635615756562&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package SKRookie.moamoa.config;

import com.querydsl.jpa.impl.JPAQueryFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

@Configuration
public class QueryDslConfig {
    @PersistenceContext
    private EntityManager entityManager;

    @Bean
    public JPAQueryFactory jpaQueryFactory() {
        return new JPAQueryFactory(entityManager);
    }
}&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;이렇게 설정하고 compileQuerydsl 해주면 자동으로 Q(쿼리 타입)가 생성된다.&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;엔티티 앞에 Q가 붙고 내가 만들지 않은 파일들이 생성됐다 ? &amp;rarr; QueryDSL&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;pre id=&quot;code_1635615949199&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import static SKRookie.moamoa.api.entity.study.QStudy.study;

@Override
    public Page&amp;lt;Study&amp;gt; search(StudySearchCondition condition, Pageable pageable) {
        JPQLQuery&amp;lt;Study&amp;gt; query = jpaQueryFactory       // 1)
                .selectFrom(study)
                .where(
                        userIdEq(condition.getUserSeq()),
                        studyTypeEq(condition.getStudyType())
                );
        return pagingUtil.getPageImpl(pageable, query, Study.class);
    }&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;생성된 쿼리 타입 엔티티를 불러와서 사용하면 되는데 위 예시와 같이 study라는 쿼리 타입 엔티티를 가져와서 검색 기능을 구현한다.&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;위 예시에는 select 랑 where 정도만 사용했지만 복잡한 SQL과 동일하게 order by, group by, join 등도 사용 가능하다.&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;blockquote data-ke-style=&quot;style2&quot;&gt;querydsl 배포시 주의할 점&lt;/blockquote&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;신나게 QueryDSL을 사용은 했는데&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;/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 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;/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;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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 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;계속 고치다가 포기하고 QueryDSL 쓰지 말아야겠다 했는데 이렇게 빨리 포기하는 건 아닌 것 같아서 침착하게 다시 시도 (침착.. 할 수 있다...)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;결국 해결했다...&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;(งᐖ)ว&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;문제는 compileQuerydsl 이었는데 앞서 말했듯이 querydsl은 쿼리 타입 엔티티를 컴파일 시 생성해서 저장해두므로 그 부분을 배포할 때 인지하고 있어야 한다. 만약 쿼리 타입이 생성되었는데 compileQuerydsl을 다시 하면 build 자체가 안 되는 문제 때문에 배포할 때 계속 오류로 멈췄던 것이다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;문제를 해결하기 위해 cleanQuerydsl을 build 하기 전에 하는 걸로 코드를 고쳤다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;deploy.sh 내부 코드를 수정해서&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;build하기 전에 cleanQuerydslSourceDir을 먼저 할 수 있도록 바꿔주면 빌드 전에 생성된 쿼리 엔티티들 다 지우기 때문에 문제없이 컴파일 빌드된다.&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;pre id=&quot;code_1635616640769&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;./gradlew cleanQuerydslSourceDir
// 위 코드 추가!!
./gradlew build&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;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여러모로 querydsl 쓰고 싶었는데 배포까지 잘 해결돼서 사용할 수 있어 너무 다행....&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;spring boot는 진짜 배워도 배워도 끝이 없는 것 같다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;어디까지 공부해야 하니?&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;참고&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt; &lt;a href=&quot;https://ict-nroo.tistory.com/116&quot;&gt;https://ict-nroo.tistory.com/116&lt;/a&gt;&amp;nbsp;[개발자의&amp;nbsp;기록습관]&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;자바 ORM 표준 JPA 프로그래밍 [김영한]&lt;/i&gt;&lt;/p&gt;</description>
      <category>공부/Spring Boot</category>
      <category>aws</category>
      <category>jpa</category>
      <category>JPQL</category>
      <category>QueryDSL</category>
      <category>querydsl배포</category>
      <category>SpringBoot</category>
      <category>스프링부트</category>
      <author>jihyee</author>
      <guid isPermaLink="true">https://jihyee.tistory.com/7</guid>
      <comments>https://jihyee.tistory.com/7#entry7comment</comments>
      <pubDate>Sun, 31 Oct 2021 03:10:02 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 백준 시작</title>
      <link>https://jihyee.tistory.com/6</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;오늘 백준 들어갔다가 깜짝 놀랐다&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;리트코드로 공부했었다는 변명에도 &lt;s&gt;브론즈 4&lt;/s&gt;는 좀 아니지 싶기도 하고 ...&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;흐지부지 되지 않기 위해 별거 아니지만 포스팅을 올린다&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;(*&amp;bull;̀ᴗ&amp;bull;́*)و&amp;nbsp;̑̑&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;우선 목표는 골드1&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;기간&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;2021.10.28 ~&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;2021.1.28&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;# 22.02.03 추가&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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-filename=&quot;blob&quot; data-origin-width=&quot;697&quot; data-origin-height=&quot;304&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0UDNR/btrsjaCfeKT/bGEkrLr5xpw3Mwvh7gmyTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0UDNR/btrsjaCfeKT/bGEkrLr5xpw3Mwvh7gmyTK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0UDNR/btrsjaCfeKT/bGEkrLr5xpw3Mwvh7gmyTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0UDNR%2FbtrsjaCfeKT%2FbGEkrLr5xpw3Mwvh7gmyTK%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;697&quot; height=&quot;304&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;697&quot; data-origin-height=&quot;304&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;목표는 달성하지 못했다..&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;(&amp;nbsp;&amp;bull;ᴗ&amp;bull;̥&amp;nbsp;˳&amp;nbsp;)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그래도 3개월간 알고리즘 공부를 꾸준히했던 것 같다!&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;ICPC 신촌 알고리즘 스터디 초급 &amp;amp; 중급반에서 강의를 들으며 문제를 풀고 있는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;개념을 먼저 이해하고 개념별로 문제를 푸니까 뜬구름 잡는 것 같던 알고리즘이 그나마 조금씩 이해가 되는 것 같은 느낌이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 머리도 좋은데 노력도 많이 하는 다른 스터디원들을 보면서 자극도 많이 받게되는 것 같다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;하지만 아직도 어려운 문제를 보면 이해도 적용도 안되는게 사실이다...&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;현재는 매일 수업을 들을 수 밖에 없는 일정이라 알고리즘 공부를 빡세게 하는게 불가능하지만 그래도 남은 방학까지 문제를 열심히 풀어야겠다.,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;(*&amp;bull;̀ᴗ&amp;bull;́*)و&amp;nbsp;̑̑&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;두 번째 목표는 icpc 마무리 + 플레1&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;기간&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;2021.02.03 ~&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;2021.03.28&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>공부/Algorithm</category>
      <category>백준</category>
      <author>jihyee</author>
      <guid isPermaLink="true">https://jihyee.tistory.com/6</guid>
      <comments>https://jihyee.tistory.com/6#entry6comment</comments>
      <pubDate>Thu, 28 Oct 2021 00:06:19 +0900</pubDate>
    </item>
    <item>
      <title>GDSC global networking event 와 링크드인</title>
      <link>https://jihyee.tistory.com/5</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;어제 GDSC에서 코어 멤버들간의 &lt;span style=&quot;color: #9d9d9d;&quot;&gt;global networking event &lt;/span&gt;가 있었다&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;GDSC&lt;/span&gt;는 &lt;span style=&quot;color: #9d9d9d;&quot;&gt;Google Developer Student Club&lt;/span&gt;의 약자로 말 그대로 개발에 관심있는 전세계 대학생들간의 모임이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;나는 GDSC Sookmyung 에서 WEB 분야 코어 멤버로 활동하기에 이번 행사에 참여하게 되었다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; 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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;행사는 networking event 인 만큼 각자 흥미가 있는 분야에 대한 소규모 그룹을 만들어서 각자의 생각과 경험을 공유하는 방식으로 진행되었다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;( AI, WEB, WOMEN IN CS 등등 흥미로운 주제가 많아서 재밌었다 )&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;하지만&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;나는 영어에 자신감도 없고 ...&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;영어도 못하고 ..&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;쭈구리 그 자체 ..&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;(&amp;nbsp;ᵕ‧̯ᵕ̥̥&amp;nbsp;)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그래도 청취자의 마음으로 열심히 행사에 참여한 것 같다.. ㅎ&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;행사에서 가장 신기했던 점은 모든 학생들이 본인의 &lt;span style=&quot;background-color: #ffff00;&quot;&gt;링크드인&lt;/span&gt; 페이지를 공유했다는 점이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;깃헙.. 티스토리.. 페북.. 프로그래머스.. 원티드.. 등등&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;포트폴리오 채용을 위한 여러 사이트가 이미 존재하고 회원으로 등록 되어 있는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;링크드인은 또 머람..&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;800명이 넘는 학생들이 모두 하나 같이 링크드인을 공유하는 걸로 봐선 외국에선 꽤 인기있는 포트폴리오 겸 소셜 네트워킹 사이트인 것 같다는 생각이 들어 나도 링크드인 계정을 만들어 활동을 시작했다!&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;알아보니 무려 7억명의 회원을 가진 소셜 네트워크 서비스라고 한다..&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;링크드인의 기능을 간단히 정리해보면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&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;span&gt;&amp;nbsp;&lt;/span&gt;특허&lt;/li&gt;
&lt;li&gt;재학 중 또는 졸업한 학교&lt;/li&gt;
&lt;li&gt;학내&lt;span&gt;&amp;nbsp;&lt;/span&gt;동아리&lt;span&gt;&amp;nbsp;&lt;/span&gt;활동 및 봉사 활동을 비롯한 대외 활동&lt;/li&gt;
&lt;li&gt;논문&lt;/li&gt;
&lt;li&gt;수상 실적과 장학 내역&lt;/li&gt;
&lt;li&gt;평점&lt;span&gt;&amp;nbsp;&lt;/span&gt;( GPA, 학점 )&lt;/li&gt;
&lt;li&gt;구사할 수 있는 모국어 및 외국어와 그 수준&lt;/li&gt;
&lt;li&gt;재학 중 또는 졸업한 학교에서 수강한 수업 내역&lt;/li&gt;
&lt;li&gt;자신 있는 스킬 - 인맥들이 추천할 수도 있다.&lt;/li&gt;
&lt;li&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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 학교부터 시작해서 추천까지 개인의 경험들을 정리해서 올리고 공유할 수 있는 서비스인 것 같다&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;게다가 외국에서 많이 쓰니 다양한 활동에 관심을 가지고 교류할 수 있는 좋은 기회란 생각이 들었다&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;링크드인으로 소통합시다!&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;੧ᐛ੭&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;225&quot; data-origin-height=&quot;225&quot; width=&quot;120&quot; height=&quot;120&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;a href=&quot;https://www.linkedin.com/in/jihye-kim-5a08a0224/&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bluOwl/btriYIPmqL2/R4cOO2548g0FuPy0VIJKKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbluOwl%2FbtriYIPmqL2%2FR4cOO2548g0FuPy0VIJKKk%2Fimg.png&quot; data-origin-width=&quot;225&quot; data-origin-height=&quot;225&quot; width=&quot;120&quot; height=&quot;120&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;클릭하면 링크드인 페이지로 이동&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>일상</category>
      <category>gdsc</category>
      <category>globalnetworking</category>
      <category>Linkedin</category>
      <category>링크드인</category>
      <author>jihyee</author>
      <guid isPermaLink="true">https://jihyee.tistory.com/5</guid>
      <comments>https://jihyee.tistory.com/5#entry5comment</comments>
      <pubDate>Wed, 27 Oct 2021 16:34:23 +0900</pubDate>
    </item>
    <item>
      <title>[AWS + spring boot] 서버 배포하기 _ 1</title>
      <link>https://jihyee.tistory.com/4</link>
      <description>&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;서버는 왜 배포해야할까&lt;/b&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버를 24시간 작동하게 하는 방법은 3가지&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;내 pc를 24시간 구동시킨다.&lt;/li&gt;
&lt;li&gt;호스팅 서비스를 이용한다.&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;span style=&quot;color: #f89009;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;클라우드란&lt;/b&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;&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;Iaas : it인프라 대여 (ec2)&lt;/li&gt;
&lt;li&gt;Paas : Iaas를 한번 더 추상화 Iaas에서 더 자동화 됨 (heroku)&lt;/li&gt;
&lt;li&gt;Saas : 소프트웨어 서비스 (google drive)&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;클라우드 서비스는 여러가지 있는데 aws, azure, GCP 그 중 aws를 이용해 서버를 배포할 예정이다.&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;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;aws 계정 생성&lt;br /&gt;&lt;/b&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aws.amazon.com/&quot;&gt;aws 사이트&lt;/a&gt;에 접속&lt;/p&gt;
&lt;figure id=&quot;og_1635260024845&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;company&quot; data-og-title=&quot;클라우드 서비스 | 클라우드 컴퓨팅 솔루션| Amazon Web Services&quot; data-og-description=&quot;개발자, 데이터 사이언티스트, 솔루션스 아키텍트 또는 AWS에서 구축하는 방법을 배우는 데 관심이 있는 모든 사용자용 무료 온라인 교육 AWS 전문가가 구축한 500개 이상의 무료 디지털 교육 과정&quot; data-og-host=&quot;aws.amazon.com&quot; data-og-source-url=&quot;https://aws.amazon.com/&quot; data-og-url=&quot;https://aws.amazon.com/ko/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cHUsM6/hyL7m9kIw4/qVfVQjp5FKzV5wkPrJgxn0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/LxQYu/hyL7hfRJMC/uYef29Aho0j7ZyOsHdSLN0/img.png?width=179&amp;amp;height=109&amp;amp;face=0_0_179_109&quot;&gt;&lt;a href=&quot;https://aws.amazon.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aws.amazon.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cHUsM6/hyL7m9kIw4/qVfVQjp5FKzV5wkPrJgxn0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/LxQYu/hyL7hfRJMC/uYef29Aho0j7ZyOsHdSLN0/img.png?width=179&amp;amp;height=109&amp;amp;face=0_0_179_109');&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;클라우드 서비스 | 클라우드 컴퓨팅 솔루션| Amazon Web Services&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;개발자, 데이터 사이언티스트, 솔루션스 아키텍트 또는 AWS에서 구축하는 방법을 배우는 데 관심이 있는 모든 사용자용 무료 온라인 교육 AWS 전문가가 구축한 500개 이상의 무료 디지털 교육 과정&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aws.amazon.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;회원 가입 진행 (master, visa 카드 번호 필요, 지원 플랜은 무료로 사용을 원한다면 기본 플랜)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;콘솔에 로그인&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;인스턴스 생성&lt;/b&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;aws에서 제공하는 다양한 클라우드 서비스 중 현재 사용려는 것은 서버이므로 &lt;span style=&quot;color: #f89009;&quot;&gt;EC2 인스턴스&lt;/span&gt;를 생성해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;AMI&lt;/span&gt; (가상 머신에 필요한 정보를 이미지로 만들어둔 것 운영 체제 선택한다고 생각하면 되나) 선택&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인스턴스 유형은 무료로 사용 가능한 &lt;span style=&quot;color: #f89009;&quot;&gt;t2.micro&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스토리지 크기는 프리티어의 최대치인 &lt;span style=&quot;color: #f89009;&quot;&gt;30GB&lt;/span&gt; 로 하는게 이득&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;보안 그룹&lt;/span&gt;은 중요한데 전체 오픈으로 해두면 pem키가 노출돼서 서버에서 &lt;u&gt;가상화폐가 채굴될 수도 ㅎㄷㄷ&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지정된 ip주소에서만 ssh접속이 가능하도록 내 ip 선택하고 기본 포트인 8080만 전체 공개&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;pem키는 발급받아서 관리할 수 있는 디렉토리에 따로 저장해둔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 나중에 puttygen으로 변환하긴 함.&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;탄력적 IP 하나 발급 받아서 위 방식으로 생성한 인스턴스 주소랑 연결한다.&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;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;윈도우에서 ec2 접속&lt;/b&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성된 주소로 접속하기 위해 사용하는 &lt;span style=&quot;color: #f89009;&quot;&gt;putty&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;puttygen 으로 pen 키를 ppk로 변환해서 저장해두고 putty 실행&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;hostname = ec2-user@{탄력적 ip 주소} (여기서 ec2-user은 리눅스 기반 유저 default명)&lt;/li&gt;
&lt;li&gt;port = 22&lt;/li&gt;
&lt;li&gt;connection - SSH -Auth 에서 ppk 키 로드&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;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;추가 자바 기반 웹 어플리케이션 작동을 위한 필수 설정&lt;/b&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;자바 설치 (설치한 가상환경은 깡통 그 자체)&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1635259388837&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 설치
sudo yum install -y java-1.8.0-openjdk-devel.x86_64
// 자바 8 선택
sudo /usr/sbin/alternatives --config java
// 버전 확인
java -version&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;pre id=&quot;code_1635259600551&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime&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;Hostname 변경&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1635259768118&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 관리자로 변경
sudo -s
// 호스트 명 변경
hostnamectl set-hostname {변경할 hostname}&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;&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;s&gt;(생각보다 간단..?)&lt;/s&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 포스팅에서 데이터 베이스 구축과 프로젝트 실행을 정리해보겠다!&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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;٩(&amp;nbsp;ᐛ&amp;nbsp;)و&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;</description>
      <category>공부/Server</category>
      <category>amazon</category>
      <category>ami</category>
      <category>aws</category>
      <category>ec2</category>
      <category>Linux</category>
      <category>putty</category>
      <category>SpringBoot</category>
      <category>배포</category>
      <category>서버</category>
      <category>서버배포</category>
      <author>jihyee</author>
      <guid isPermaLink="true">https://jihyee.tistory.com/4</guid>
      <comments>https://jihyee.tistory.com/4#entry4comment</comments>
      <pubDate>Tue, 26 Oct 2021 23:52:19 +0900</pubDate>
    </item>
  </channel>
</rss>