<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Error Reviewer</title>
    <link>https://program-error-review.tistory.com/</link>
    <description>개발하며 겪었던 경험을 기록하는 블로그</description>
    <language>ko</language>
    <pubDate>Sat, 15 Aug 2026 07:28:45 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>GiTo</managingEditor>
    <image>
      <title>Error Reviewer</title>
      <url>https://tistory1.daumcdn.net/tistory/3476950/attach/72ddf054613c4447a240f7302a5de265</url>
      <link>https://program-error-review.tistory.com</link>
    </image>
    <item>
      <title>2년을 함께한 프로젝트 회고 Feat.개발자 회고</title>
      <link>https://program-error-review.tistory.com/100</link>
      <description>&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;프로젝트명: 메타버스 앱 개발&lt;br /&gt;참여기간: 2021.11.25 ~ 2023.09.27&lt;/p&gt;
&lt;h3 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;했던 일&lt;/b&gt;&lt;/h3&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;&amp;nbsp;웹뷰 프론트 개발&lt;/li&gt;
&lt;li&gt;&amp;nbsp;웹뷰 백엔드 개발&lt;/li&gt;
&lt;li&gt;&amp;nbsp;AA &amp;amp; TA Role&lt;/li&gt;
&lt;/ul&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Vue.js 2.0&lt;/li&gt;
&lt;li&gt;Spring boot&lt;/li&gt;
&lt;li&gt;Mysql&lt;/li&gt;
&lt;li&gt;AWS&lt;/li&gt;
&lt;li&gt;EKS&lt;/li&gt;
&lt;li&gt;Code Pipeline&lt;/li&gt;
&lt;li&gt;AWS Lambda&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2021.11 ~ 2022.01&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;경력직으로 입사 후 바로 투입된 프로젝트에서 결제파트 업무를 시작했다.&lt;br /&gt;메타버스 플랫폼에 블록체인을 통한 경제시스템을 구축한다는 큰 그림 속 결제 시스템을 구축하는 파트였다.&lt;br /&gt;&lt;br /&gt;기술스택은 시니어 개발자가 미리 정해둔 상태로 필요한 기능을 개발하면 되는 상태.&lt;br /&gt;&lt;br /&gt;다소 수동적인 자세로 개발을 진행하며&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;AWS 에서 제공하는 CI 도구인 Code Pipeline 과 EKS 에 대해 얕게 배울 수 있는 기간이었다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;배운 점&lt;/b&gt;&lt;br /&gt;CI / CD 에 대해 적극적으로 학습하여 배우려고 함&lt;br /&gt;&lt;br /&gt;&lt;b&gt;아쉬운 점&lt;/b&gt;&lt;br /&gt;막내 포지션으로 수동적인 기능개발만 진행함&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2022.02 ~ 2022.06&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;블록체인 파트로 편입되어 관리자 페이지 개발을 담당&lt;br /&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;&lt;br /&gt;Smart Contract, FT, NFT, Gas fee 등 새로운 용어들을 접하며 배울 것이 많았다.&lt;br /&gt;백엔드 개발자 두 명이 API 개발을 진행하였고 나는 관리자페이지 개발을 진행하였다.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;배운 점&lt;/b&gt;&lt;br /&gt;블록체인 기술에서 사용하는 용어들 학습&lt;br /&gt;클레이튼 기반 블록체인 네트워크에 대한 이해&lt;br /&gt;&lt;br /&gt;&lt;b&gt;아쉬운 점&lt;/b&gt;&lt;br /&gt;프론트 개발을 혼자 진행하며 협업이나 클린코드보다는 업무를 쳐내기에 급급했던 점&lt;br /&gt;가나슈와 솔리디티를 사용한 스마트컨트랙트 개발에 대하여 학습하고&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;내 것으로 만들 수 있는 기회를 놓친 점(이건 정리해 둔 게 있어서 추후에 할 수 있지 않을까..)&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2022.07 ~ 2023.01&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;앱 오픈 및 웹뷰 개발을 진행하던 시기이다.&lt;br /&gt;앱에 웹뷰를 붙여서 이벤트나 공지사항 등 앱배포와 무관하게 진행할 수 있는 영역을 추가했던 시기이다.&lt;br /&gt;&lt;br /&gt;막내를 벗어나서 후배들이 일을 하나씩 가져가던 시기..&lt;br /&gt;이때부터 시니어 한분과 기획 검토 및 백엔드 개발도 함께 진행하였다.&lt;br /&gt;클라우드 전담 인력이 빠지면서 시니어 개발자분과 TA 영역도 하나씩 배워갔던 시기.&lt;br /&gt;구축된 Spring Boot 에 REST API 를 추가개발하고 프론트 개발도 같이 진행하였다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;기획서를 기준으로 기능을 분해하고&lt;br /&gt;테이블 설계 및 검토를 진행하고 (거의 검토)&lt;br /&gt;백엔드 기능을 개발하고 (시니어님이 많이 진행)&lt;br /&gt;프론트 개발을 진행하였다 (메인)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;배운 점&lt;/b&gt;&lt;br /&gt;앱에 웹뷰를 붙이는 아키텍처에 대해 학습&lt;br /&gt;서비스 설계에 대한 경험 쌓기&lt;br /&gt;AWS 및 EKS 운영을 위한 TA 업무 습득&lt;br /&gt;&lt;br /&gt;&lt;b&gt;아쉬운 점&lt;/b&gt;&lt;br /&gt;Spring Boot 기반 백엔드 개발을 깊게 파보지 못한 점&lt;br /&gt;시니어가 있을 때 깊게 파봤으면 좋았을 것 같다.&lt;br /&gt;프론트 개발을 메인으로 진행하였는데 코딩 컨벤션이나 린트,&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;재활용 가능한 컴포넌트 단위 개발, 코드리뷰가 부족했던 점 등 아쉬운 부분이 많다..&lt;br /&gt;나도 후배들도 구현만 많이 해보고 클린코드에 대한 접목을 못했던 점이 아쉽다.&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2023.02 ~ 2023.06&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;AA 라는 롤을 부여받은 시기..&lt;br /&gt;AA 가 뭔지부터 할 일이 뭔지 정리해야 했다.&lt;br /&gt;Application Architect...&lt;br /&gt;AA 는 기술스택을 선정하고&lt;br /&gt;AA 는 개발방법론과 프레임워크를 선정하고&lt;br /&gt;AA 는 어플리케이션 설계를 담당하며&lt;br /&gt;AA 는 코드작성 가이드라인을 제공하며&lt;br /&gt;AA 는 인프라 관련 요구사항을 정의할 수 있어야 한다&lt;br /&gt;&lt;br /&gt;AA 는 PM 을 도와 구현에 필요한 일정 산정을 돕고&lt;br /&gt;AA 는 PM 을 도와 비용과 효과에 대해 고민하고&lt;br /&gt;AA 는 PM 에게 기술적인 충고를 할 수 있다.&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;[출처] Java EE 아키텍처 핸드북 2판 - 성공적인 아키텍&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;[출처] &lt;a href=&quot;https://luceatluxvestra.tistory.com/59&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://luceatluxvestra.tistory.com/59&lt;/a&gt;&lt;/span&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;AA 는 너무 광범위하고 높은(?) 자리여서 역할을 온전히 수행하지 못한 느낌이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다행히 시니어 개발자가 AA 의 롤에 대해 많은 조언을 해줘서 프로젝트를 잘 마무리할 수 있었고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 기간 동안 AWS 관리업무도 많이 관여하게 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(시니어 개발자의 롤이 TA &amp;amp; PL &amp;amp; 백엔드 개발)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 기간동안 개발보다는 성능개선이나 기획서를 분석해서 아키텍처를 잡는 역할을 많이 진행하며&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단순히 개발만 하는 게 아닌 조금 더 넓은 시야로 서비스 전체를 내 것으로 만드는 시간이었던 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;배운 점&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AA 의 역할에 대한 이해&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TA 업무 수행경험 (주로 EKS, CI / CD 관리)&lt;/p&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;AA 에 대한 사전지식이 부족했고 아직은 같은 롤에 대해 부담스럽게 느껴짐&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AWS 각 서비스에 대해 조금 더 깊게 파보고 싶었으나 집중하지 못했음&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;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2023.07 ~ 2023.09&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;마지막 3개월..&lt;/p&gt;
&lt;p 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;AA, TA 업무를 모두 맡게 되었고 우선순위를 나눠 어느 정도 가지치기를 진행했다.&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;/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;gt; 기획서 분석 -&amp;gt; 아키텍처 설계 -&amp;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;gt; 기획서 분석 -&amp;gt; 아키텍처 설계 -&amp;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;b&gt;배운 점&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;AA, TA 업무를 동시에 맡으며 일을 나누는 방법에 대해 고민하고 실행한 점&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;b&gt;아쉬운 점&lt;/b&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;위 이유에 대해 혼자서 커버하지 못한 점 (추후에는 더 매끄럽게 일처리를 하면 좋겠다)&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&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;b&gt;다음 프로젝트에서 하고 싶은 일&lt;/b&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;코드 컨벤션 및 코드작성 가이드라인을 팀 전원에게 적용&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;span&gt;&amp;nbsp;&lt;/span&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;업무에 급급하여 기능만 되는 코드를 작성&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;프론트나 백엔드에 무관하게 하나의 언어를 깊게 파보고&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;AWS 에 대해 얕게 배운 것 같아서 조금 더 깊게 배울 수 있는 기회가 있으면 꼭 잡고 싶다.&lt;/p&gt;</description>
      <category>회고</category>
      <category>개발자 회고</category>
      <category>프로젝트 회고</category>
      <author>GiTo</author>
      <guid isPermaLink="true">https://program-error-review.tistory.com/100</guid>
      <comments>https://program-error-review.tistory.com/100#entry100comment</comments>
      <pubDate>Thu, 5 Oct 2023 11:17:29 +0900</pubDate>
    </item>
    <item>
      <title>인앱리뷰로 앱 평점 급상승 경험공유</title>
      <link>https://program-error-review.tistory.com/99</link>
      <description>&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;제목 후보로 있던 '앱의 라이프 사이클' 이라는 느낌으로 작성되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;앱 오픈 초창기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앱을 오픈하고 초창기에는 대대적인 마케팅을 진행하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대대적인 마케팅 -&amp;gt; 대량의 유저유입 -&amp;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-origin-width=&quot;2069&quot; data-origin-height=&quot;1125&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cu7zG3/btss92W7yo3/YOtYpSn0YpW4HTjeidSwNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cu7zG3/btss92W7yo3/YOtYpSn0YpW4HTjeidSwNK/img.png&quot; data-alt=&quot;에러만 나면 떨어지는 평점&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cu7zG3/btss92W7yo3/YOtYpSn0YpW4HTjeidSwNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcu7zG3%2Fbtss92W7yo3%2FYOtYpSn0YpW4HTjeidSwNK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2069&quot; height=&quot;1125&quot; data-origin-width=&quot;2069&quot; data-origin-height=&quot;1125&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;에러만 나면 떨어지는 평점&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;앱 안정기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앱 오픈 초창기의 오류들을 수정해나가면서 점차 안정적인 운영을 해나가고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버그픽스 및 최적화를 진행하며 앱을 더 사용하기 좋게 만들 수 있는 기간입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2차 마케팅 및 신규 콘텐츠 추가&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앱이 안정적이라 생각되며 신규 기획에 대한 아이디어들이 넘쳐나는 시기입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수익화와 킬러콘텐츠 확보를 위해 아이디어가 넘쳐흐르며 개발자와 싸우는 시기입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하고 싶은 건 많지만 개발자가 할 수 있는 일은 한정적입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 시기를 겪으면 완성도가 떨어진 콘텐츠가 추가될 가능성이 높습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2069&quot; data-origin-height=&quot;1125&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/65zz9/btsteROa5Wd/B7LoMRUkVCKHuY6XjZMak0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/65zz9/btsteROa5Wd/B7LoMRUkVCKHuY6XjZMak0/img.png&quot; data-alt=&quot;그렇게 다시 바닥으로..&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/65zz9/btsteROa5Wd/B7LoMRUkVCKHuY6XjZMak0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F65zz9%2FbtsteROa5Wd%2FB7LoMRUkVCKHuY6XjZMak0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2069&quot; height=&quot;1125&quot; data-origin-width=&quot;2069&quot; data-origin-height=&quot;1125&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;그렇게 다시 바닥으로..&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 또다시 떨어진 평점은 다시 돌아올 생각을 하지 않습니다..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제가 있을 때만 쓰게되는 리뷰와 평점들..을 보고만 있을순 없었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;인앱리뷰 도입 검토&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제가 있을 때 (장애라던가..) 만 리뷰를 쓴다는 관점으로 접근하여&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;긍정유저가 리뷰를 남기도록 유도하자는 의견이 이어져 인앱리뷰 도입을 검토하게 되었습니다.&lt;/p&gt;
&lt;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;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;li&gt;리워드를 지급하는 형식으로 높은 별점을 유도하면 안된다.&lt;/li&gt;
&lt;/ol&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;앱 안정화 이후 도입을 재검토하기로 결정되었습니다.. (신규콘텐츠 안정화!)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;인앱리뷰 드디어 도입&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 좋은 리뷰를 받기 위해 어떤 시점에 호출할지 정해야했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아이디어를 받던 중 나온 최적의 상황은 리워드가 생길 때 였다.&lt;/p&gt;
&lt;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;2069&quot; data-origin-height=&quot;1125&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nVSP0/btstlgs8on8/INNKEjSWcujkwu4J5oBM70/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nVSP0/btstlgs8on8/INNKEjSWcujkwu4J5oBM70/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nVSP0/btstlgs8on8/INNKEjSWcujkwu4J5oBM70/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnVSP0%2Fbtstlgs8on8%2FINNKEjSWcujkwu4J5oBM70%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2069&quot; height=&quot;1125&quot; data-origin-width=&quot;2069&quot; data-origin-height=&quot;1125&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;1.9까지 내려갔던 플레이스토어 리뷰평점이 4.7까지 상승했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ios 는 정책상 횟수 제한이 안드로이드보다 적다고 전달받았고 9월중에 도입 예정입니다.&lt;/p&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a title=&quot;모바일게임의 평점과 리뷰로 어플삭제사례 기사&quot; href=&quot;https://www.etnews.com/20150113000251&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;모바일게임의&amp;nbsp;평점과&amp;nbsp;리뷰로&amp;nbsp;어플삭제사례&amp;nbsp;기사&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a title=&quot;구글 플레이스토어 정책&quot; href=&quot;https://support.google.com/googleplay/android-developer/answer/9898684?sjid=11737477738081846672-AP&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;구글 플레이스토어 정책&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://developer.android.com/guide/playcore/in-app-review?hl=ko&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;구글 플레이스토어 인앱리뷰 개발자가이드&lt;/a&gt;&lt;/p&gt;</description>
      <category>회고</category>
      <category>별점</category>
      <category>앱 평점</category>
      <category>인앱리뷰</category>
      <author>GiTo</author>
      <guid isPermaLink="true">https://program-error-review.tistory.com/99</guid>
      <comments>https://program-error-review.tistory.com/99#entry99comment</comments>
      <pubDate>Wed, 6 Sep 2023 17:37:01 +0900</pubDate>
    </item>
    <item>
      <title>[MariaDB] 운영시간에 Index 추가해보기</title>
      <link>https://program-error-review.tistory.com/98</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 운영시간에 Index 를 추가해볼 일이 생겨 접하게된&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MariaDB Index 추가에 대해 정리해보려 합니다.&lt;/p&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;신규 서비스를 오픈하고 RDS 에 CPU Utilization 70% 알람이 와서 점검을 해봤다.&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;u&gt;해도 되나?&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내 기억속에 Index 를 추가하는 작업은&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;'운영시간에&amp;nbsp; 하면 안되고 lock 을 발생시킬 수 있다'&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;pre id=&quot;code_1693816438023&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;인덱스가 생성되는 동안 테이블은 읽기 및 쓰기 작업을 계속 사용할 수 있습니다. 

명령문 CREATE INDEX 는 테이블에 액세스하는 모든 트랜잭션이 완료된 후에만 완료되므로 
인덱스의 초기 상태는 테이블의 최신 내용을 반영합니다.

보조 인덱스 추가를 위한 온라인 DDL 지원은 
일반적으로 보조 인덱스 없이 테이블을 생성한 다음 
데이터가 로드된 후 보조 인덱스를 추가하여 
테이블 및 관련 인덱스 생성 및 로드의 전체 프로세스 속도를 높일 수 있음을 의미합니다.

CREATE INDEX 또는 ALTER TABLE 문의 실행이 완료될 때 테이블에 커밋된 데이터만 포함됩니다.

여기에는 커밋되지 않은 값, 이전 버전의 값 또는 삭제 표시가 되었지만 
이전 인덱스에서 아직 제거되지 않은 값이 포함되어 있지 않습니다.&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;Mysql 공식 도큐먼트에서 &lt;b&gt;Online DDL&lt;/b&gt; 이라는 키워드로 검색하면 아래와 같은 내용이 나온다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Online DDL 이라는 기술로 인덱스 생성 작업중에도 읽기 및 쓰기에 영향이 없다는 내용이였다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;966&quot; data-origin-height=&quot;537&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d79YhO/btss3VwHVew/Jw4pKml3A3ZAa4nhK7ZfKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d79YhO/btss3VwHVew/Jw4pKml3A3ZAa4nhK7ZfKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d79YhO/btss3VwHVew/Jw4pKml3A3ZAa4nhK7ZfKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd79YhO%2Fbtss3VwHVew%2FJw4pKml3A3ZAa4nhK7ZfKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;966&quot; height=&quot;537&quot; data-origin-width=&quot;966&quot; data-origin-height=&quot;537&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;b&gt;Create Index Downtime&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;1억건 20여분..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3억건 30몇분..&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;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;기존 120ms 가 걸리던 쿼리가 10ms 로 개선되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 풀스캔 14만건 조회하던 쿼리가 100개 미만 데이터 조회로 개선되었다.&lt;/p&gt;</description>
      <category>Database</category>
      <category>create index</category>
      <category>mysql</category>
      <category>online DDL</category>
      <author>GiTo</author>
      <guid isPermaLink="true">https://program-error-review.tistory.com/98</guid>
      <comments>https://program-error-review.tistory.com/98#entry98comment</comments>
      <pubDate>Mon, 4 Sep 2023 17:53:16 +0900</pubDate>
    </item>
    <item>
      <title>argocd git credential 변경하기</title>
      <link>https://program-error-review.tistory.com/97</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;오늘은 argocd git credential 변경 방법에 대해 공유드리려합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;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;1188&quot; data-origin-height=&quot;210&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/p08sl/btsj6lEDdIk/IH4PCxUHneGgfi4GvMeetK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/p08sl/btsj6lEDdIk/IH4PCxUHneGgfi4GvMeetK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/p08sl/btsj6lEDdIk/IH4PCxUHneGgfi4GvMeetK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fp08sl%2Fbtsj6lEDdIk%2FIH4PCxUHneGgfi4GvMeetK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1188&quot; height=&quot;210&quot; data-origin-width=&quot;1188&quot; data-origin-height=&quot;210&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;건강했던 argocd 가 어느날 아프기 시작했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;git login 정보가 변동되면서 발생한 사이드 이펙트였는데요.. (안쓰는줄 알았던 IAM 을 날려버려서.. 비밀번호가 바뀌었다)&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;1291&quot; data-origin-height=&quot;179&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blfZ0h/btsj7dmGtjv/qYSAirFWgMMz2msfRkdPs1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blfZ0h/btsj7dmGtjv/qYSAirFWgMMz2msfRkdPs1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blfZ0h/btsj7dmGtjv/qYSAirFWgMMz2msfRkdPs1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblfZ0h%2Fbtsj7dmGtjv%2FqYSAirFWgMMz2msfRkdPs1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1291&quot; height=&quot;179&quot; data-origin-width=&quot;1291&quot; data-origin-height=&quot;179&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;그래서 Repository 설정을 바꿔주면 되겠지 했는데.. 설정이 없습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1318&quot; data-origin-height=&quot;299&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WnMn0/btsj6NIhRgN/8vyhdKNDQHkNOMK6eukyvk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WnMn0/btsj6NIhRgN/8vyhdKNDQHkNOMK6eukyvk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WnMn0/btsj6NIhRgN/8vyhdKNDQHkNOMK6eukyvk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWnMn0%2Fbtsj6NIhRgN%2F8vyhdKNDQHkNOMK6eukyvk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1318&quot; height=&quot;299&quot; data-origin-width=&quot;1318&quot; data-origin-height=&quot;299&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;다음으로 시도한 방법은 새로 Connect 설정을 추가하는 것 이였는데..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동일한 target 을 바라보는 설정은 추가가 불가능하였고 upsert 하라는 메세지를 반환했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;argocd document 를 찾아보니 repo_add 에 upsert 가 있는 것을 찾았고 해당 방법으로 다시 시도합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://argo-cd.readthedocs.io/en/release-1.8/user-guide/commands/argocd_repo_add/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://argo-cd.readthedocs.io/en/release-1.8/user-guide/commands/argocd_repo_add/&lt;/a&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;1. kubernetes 에서 argocd pod 조회&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;argocd server&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;pod 에 접속&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. upsert command 실행&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;1177&quot; data-origin-height=&quot;86&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dgzsBy/btsj8CNcp3B/skZvSp5XIAOPKss2sBodN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dgzsBy/btsj8CNcp3B/skZvSp5XIAOPKss2sBodN0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dgzsBy/btsj8CNcp3B/skZvSp5XIAOPKss2sBodN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdgzsBy%2Fbtsj8CNcp3B%2FskZvSp5XIAOPKss2sBodN0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1177&quot; height=&quot;86&quot; data-origin-width=&quot;1177&quot; data-origin-height=&quot;86&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;FATA[0000]&amp;nbsp;Argo&amp;nbsp;CD&amp;nbsp;server&amp;nbsp;address&amp;nbsp;unspecified&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;address 를 못찾겠다.. 는 메세지를 봤으나 실패인줄 알고 또 헤메다가 다시 돌아왔습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;argocd 서버에서 argocd 명령을 실행시켰다고 바로 실행되는 것이 아닌 로그인 절차가 필요했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&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;1. kubernetes 에서 argocd pod 조회&lt;/p&gt;
&lt;pre id=&quot;code_1688364910085&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl get services -n argocd&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2. argocd server pod 에 접속&lt;/p&gt;
&lt;pre id=&quot;code_1688364920204&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ exec kubectl exec -i -t -n argocd argocd-server -c argocd-server -- sh -c &quot;clear; (bash || ash || sh)&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;3. argocd host login (host 를 입력하고 login 명령어를 실행하면 id / pw 를 물어봅니다)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1027&quot; data-origin-height=&quot;87&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEtSIP/btsj7dgaqO4/hK4F7FOTWVklOLhkZIAx90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEtSIP/btsj7dgaqO4/hK4F7FOTWVklOLhkZIAx90/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEtSIP/btsj7dgaqO4/hK4F7FOTWVklOLhkZIAx90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEtSIP%2Fbtsj7dgaqO4%2FhK4F7FOTWVklOLhkZIAx90%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1027&quot; height=&quot;87&quot; data-origin-width=&quot;1027&quot; data-origin-height=&quot;87&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1686891265064&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ argocd login {host}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;4. upsert command 실행&lt;/p&gt;
&lt;pre id=&quot;code_1686891408646&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ argocd repo add {git path} --username {username} --password {password} --upsert&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;argocd git credential 변경이 필요할 때 도움이 되셨으면 좋겠습니다.&lt;/p&gt;</description>
      <category>Error Review</category>
      <category>argocd</category>
      <category>change</category>
      <category>credential</category>
      <category>Git</category>
      <author>GiTo</author>
      <guid isPermaLink="true">https://program-error-review.tistory.com/97</guid>
      <comments>https://program-error-review.tistory.com/97#entry97comment</comments>
      <pubDate>Fri, 16 Jun 2023 13:58:34 +0900</pubDate>
    </item>
    <item>
      <title>AWS Bastion 개념 정리 (Bastion 이 뭐야?)</title>
      <link>https://program-error-review.tistory.com/96</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;bastion 뜻&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;Bastion&amp;nbsp;[ˈb&amp;aelig;stiən].&amp;nbsp;&quot;요새&quot;,&amp;nbsp;&quot;보루&quot;를&amp;nbsp;뜻하는&amp;nbsp;영어&amp;nbsp;단어이다.&amp;nbsp;성형&amp;nbsp;요새에서&amp;nbsp;돌출&amp;nbsp;지점마다&amp;nbsp;건설된&amp;nbsp;포루를&amp;nbsp;의미하기도&amp;nbsp;한다.&amp;nbsp;이때에는&amp;nbsp;능보(稜堡),&amp;nbsp;치성(雉城)이라고도&amp;nbsp;흔히&amp;nbsp;번역된다.&amp;nbsp;모난&amp;nbsp;작은&amp;nbsp;성&lt;br /&gt;&lt;br /&gt;그러나&amp;nbsp;자주&amp;nbsp;사용되지는&amp;nbsp;않고&amp;nbsp;이러한&amp;nbsp;의미로는&amp;nbsp;fortress가&amp;nbsp;압도적으로&amp;nbsp;많이&amp;nbsp;쓰인다.&amp;nbsp;이&amp;nbsp;단어는&amp;nbsp;오히려&amp;nbsp;은유적으로&amp;nbsp;어떤&amp;nbsp;것이&amp;nbsp;요새를&amp;nbsp;이룰&amp;nbsp;만큼&amp;nbsp;강성하게&amp;nbsp;모여있을&amp;nbsp;때&amp;nbsp;많이&amp;nbsp;사용하는&amp;nbsp;단어다.&amp;nbsp;그렇다고&amp;nbsp;요새로&amp;nbsp;사용해도&amp;nbsp;어색한&amp;nbsp;단어는&amp;nbsp;아니다.&amp;nbsp;더&amp;nbsp;나아가&amp;nbsp;&quot;수호자&quot;라는&amp;nbsp;의미로&amp;nbsp;은유되곤&amp;nbsp;한다.&lt;br /&gt;&lt;br /&gt;바스티유&amp;nbsp;감옥&amp;nbsp;습격사건으로도&amp;nbsp;유명한&amp;nbsp;프랑스&amp;nbsp;바스티유&amp;nbsp;요새(bastille)의&amp;nbsp;지소형&amp;nbsp;bastillon에서&amp;nbsp;유래했다.&amp;nbsp;&quot;시침질&amp;nbsp;하다&quot;를&amp;nbsp;의미하는&amp;nbsp;baste와&amp;nbsp;관련이&amp;nbsp;있을&amp;nbsp;가능성이&amp;nbsp;있다고&amp;nbsp;한다.#&lt;br /&gt;&lt;br /&gt;창작물&amp;nbsp;중에&amp;nbsp;이&amp;nbsp;단어를&amp;nbsp;고유명사로&amp;nbsp;한&amp;nbsp;것이&amp;nbsp;많으나&amp;nbsp;한글&amp;nbsp;표기는&amp;nbsp;통일되어있지&amp;nbsp;않다.&amp;nbsp;[ˈb&amp;aelig;stiən]을&amp;nbsp;한글로&amp;nbsp;전사하면&amp;nbsp;'배스티언'이지만&amp;nbsp;미국&amp;nbsp;중서부&amp;nbsp;영어로는&amp;nbsp;&quot;배스천&quot;[b&amp;aelig;stʃ(ə)n]이라&amp;nbsp;읽는다.&amp;nbsp;맥밀런&amp;nbsp;영어사전&amp;nbsp;한글&amp;nbsp;표기는&amp;nbsp;'배스천',&amp;nbsp;'바스티온'이&amp;nbsp;대부분이다.&amp;nbsp;&lt;br /&gt;&lt;span style=&quot;background-color: #fcfcfc; color: #666666;&quot;&gt;출처: 나무위키&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;AWS Bastion Architecture&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;981&quot; data-origin-height=&quot;672&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Bxc7t/btr2vn0Cclt/FKp7Tpk8ZvyLrCPKz82sAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Bxc7t/btr2vn0Cclt/FKp7Tpk8ZvyLrCPKz82sAk/img.png&quot; data-alt=&quot;출처 :&amp;amp;amp;nbsp;https://aws.amazon.com/ko/blogs&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Bxc7t/btr2vn0Cclt/FKp7Tpk8ZvyLrCPKz82sAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBxc7t%2Fbtr2vn0Cclt%2FFKp7Tpk8ZvyLrCPKz82sAk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;981&quot; height=&quot;672&quot; data-origin-width=&quot;981&quot; data-origin-height=&quot;672&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처 :&amp;amp;nbsp;https://aws.amazon.com/ko/blogs&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #fcfcfc; color: #666666;&quot;&gt;Bastion&amp;nbsp;은&amp;nbsp;외부에서&amp;nbsp;내부로&amp;nbsp;접근할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;게이트웨이&amp;nbsp;역활을&amp;nbsp;한다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #fcfcfc; color: #666666;&quot;&gt;AWS&amp;nbsp;기준으로&amp;nbsp;Bastion&amp;nbsp;host&amp;nbsp;를&amp;nbsp;Public&amp;nbsp;Subnet&amp;nbsp;에&amp;nbsp;구성하고&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #fcfcfc; color: #666666;&quot;&gt;내부&amp;nbsp;Instance&amp;nbsp;들을&amp;nbsp;Private&amp;nbsp;subnet&amp;nbsp;에&amp;nbsp;구성하여&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #fcfcfc; color: #666666;&quot;&gt;내부&amp;nbsp;Instance&amp;nbsp;접속을&amp;nbsp;Bastion&amp;nbsp;host&amp;nbsp;에서만&amp;nbsp;가능하도록&amp;nbsp;허용한다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #fcfcfc; color: #666666;&quot;&gt;내부&amp;nbsp;Instance&amp;nbsp;&lt;b&gt;접속경로가&amp;nbsp;제한&lt;/b&gt;되므로&amp;nbsp;Bastion&amp;nbsp;host&amp;nbsp;에&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #fcfcfc; color: #666666;&quot;&gt;보안구성을&amp;nbsp;통해&amp;nbsp;&lt;b&gt;제어&amp;nbsp;및&amp;nbsp;관리가&amp;nbsp;용이&lt;/b&gt;해지는&amp;nbsp;장점을&amp;nbsp;가진다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>AWS</category>
      <category>AWS</category>
      <category>Bastion</category>
      <author>GiTo</author>
      <guid isPermaLink="true">https://program-error-review.tistory.com/96</guid>
      <comments>https://program-error-review.tistory.com/96#entry96comment</comments>
      <pubDate>Tue, 7 Mar 2023 15:49:05 +0900</pubDate>
    </item>
    <item>
      <title>ArgoCD Slack Notification Setting</title>
      <link>https://program-error-review.tistory.com/95</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 ArgoCD Slack Notification Setting 을 해보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고사이트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://argocd-notifications.readthedocs.io/en/stable/services/slack/&quot;&gt;https://argocd-notifications.readthedocs.io/en/stable/services/slack/&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://argocd-notifications.readthedocs.io/en/stable/catalog/#triggers&quot;&gt;https://argocd-notifications.readthedocs.io/en/stable/catalog/#triggers&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;726&quot; data-origin-height=&quot;142&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvEnBV/btr2vnZeQFR/epos6kz0C9XBKxUJ4NaKk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvEnBV/btr2vnZeQFR/epos6kz0C9XBKxUJ4NaKk0/img.png&quot; data-alt=&quot;출처:&amp;amp;nbsp;https://argocd-notifications.readthedocs.io/en/stable/services/slack/&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvEnBV/btr2vnZeQFR/epos6kz0C9XBKxUJ4NaKk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvEnBV%2Fbtr2vnZeQFR%2Fepos6kz0C9XBKxUJ4NaKk0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;726&quot; height=&quot;142&quot; data-origin-width=&quot;726&quot; data-origin-height=&quot;142&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처:&amp;nbsp;https://argocd-notifications.readthedocs.io/en/stable/services/slack/&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;slack&amp;nbsp;configuration&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;1.&amp;nbsp;noti&amp;nbsp;를&amp;nbsp;보낼&amp;nbsp;slack&amp;nbsp;app&amp;nbsp;생성 &lt;br /&gt;&lt;a href=&quot;https://api.slack.com/apps&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://api.slack.com/apps&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;2.&amp;nbsp;1&amp;nbsp;에서&amp;nbsp;생성한&amp;nbsp;slack&amp;nbsp;app&amp;nbsp;에&amp;nbsp;write&amp;nbsp;권한&amp;nbsp;추가 &lt;br /&gt;OAuth&amp;nbsp;&amp;amp;&amp;nbsp;Permissions&amp;nbsp;탭에서&amp;nbsp;Scopes&amp;nbsp;추가 &lt;br /&gt;chat:write:bot&amp;nbsp;항목&amp;nbsp;추가 &lt;br /&gt;&lt;br /&gt;3.&amp;nbsp;Install&amp;nbsp;App&amp;nbsp;to&amp;nbsp;Workspace &lt;br /&gt;noti&amp;nbsp;를&amp;nbsp;받을&amp;nbsp;workspace&amp;nbsp;에&amp;nbsp;앱&amp;nbsp;추가 &lt;br /&gt;해당&amp;nbsp;과정에서&amp;nbsp;OAuth&amp;nbsp;Access&amp;nbsp;Token&amp;nbsp;은&amp;nbsp;아래&amp;nbsp;kubernetes&amp;nbsp;configuration&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;h3 data-ke-size=&quot;size23&quot;&gt;kubenetes configuration&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;1.&amp;nbsp;argocd&amp;nbsp;에서&amp;nbsp;제공하는&amp;nbsp;notification&amp;nbsp;패키지&amp;nbsp;다운로드&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://argocd-notifications.readthedocs.io/en/stable/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://argocd-notifications.readthedocs.io/en/stable/&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1678092167967&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj-labs/argocd-notifications/release-1.0/manifests/install.yaml
$ kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj-labs/argocd-notifications/release-1.0/catalog/install.yaml&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;2.&amp;nbsp;slack&amp;nbsp;secret&amp;nbsp;을&amp;nbsp;등록하기&amp;nbsp;위한&amp;nbsp;configmap&amp;nbsp;생성 &lt;/p&gt;
&lt;pre id=&quot;code_1678092184819&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# argocd-notifications-secret.yaml
apiVersion: v1
kind: Secret
metadata:
  name: argocd-notifications-secret
stringData:
  slack-token: {&quot;slack application secret token&quot;}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;3.&amp;nbsp;argocd&amp;nbsp;configmap&amp;nbsp;에&amp;nbsp;등록 &lt;/p&gt;
&lt;pre id=&quot;code_1678092199368&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl apply -f argocd-notifications-secret.yaml&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;4.&amp;nbsp;argocd&amp;nbsp;configmap&amp;nbsp;수정 &lt;/p&gt;
&lt;pre id=&quot;code_1678092209615&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ kubectl edit cm argocd-notifications-cm -n argocd&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1678092216387&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
data:
  service.slack: |
    token: {&quot;slack application secret token&quot;}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;5.&amp;nbsp;argoCD&amp;nbsp;에서&amp;nbsp;noti&amp;nbsp;설정 &lt;br /&gt;Name&amp;nbsp;에는&amp;nbsp;slack&amp;nbsp;noti&amp;nbsp;trigger,&amp;nbsp;value&amp;nbsp;에는&amp;nbsp;채널명을&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;1081&quot; data-origin-height=&quot;606&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qHlgb/btr1339F4t7/ubGuml1q7kQmKkV7jrBEt1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qHlgb/btr1339F4t7/ubGuml1q7kQmKkV7jrBEt1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qHlgb/btr1339F4t7/ubGuml1q7kQmKkV7jrBEt1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqHlgb%2Fbtr1339F4t7%2FubGuml1q7kQmKkV7jrBEt1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1081&quot; height=&quot;606&quot; data-origin-width=&quot;1081&quot; data-origin-height=&quot;606&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;trigger&amp;nbsp;참고사이트&amp;nbsp; &lt;br /&gt;&amp;nbsp;-&amp;nbsp;&lt;a href=&quot;https://argocd-notifications.readthedocs.io/en/stable/catalog/#app-health-degraded&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://argocd-notifications.readthedocs.io/en/stable/catalog/#app-health-degraded&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;key&amp;nbsp;value&amp;nbsp;참고사이트 &lt;br /&gt;&amp;nbsp;-&amp;nbsp;&lt;a href=&quot;https://argocd-notifications.readthedocs.io/en/stable/upgrading/0.x-1.0/#recipientsubscription-annotation&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://argocd-notifications.readthedocs.io/en/stable/upgrading/0.x-1.0/#recipientsubscription-annotation&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;예시&amp;nbsp; &lt;br /&gt;Name:&amp;nbsp;notifications.argoproj.io/subscribe.on-health-degraded.slack &lt;br /&gt;Value:&amp;nbsp;argo_noti_channel&lt;/p&gt;</description>
      <category>Kubernetes</category>
      <category>argocd</category>
      <category>Kubernetes</category>
      <category>Notification</category>
      <category>Slack</category>
      <author>GiTo</author>
      <guid isPermaLink="true">https://program-error-review.tistory.com/95</guid>
      <comments>https://program-error-review.tistory.com/95#entry95comment</comments>
      <pubDate>Mon, 6 Mar 2023 17:47:37 +0900</pubDate>
    </item>
    <item>
      <title>Windows 에 OpenShift 3.11 CLI 설치하기 (Windows Install OpenShift 3.11 CLI)</title>
      <link>https://program-error-review.tistory.com/94</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;해당 글은 Windows 에 OpenShift 3.11 CLI 를 설치하는 과정을 작성하였습니다.&lt;br&gt;&amp;nbsp;&lt;br&gt;OS : Windows 10 Home&lt;br&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot;&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;구글에 검색하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;734&quot; data-origin-height=&quot;623&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k5fdP/btrDy1gCcLC/mF3n4VYmBEQBLkCsWkvrik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k5fdP/btrDy1gCcLC/mF3n4VYmBEQBLkCsWkvrik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k5fdP/btrDy1gCcLC/mF3n4VYmBEQBLkCsWkvrik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk5fdP%2FbtrDy1gCcLC%2FmF3n4VYmBEQBLkCsWkvrik%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;734&quot; height=&quot;623&quot; data-origin-width=&quot;734&quot; data-origin-height=&quot;623&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;위에 있는 openshift docs 에 접속하면 OS 별로 OpenShift CLI (이후 oc) 를 설치하는 방법이 서술되어 있다.&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;734&quot; data-origin-height=&quot;749&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqozxM/btrDy0B1sVs/xt4J55bCNNG37CTnSYjYZK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqozxM/btrDy0B1sVs/xt4J55bCNNG37CTnSYjYZK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqozxM/btrDy0B1sVs/xt4J55bCNNG37CTnSYjYZK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqozxM%2FbtrDy0B1sVs%2Fxt4J55bCNNG37CTnSYjYZK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;734&quot; height=&quot;749&quot; data-origin-width=&quot;734&quot; data-origin-height=&quot;749&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;Red Hat Linux 는 RHSM 을 통해서 설치할 수 있으나&lt;br&gt;Mac 과 Windows 는 Red Hat Customer Portal 을 통해서 다운받으라고 되어있다.&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1206&quot; data-origin-height=&quot;620&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sH3VN/btrDynj9E8R/cPkzVuZkZGoVyse06sDiiK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sH3VN/btrDynj9E8R/cPkzVuZkZGoVyse06sDiiK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sH3VN/btrDynj9E8R/cPkzVuZkZGoVyse06sDiiK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsH3VN%2FbtrDynj9E8R%2FcPkzVuZkZGoVyse06sDiiK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1206&quot; height=&quot;620&quot; data-origin-width=&quot;1206&quot; data-origin-height=&quot;620&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;하지만 해당 링크를 통해 접속 후 로그인하면 서브스크립션을 가져오라고 한다.&lt;br&gt;자기네 제품의 평가판이라도 받아서 활성화하면 다운로드를 하게 해줄듯 하다..&lt;br&gt;&amp;nbsp;&lt;br&gt;&lt;s&gt;우리는 이 방법 외에 다른 방법을 선택하기로 합니다.&lt;/s&gt;&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;다시 구글에 검색하기&lt;/h3&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;734&quot; data-origin-height=&quot;623&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k5fdP/btrDy1gCcLC/mF3n4VYmBEQBLkCsWkvrik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k5fdP/btrDy1gCcLC/mF3n4VYmBEQBLkCsWkvrik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k5fdP/btrDy1gCcLC/mF3n4VYmBEQBLkCsWkvrik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk5fdP%2FbtrDy1gCcLC%2FmF3n4VYmBEQBLkCsWkvrik%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;734&quot; height=&quot;623&quot; data-origin-width=&quot;734&quot; data-origin-height=&quot;623&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;첫 사진의 아래를 보면 GitHub 의 Releases 페이지가 있습니다.&lt;br&gt;해당 페이지의 제일 아래를 보면...&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1267&quot; data-origin-height=&quot;435&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBFwbh/btrDy2fxMBp/yNiyW0B0KSKzNTptBHyn1K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBFwbh/btrDy2fxMBp/yNiyW0B0KSKzNTptBHyn1K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBFwbh/btrDy2fxMBp/yNiyW0B0KSKzNTptBHyn1K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBFwbh%2FbtrDy2fxMBp%2FyNiyW0B0KSKzNTptBHyn1K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1267&quot; height=&quot;435&quot; data-origin-width=&quot;1267&quot; data-origin-height=&quot;435&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;br&gt;이렇게 친절하게 zip 파일을 확인할 수 있습니다.&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1352&quot; data-origin-height=&quot;724&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/q4fna/btrDy0B1LYY/kFSNKRbOamgEvHMLlazv20/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/q4fna/btrDy0B1LYY/kFSNKRbOamgEvHMLlazv20/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/q4fna/btrDy0B1LYY/kFSNKRbOamgEvHMLlazv20/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fq4fna%2FbtrDy0B1LYY%2FkFSNKRbOamgEvHMLlazv20%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1352&quot; height=&quot;724&quot; data-origin-width=&quot;1352&quot; data-origin-height=&quot;724&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;다운로드 후 압축풀고 windows PATH 까지 잡아주면 끝&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;619&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MSGlx/btrDy1OvZHG/moDi7WthJVuTTSlhpkwI3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MSGlx/btrDy1OvZHG/moDi7WthJVuTTSlhpkwI3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MSGlx/btrDy1OvZHG/moDi7WthJVuTTSlhpkwI3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMSGlx%2FbtrDy1OvZHG%2FmoDi7WthJVuTTSlhpkwI3k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;964&quot; height=&quot;619&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;619&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>OpenShift</category>
      <category>OC</category>
      <category>OpenShfit</category>
      <category>OpenShiftCLI</category>
      <category>windows</category>
      <author>GiTo</author>
      <guid isPermaLink="true">https://program-error-review.tistory.com/94</guid>
      <comments>https://program-error-review.tistory.com/94#entry94comment</comments>
      <pubDate>Tue, 31 May 2022 11:16:38 +0900</pubDate>
    </item>
    <item>
      <title>[Spring Boot] 개발환경 세팅 및 프로젝트 생성</title>
      <link>https://program-error-review.tistory.com/93</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;해당 예제는 송자바코딩님의 &quot;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;자바 스프링부트 활용 웹개발 실무용&quot; 강의를 따라 진행하며 기록하였습니다.&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;OS : Windows 10 Home&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IDE : Eclipse 2021-09 버전&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Java : openjdk11&lt;/p&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: #171717; color: #ffffff;&quot;&gt;E01 서버개발 프로젝트 생성 + Mybatis + MariaDB 연동&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;520&quot; data-origin-height=&quot;865&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYLbg3/btrzcPEuU0V/rsfhWX8X08Wk5rk6YlNnGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYLbg3/btrzcPEuU0V/rsfhWX8X08Wk5rk6YlNnGK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYLbg3/btrzcPEuU0V/rsfhWX8X08Wk5rk6YlNnGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYLbg3%2FbtrzcPEuU0V%2FrsfhWX8X08Wk5rk6YlNnGK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;520&quot; height=&quot;865&quot; data-origin-width=&quot;520&quot; data-origin-height=&quot;865&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Eclipse Marketplace 에서 Spring Tool 설치&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;551&quot; data-origin-height=&quot;781&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tqTRD/btrzcRChOam/UTwVfoGPIlYkaIXRdfSvMK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tqTRD/btrzcRChOam/UTwVfoGPIlYkaIXRdfSvMK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tqTRD/btrzcRChOam/UTwVfoGPIlYkaIXRdfSvMK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtqTRD%2FbtrzcRChOam%2FUTwVfoGPIlYkaIXRdfSvMK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;781&quot; data-origin-width=&quot;551&quot; data-origin-height=&quot;781&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;Project Explorer 에서 우클릭 -&amp;gt; New -&amp;gt; Spring Boot -&amp;gt; Spring Starter Project&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;551&quot; data-origin-height=&quot;778&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/o2s3G/btry7S3a6kW/Ivfaq04g8IuVeHRqqv75uk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/o2s3G/btry7S3a6kW/Ivfaq04g8IuVeHRqqv75uk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/o2s3G/btry7S3a6kW/Ivfaq04g8IuVeHRqqv75uk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo2s3G%2Fbtry7S3a6kW%2FIvfaq04g8IuVeHRqqv75uk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;778&quot; data-origin-width=&quot;551&quot; data-origin-height=&quot;778&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;선택한 패키지가 pom.xml 에 자동으로 선언된다.&lt;/p&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 -&amp;gt; Finish 로 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;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;1398&quot; data-origin-height=&quot;525&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cpOmuL/btrzcQpS1zJ/KDK5medUjk9UOOtLIldCZK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cpOmuL/btrzcQpS1zJ/KDK5medUjk9UOOtLIldCZK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cpOmuL/btrzcQpS1zJ/KDK5medUjk9UOOtLIldCZK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcpOmuL%2FbtrzcQpS1zJ%2FKDK5medUjk9UOOtLIldCZK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1398&quot; height=&quot;525&quot; data-origin-width=&quot;1398&quot; data-origin-height=&quot;525&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;1184&quot; data-origin-height=&quot;760&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cpNL24/btrzg4Hyfkg/HYSH8lkbF67ndBwUDubTZk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cpNL24/btrzg4Hyfkg/HYSH8lkbF67ndBwUDubTZk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cpNL24/btrzg4Hyfkg/HYSH8lkbF67ndBwUDubTZk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcpNL24%2Fbtrzg4Hyfkg%2FHYSH8lkbF67ndBwUDubTZk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;760&quot; data-origin-width=&quot;1184&quot; data-origin-height=&quot;760&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Run Spring Boot App&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;1012&quot; data-origin-height=&quot;438&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTamem/btrzenozyDg/jms0ng1RWI2kMHVfK4TnH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTamem/btrzenozyDg/jms0ng1RWI2kMHVfK4TnH0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTamem/btrzenozyDg/jms0ng1RWI2kMHVfK4TnH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTamem%2FbtrzenozyDg%2Fjms0ng1RWI2kMHVfK4TnH0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;438&quot; data-origin-width=&quot;1012&quot; data-origin-height=&quot;438&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에러가 발생한 것을 확인할 수 있으며 메세지를 확인해보면 database 설정 관련 문제인 것으로 보인다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 내용으로 검색하면 많은 예시가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Failed&amp;nbsp;to&amp;nbsp;configure&amp;nbsp;a&amp;nbsp;DataSource:&amp;nbsp;'url'&amp;nbsp;attribute&amp;nbsp;is&amp;nbsp;not&amp;nbsp;specified&amp;nbsp;and&amp;nbsp;no&amp;nbsp;embedded&amp;nbsp;datasource&amp;nbsp;could&amp;nbsp;be&amp;nbsp;configured.&lt;/p&gt;
&lt;p data-ke-size=&quot;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;1122&quot; data-origin-height=&quot;405&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vNCHD/btrzfBz7pUJ/Hg6g4HILMFXYSWbTgpViS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vNCHD/btrzfBz7pUJ/Hg6g4HILMFXYSWbTgpViS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vNCHD/btrzfBz7pUJ/Hg6g4HILMFXYSWbTgpViS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvNCHD%2FbtrzfBz7pUJ%2FHg6g4HILMFXYSWbTgpViS1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;405&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;405&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;예제를 따라 Configuration 관리를 위한 패키지를 생성하고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DatabaseConfiguration Class 를 작성해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;@ (어노테이션) 을 작성하고 Ctrl + Space Bar 단축키를 사용하면 필요한 Class 를 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;@Configuration 어노테이션 아래 @Bean 어노테이션을 선언하고 메소드를 작성하면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 메소드가 스프링 컨테이너의 빈으로 등록된다.&lt;/p&gt;
&lt;figure id=&quot;og_1649835353940&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;[Spring] 빈 등록을 위한 어노테이션 @Bean, @Configuration, @Component 차이 및 비교 - (1/2)&quot; data-og-description=&quot;기존의 Spring MVC에서는 xml을 활용하여 Bean을 등록하고 있었다. 하지만 프로젝트의 규모가 커짐에 따라 사용하는 요소들을 xml에 등록하는 것이 상당히 번거로워 져서 어노테이션(Annotation, @)를 활&quot; data-og-host=&quot;mangkyu.tistory.com&quot; data-og-source-url=&quot;https://mangkyu.tistory.com/75&quot; data-og-url=&quot;https://mangkyu.tistory.com/75&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/OG4Kq/hyN1HkhnWg/koe5zmy8gknfNDyMPjS080/img.png?width=800&amp;amp;height=213&amp;amp;face=0_0_800_213,https://scrap.kakaocdn.net/dn/by2D2l/hyN1IQ2qNx/QVccILPr7n1noKkBpcnUl1/img.png?width=800&amp;amp;height=213&amp;amp;face=0_0_800_213,https://scrap.kakaocdn.net/dn/MVmT8/hyN1CDg4TA/pnbKNoqf5kYP3wqVtOqW11/img.png?width=879&amp;amp;height=235&amp;amp;face=0_0_879_235&quot;&gt;&lt;a href=&quot;https://mangkyu.tistory.com/75&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://mangkyu.tistory.com/75&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/OG4Kq/hyN1HkhnWg/koe5zmy8gknfNDyMPjS080/img.png?width=800&amp;amp;height=213&amp;amp;face=0_0_800_213,https://scrap.kakaocdn.net/dn/by2D2l/hyN1IQ2qNx/QVccILPr7n1noKkBpcnUl1/img.png?width=800&amp;amp;height=213&amp;amp;face=0_0_800_213,https://scrap.kakaocdn.net/dn/MVmT8/hyN1CDg4TA/pnbKNoqf5kYP3wqVtOqW11/img.png?width=879&amp;amp;height=235&amp;amp;face=0_0_879_235');&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;[Spring] 빈 등록을 위한 어노테이션 @Bean, @Configuration, @Component 차이 및 비교 - (1/2)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;기존의 Spring MVC에서는 xml을 활용하여 Bean을 등록하고 있었다. 하지만 프로젝트의 규모가 커짐에 따라 사용하는 요소들을 xml에 등록하는 것이 상당히 번거로워 져서 어노테이션(Annotation, @)를 활&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;mangkyu.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;이후 resources\application.properties 에 spring.datasource 설정값을 입력하면 해당 설정이 반영된다.&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;1311&quot; data-origin-height=&quot;423&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOSRNc/btrzeLh4G6o/a076knLGCWbKqvEPLtKuzk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOSRNc/btrzeLh4G6o/a076knLGCWbKqvEPLtKuzk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOSRNc/btrzeLh4G6o/a076knLGCWbKqvEPLtKuzk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOSRNc%2FbtrzeLh4G6o%2Fa076knLGCWbKqvEPLtKuzk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1311&quot; height=&quot;423&quot; data-origin-width=&quot;1311&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;application.properties 를 작성하고 다시 Run Spring Boot App&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;1398&quot; data-origin-height=&quot;395&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n1WzD/btrzi3IHF7a/VRiGIBocZmLY6a7R7eKz9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n1WzD/btrzi3IHF7a/VRiGIBocZmLY6a7R7eKz9k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n1WzD/btrzi3IHF7a/VRiGIBocZmLY6a7R7eKz9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn1WzD%2Fbtrzi3IHF7a%2FVRiGIBocZmLY6a7R7eKz9k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1398&quot; height=&quot;395&quot; data-origin-width=&quot;1398&quot; data-origin-height=&quot;395&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;강의에서는 mariaDB jdbc 를 pom.xml 에 dependency 로 등록하지만 현재 버전에서는 바로 실행이 된다.&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;1810&quot; data-origin-height=&quot;903&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjZpyD/btrzi1RIf6e/WWt2kbsRboWy71qe1CxQAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjZpyD/btrzi1RIf6e/WWt2kbsRboWy71qe1CxQAk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjZpyD/btrzi1RIf6e/WWt2kbsRboWy71qe1CxQAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjZpyD%2Fbtrzi1RIf6e%2FWWt2kbsRboWy71qe1CxQAk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1810&quot; height=&quot;903&quot; data-origin-width=&quot;1810&quot; data-origin-height=&quot;903&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스프링부트가 실행된 8080 포트로 접속했을 때 Whitelabel Error Page 가 보일 것이며&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;접속한 로그가 Console 에 찍힌 것을 확인할 수 있다.&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;style5&quot; /&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;@Bean 과 @Configuration 의 등록방법과 Bean 이 무슨 역활을 하는지 얕게라도 알게됨&lt;/p&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;&lt;b&gt;느낀점&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Spring 이 왜 대규모사이트에서 사용하는지 알것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생각보다 기본라이브러리가 많아서 공부할 점이 많아보인다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고사이트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://mangkyu.tistory.com/75&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://mangkyu.tistory.com/75&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youtu.be/AcbzhJoQ-OY&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://youtu.be/AcbzhJoQ-OY&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>강의따라하기/Java</category>
      <category>spring boot</category>
      <category>송자바코딩</category>
      <author>GiTo</author>
      <guid isPermaLink="true">https://program-error-review.tistory.com/93</guid>
      <comments>https://program-error-review.tistory.com/93#entry93comment</comments>
      <pubDate>Wed, 13 Apr 2022 17:02:09 +0900</pubDate>
    </item>
    <item>
      <title>[AWS CI/CD] CodeBuild 정리</title>
      <link>https://program-error-review.tistory.com/92</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;AWS 의 CI/CD 툴인 CodePipeline 의 기능 중 Build Stage 를 담당하는&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CodeBuild 의 Flow 에 대해 정리해두려고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;미리 보면 좋은 내용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://program-error-review.tistory.com/91&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2021.12.06 - [AWS] - AWS CI/CD CodePipeline 개념정리&lt;/a&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;h3 data-ke-size=&quot;size23&quot;&gt;AWS CodeBuild 란?&lt;/h3&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;676&quot; data-origin-height=&quot;303&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/W4n2I/btrpcO8TVew/WqC0Xn5DQJCDgpdMcOVFkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/W4n2I/btrpcO8TVew/WqC0Xn5DQJCDgpdMcOVFkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/W4n2I/btrpcO8TVew/WqC0Xn5DQJCDgpdMcOVFkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FW4n2I%2FbtrpcO8TVew%2FWqC0Xn5DQJCDgpdMcOVFkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;676&quot; height=&quot;303&quot; data-origin-width=&quot;676&quot; data-origin-height=&quot;303&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;설명은 사진으로 대체하고 등록방법 및 Flow 에 대해 알아봅시다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;AWS CodeBuild 빌드 프로젝트 생성&lt;/h3&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;824&quot; data-origin-height=&quot;608&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wam8q/btrpdnQRWBl/x08UzaAYzW1kKlRWYWJnvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wam8q/btrpdnQRWBl/x08UzaAYzW1kKlRWYWJnvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wam8q/btrpdnQRWBl/x08UzaAYzW1kKlRWYWJnvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fwam8q%2FbtrpdnQRWBl%2Fx08UzaAYzW1kKlRWYWJnvK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;824&quot; height=&quot;608&quot; data-origin-width=&quot;824&quot; data-origin-height=&quot;608&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Step1&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CodeBuild - 빌드 프로젝트 - 빌드 프로젝트 생성&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;801&quot; data-origin-height=&quot;513&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dwmTO6/btro7gSLxJ4/9EUcH4DZYtRwHRO33jMTG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dwmTO6/btro7gSLxJ4/9EUcH4DZYtRwHRO33jMTG0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dwmTO6/btro7gSLxJ4/9EUcH4DZYtRwHRO33jMTG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdwmTO6%2Fbtro7gSLxJ4%2F9EUcH4DZYtRwHRO33jMTG0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;801&quot; height=&quot;513&quot; data-origin-width=&quot;801&quot; data-origin-height=&quot;513&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Step2&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;GitHub 을 사용해도 무관하며 AWS CodeCommit 도 GitHub 과 유사하다.&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;810&quot; data-origin-height=&quot;812&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCQfb0/btrpcOurrdY/MKbjx2NnzkCQjPuAcvBwkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCQfb0/btrpcOurrdY/MKbjx2NnzkCQjPuAcvBwkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCQfb0/btrpcOurrdY/MKbjx2NnzkCQjPuAcvBwkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCQfb0%2FbtrpcOurrdY%2FMKbjx2NnzkCQjPuAcvBwkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;810&quot; height=&quot;812&quot; data-origin-width=&quot;810&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;&lt;b&gt;Step3&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Build 환경 및 서비스 역할 지정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빌드환경은 aws linux 를 써도 무관하며 서비스 역할이 있을 시 등록해주면 됩니다.&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;232&quot; data-origin-height=&quot;199&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwHZIH/btro8wuiVx4/HQyyty9Ghzk5VtjBBC9Uk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwHZIH/btro8wuiVx4/HQyyty9Ghzk5VtjBBC9Uk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwHZIH/btro8wuiVx4/HQyyty9Ghzk5VtjBBC9Uk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwHZIH%2Fbtro8wuiVx4%2FHQyyty9Ghzk5VtjBBC9Uk1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;232&quot; height=&quot;199&quot; data-origin-width=&quot;232&quot; data-origin-height=&quot;199&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새 서비스 역할이 지정되면 위와 같이 codebuild 가 신뢰할 수 있는 개체로 등록된 것을 확인할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;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;833&quot; data-origin-height=&quot;312&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c1ci5j/btrpdpHScpj/FD9rMOgA41S5Wc76gkme50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c1ci5j/btrpdpHScpj/FD9rMOgA41S5Wc76gkme50/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c1ci5j/btrpdpHScpj/FD9rMOgA41S5Wc76gkme50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc1ci5j%2FbtrpdpHScpj%2FFD9rMOgA41S5Wc76gkme50%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;833&quot; height=&quot;312&quot; data-origin-width=&quot;833&quot; data-origin-height=&quot;312&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Step4&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Build Command 입력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본적으로 buildspec 파일을 사용하도록 설정되어 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;buildspec 명령은 공식문서를 참고할 수 있습니다.&lt;/p&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.aws.amazon.com/ko_kr/codebuild/latest/userguide/build-spec-ref.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://docs.aws.amazon.com/ko_kr/codebuild/latest/userguide/build-spec-ref.html&lt;/a&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;저는 install, build, post_build phase 를 사용하여&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Docker 설치, docker image commit (ECR), helm-chart commit 과정을 진행합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;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;812&quot; data-origin-height=&quot;812&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eCzJA4/btro7C2kRTE/puSKE230rZIySdOt51rktk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eCzJA4/btro7C2kRTE/puSKE230rZIySdOt51rktk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eCzJA4/btro7C2kRTE/puSKE230rZIySdOt51rktk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeCzJA4%2Fbtro7C2kRTE%2FpuSKE230rZIySdOt51rktk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;812&quot; height=&quot;812&quot; data-origin-width=&quot;812&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;&lt;b&gt;Step5&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아티팩트 설정으로 빌드에 사용된 파일을 S3 버킷에 캐싱할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 설정을 통해 빌드속도가 비약적으로 상승할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1511&quot; data-origin-height=&quot;765&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bVevIH/btro13fBnDb/NCLdkqlEo4vL59DSl5xNk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bVevIH/btro13fBnDb/NCLdkqlEo4vL59DSl5xNk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bVevIH/btro13fBnDb/NCLdkqlEo4vL59DSl5xNk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVevIH%2Fbtro13fBnDb%2FNCLdkqlEo4vL59DSl5xNk0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1511&quot; height=&quot;765&quot; data-origin-width=&quot;1511&quot; data-origin-height=&quot;765&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;해당 페이지에서는 빌드, 빌드 기록 확인, 세부정보 등을 확인할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과적으로 CodeBuild 과정을 거치면 application 을 사용할 수 있는 준비가 완료되며&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;이후 CodePipeline 에 연결하여 자동배포하는 과정에 대해 정리해보겠습니다.&lt;/p&gt;</description>
      <category>AWS</category>
      <category>AWS</category>
      <category>ci/cd</category>
      <category>CodeBuild</category>
      <author>GiTo</author>
      <guid isPermaLink="true">https://program-error-review.tistory.com/92</guid>
      <comments>https://program-error-review.tistory.com/92#entry92comment</comments>
      <pubDate>Tue, 28 Dec 2021 17:44:07 +0900</pubDate>
    </item>
    <item>
      <title>[AWS CI/CD] CodePipeline 개념정리</title>
      <link>https://program-error-review.tistory.com/91</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;AWS 의 CI/CD 툴인 CodePipeline 에 대해 정리해보려고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;미리 보면 좋은 내용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://program-error-review.tistory.com/66&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2021.04.17 - [Linux/Docker] - Docker 사용해보기 - 1 (Why Docker 2편 + CentOS 7.9 Docker 설치)&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://program-error-review.tistory.com/68&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2021.05.10 - [Linux/Docker] - Docker 사용해보기 - 3 (python 모듈 Docker 에서 실행하기)&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://program-error-review.tistory.com/69&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2021.05.24 - [Linux/Docker] - Docker 사용해보기 - 4 (오케스트레이션 도구소개)&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;AWS CodePipeline 이란?&lt;/h3&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;CI/CD 툴이라고 생각하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;*CI : Continuous Integration&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;*CD : Continuous Delivery / Deployment&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;1573&quot; data-origin-height=&quot;789&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxDLwC/btrnbJoJKBM/nmOA5HzflyxXcofikQBG80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxDLwC/btrnbJoJKBM/nmOA5HzflyxXcofikQBG80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxDLwC/btrnbJoJKBM/nmOA5HzflyxXcofikQBG80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxDLwC%2FbtrnbJoJKBM%2FnmOA5HzflyxXcofikQBG80%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1573&quot; height=&quot;789&quot; data-origin-width=&quot;1573&quot; data-origin-height=&quot;789&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: #ffc1c8;&quot;&gt;출처: &lt;a style=&quot;color: #ffc1c8;&quot; href=&quot;http://www.dcaulfield.com/devops-explained/&quot;&gt;Devops Explained&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;AWS CodePipeline Flow&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;722&quot; data-origin-height=&quot;262&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/crLLc8/btrm2o7gW9I/K3Du6nBWAJU52FS6SKYTQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/crLLc8/btrm2o7gW9I/K3Du6nBWAJU52FS6SKYTQ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/crLLc8/btrm2o7gW9I/K3Du6nBWAJU52FS6SKYTQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcrLLc8%2Fbtrm2o7gW9I%2FK3Du6nBWAJU52FS6SKYTQ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;722&quot; height=&quot;262&quot; data-origin-width=&quot;722&quot; data-origin-height=&quot;262&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AWS CodePipeline 의 Flow 는 아래와 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Source Stage -&amp;gt; Build Stage -&amp;gt; Deploy Stage&lt;/p&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. Source Stage&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Source Stage 는 Source Code 형상관리 툴이다. (github 과 유사하다)&lt;/li&gt;
&lt;li&gt;AWS 에서는 CodeCommit 이라는 개발자 도구를 제공한다.&lt;/li&gt;
&lt;li&gt;CodeCommit 을 기준으로 특정 Branch 에 Push 가 발생할 시 Pipeline 이 동작한다.&lt;/li&gt;
&lt;li&gt;Repository 와 BranchName 기준으로 target 을 정할 수 있다.&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;2. Build Stage&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Build Stage 는 Source Stage 를 기준으로 Docker Image 로 빌드하는 단계이다.&lt;/li&gt;
&lt;li&gt;AWS 에서는 CodeBuild 라는 개발자 도구를 제공한다.&lt;/li&gt;
&lt;li&gt;Source Stage Repository 에 buildspec.yml 을 기준으로 빌드를 진행한다.&lt;/li&gt;
&lt;li&gt;Build Stage 는 세 단계 (phase) 로 나누어 진행한다. (install -&amp;gt; post build -&amp;gt; build)&lt;/li&gt;
&lt;li&gt;빌드에 성공한 이미지는 ECR 과 같은 repo 에 push 한다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;*ECR 은 Elastic Container Registry 의 약자로 Docker repo 와 유사하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;빌드 시 필요한 이미지나 라이브러리는 S3 또는 로컬에 cache 로 저장하며 최초 1회만 오래걸린다.&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;3. Deploy Stage&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Deploy Stage 는 빌드된 이미지를 기준으로 배포하는 단계이다.&lt;/li&gt;
&lt;li&gt;AWS 에서는 CodeDeploy 라는 개발자 도구를 제공한다.&lt;/li&gt;
&lt;li&gt;ECR 에 Commit 이 발생하면 배포 target 에 업데이트한다.&lt;/li&gt;
&lt;li&gt;현재 진행해본 케이스는 target 이 EKS 인 경우이다.&lt;/li&gt;
&lt;li&gt;CodeDeploy 를 사용해도 되나 내부 사정상 ArgoCD 연동을 하였다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AWS Pipeline 에 대해 가볍게(?) 알아보았습니다.&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;</description>
      <category>AWS</category>
      <category>AWS</category>
      <category>CICD</category>
      <category>CodePipeline</category>
      <category>DevOps</category>
      <author>GiTo</author>
      <guid isPermaLink="true">https://program-error-review.tistory.com/91</guid>
      <comments>https://program-error-review.tistory.com/91#entry91comment</comments>
      <pubDate>Mon, 6 Dec 2021 16:10:12 +0900</pubDate>
    </item>
  </channel>
</rss>