<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>컴공생의 다이어리</title>
    <link>https://computer-science-student.tistory.com/</link>
    <description>공부하고 있는 내용이나 궁금했던 내용 정리하는 블로그  </description>
    <language>ko</language>
    <pubDate>Wed, 6 May 2026 22:24:56 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>컴공 K</managingEditor>
    <image>
      <title>컴공생의 다이어리</title>
      <url>https://tistory1.daumcdn.net/tistory/4003283/attach/61261f46ca5147238646c5213bdbc307</url>
      <link>https://computer-science-student.tistory.com</link>
    </image>
    <item>
      <title>[nGrinder] docker-compose로 환경 구성하기(Mac M3 기준)</title>
      <link>https://computer-science-student.tistory.com/794</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000; background-color: #ffc1c8;&quot;&gt;&lt;b&gt;[nGrinder] docker-compose로 환경 구성하기&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;네이버에서 만든 부하 테스트 툴인 nGrinder를 로컬에 설치하지 않고 도커 환경으로 설정하고 싶다는 욕심을 품게되며.. 예상보다 긴 싸움을 하게되었다. 이 글에서는 그 결과에 대한 핵심 내용을 정리하고자 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;이 글은 24.12.01 기준 실리콘 맥 기준으로 작성된 글이기 때문에 다른 환경에서는 제대로 동작하지 않을 가능성도 있습니다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;최종 결과물을 미리 공유합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;a href=&quot;https://drive.google.com/drive/folders/1OIv5V3Ln4872Wc-aAZwhBD_HZE-geTct?usp=sharing&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://drive.google.com/drive/folders/1OIv5V3Ln4872Wc-aAZwhBD_HZE-geTct?usp=sharing&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1732985419650&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;Code-Snippet/Testing/Performace-Test/ngrinder at main &amp;middot; CodeDiary18-Study/Code-Snippet&quot; data-og-description=&quot;프로그래밍 관련 코드 조각들. Contribute to CodeDiary18-Study/Code-Snippet development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/CodeDiary18-Study/Code-Snippet/tree/main/Testing/Performace-Test/ngrinder&quot; data-og-url=&quot;https://github.com/CodeDiary18-Study/Code-Snippet/tree/main/Testing/Performace-Test/ngrinder&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bh7vD3/hyXDhqhH0l/RXNymtPI6ZLhwTbJhoq3JK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/bEX96b/hyXGHAQqkZ/HDpMFNO0pnEjToqa2aNYxk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/b2an2S/hyXDfMN2zN/Kqdik5MAyt1JheK5QymW51/img.png?width=659&amp;amp;height=595&amp;amp;face=0_0_659_595&quot;&gt;&lt;a href=&quot;https://github.com/CodeDiary18-Study/Code-Snippet/tree/main/Testing/Performace-Test/ngrinder&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/CodeDiary18-Study/Code-Snippet/tree/main/Testing/Performace-Test/ngrinder&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bh7vD3/hyXDhqhH0l/RXNymtPI6ZLhwTbJhoq3JK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/bEX96b/hyXGHAQqkZ/HDpMFNO0pnEjToqa2aNYxk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/b2an2S/hyXDfMN2zN/Kqdik5MAyt1JheK5QymW51/img.png?width=659&amp;amp;height=595&amp;amp;face=0_0_659_595');&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;Code-Snippet/Testing/Performace-Test/ngrinder at main &amp;middot; CodeDiary18-Study/Code-Snippet&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;프로그래밍 관련 코드 조각들. Contribute to CodeDiary18-Study/Code-Snippet development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;243&quot; data-origin-height=&quot;312&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/37zIR/btsK1Jz2kwH/ghkVbQmhZWqpxjPNW1TCMK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/37zIR/btsK1Jz2kwH/ghkVbQmhZWqpxjPNW1TCMK/img.png&quot; data-alt=&quot;최종 디렉토리 구조&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/37zIR/btsK1Jz2kwH/ghkVbQmhZWqpxjPNW1TCMK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F37zIR%2FbtsK1Jz2kwH%2FghkVbQmhZWqpxjPNW1TCMK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;231&quot; height=&quot;311&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;243&quot; data-origin-height=&quot;312&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;최종 디렉토리 구조&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;box-sizing: border-box; border-right-width: 0px; border-bottom: #6B66FF 1px solid; margin: 5px 0px; border-left: #6B66FF 15px solid; letter-spacing: 1px; line-height: 1.5; border-top-width: 0px; padding: 3px 5px 3px 5px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&amp;nbsp;nGrinder controller 설정&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;u&gt;nGrinder는 Docker Hub에서 &lt;b&gt;AMD64 기반의 칩셋 지원 이미지만 지원&lt;/b&gt;&lt;/u&gt;하기 때문에 &lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;실리콘 맥 혹은 arm 기반 윈도우를 위한 컨테이너 이미지가 지원되지 않는다. 그렇기 때문에 ngrinder 도커 이미지를 활용할 수 없었다.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;그래서 &lt;a href=&quot;https://github.com/naver/ngrinder/releases&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;nGrinder 깃허브&lt;/a&gt;에서 제공하는 &lt;b&gt;nGrinder 컨트롤러 war 파일&lt;/b&gt;을 활용하기로 했다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1199&quot; data-origin-height=&quot;666&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/boLO2x/btsK3RCRlHT/HvhJrQ2xK6kkxT2bhMAXa0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/boLO2x/btsK3RCRlHT/HvhJrQ2xK6kkxT2bhMAXa0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/boLO2x/btsK3RCRlHT/HvhJrQ2xK6kkxT2bhMAXa0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FboLO2x%2FbtsK3RCRlHT%2FHvhJrQ2xK6kkxT2bhMAXa0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;527&quot; height=&quot;293&quot; data-origin-width=&quot;1199&quot; data-origin-height=&quot;666&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;war 파일을 로컬에 직접 다운로드 받고나서 구성할 수도 있지만 Dockefile 구성에서 다운받도록 설정하였다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1732982552990&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# ngrinder-controller/Dockefile
FROM openjdk:11-slim

# WAR 파일 다운로드 URL 설정
# https://github.com/naver/ngrinder/releases 에서 원하는 버전의 WAR 파일 URL을 설정
ARG WAR_FILE_TARGET_URL=https://github.com/naver/ngrinder/releases/download/ngrinder-3.5.9-p1-20240613/ngrinder-controller-3.5.9-p1.war

# curl 설치
RUN apt-get update &amp;amp;&amp;amp; apt-get install -y curl &amp;amp;&amp;amp; rm -rf /var/lib/apt/lists/*

# 네트워크에서 WAR 파일 다운로드
RUN curl -fL -o /app.war ${WAR_FILE_TARGET_URL}

ENTRYPOINT [&quot;java&quot;, &quot;-jar&quot;, &quot;/app.war&quot;]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;컨르롤러 Dockerfile을 설정한 후 docker-compose.yml 파일을 다음과 같이 구성한 후 &lt;b&gt;docker-compose up&lt;/b&gt; 명령어를 입력한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1732982733724&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# docker-compose.yml
services:
  controller:
    container_name: controller
    build:
      context: ./ngrinder-controller
      dockerfile: Dockerfile
    ports:
      - &quot;8080:8080&quot; # 웹 접속 포트 (nGrinder 컨트롤러의 대시보드 및 설정 페이지 접속)
      - &quot;12000-12009:12000-12009&quot; # 에이전트와 컨트롤러 간 통신 포트 범위 (테스트 실행 시 사용)
      - &quot;16001:16001&quot; # 컨트롤러와 에이전트 간 내부 제어 통신 포트&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1732983231988&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker-compose up&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;&lt;a href=&quot;http://127.0.0.1:8080/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;http://127.0.0.1:8080/&lt;/a&gt; &lt;span style=&quot;color: #000000;&quot;&gt;으로 접속하면 로그인창이 뜨는데 아이디와 비밀번호 모두 &lt;b&gt;admin&lt;/b&gt;을 입력하여 로그인을 수행한다. 아래 두번째 이미지같이 나오면 컨트롤러는 성공적으로 설정이 된 것이다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kDF6p/btsK3wll3dE/rrFTI7onrkL522iePTMmrK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kDF6p/btsK3wll3dE/rrFTI7onrkL522iePTMmrK/img.png&quot; data-origin-width=&quot;738&quot; data-origin-height=&quot;636&quot; data-is-animation=&quot;false&quot; width=&quot;453&quot; height=&quot;390&quot; style=&quot;width: 39.2589%; margin-right: 10px;&quot; data-widthpercent=&quot;39.72&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kDF6p/btsK3wll3dE/rrFTI7onrkL522iePTMmrK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkDF6p%2FbtsK3wll3dE%2FrrFTI7onrkL522iePTMmrK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;738&quot; height=&quot;636&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbGhxT/btsK2XcHBeD/8KKIc8F0kC4NUbRXxLpssK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbGhxT/btsK2XcHBeD/8KKIc8F0kC4NUbRXxLpssK/img.png&quot; data-origin-width=&quot;1245&quot; data-origin-height=&quot;707&quot; data-is-animation=&quot;false&quot; style=&quot;width: 59.5783%;&quot; data-widthpercent=&quot;60.28&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbGhxT/btsK2XcHBeD/8KKIc8F0kC4NUbRXxLpssK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbGhxT%2FbtsK2XcHBeD%2F8KKIc8F0kC4NUbRXxLpssK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1245&quot; height=&quot;707&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;box-sizing: border-box; border-right-width: 0px; border-bottom: #6B66FF 1px solid; margin: 5px 0px; border-left: #6B66FF 15px solid; letter-spacing: 1px; line-height: 1.5; border-top-width: 0px; padding: 3px 5px 3px 5px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&amp;nbsp;nGrinder  agent 설정&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;부하를 발생시키는 손발이 되어줄 agent 설정을 위해서 nGrinder 웹에서 Download Agent를 통해 agent를 다운받아줬다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1108&quot; data-origin-height=&quot;392&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lc8Un/btsK2D6zmLb/FMIYFK75KmcMHuqsogOcz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lc8Un/btsK2D6zmLb/FMIYFK75KmcMHuqsogOcz1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lc8Un/btsK2D6zmLb/FMIYFK75KmcMHuqsogOcz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flc8Un%2FbtsK2D6zmLb%2FFMIYFK75KmcMHuqsogOcz1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1108&quot; height=&quot;392&quot; data-origin-width=&quot;1108&quot; data-origin-height=&quot;392&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;ngrinder-agent-3.5.9-p1-127.0.0.1.tar 이라는 파일명으로&lt;span style=&quot;color: #000000;&quot;&gt; 다운받아졌는데 재사용성을 위해 &lt;b&gt;agent.tar로 변경&lt;/b&gt; 후 ngrinder-agent 디렉토리 하위로 이동시켜주었다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(미리 공유한 최종 결과물에는 이미 포함되어 업로드 되어 있어 다운로드 과정 불필요)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;그리고 &lt;span style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;ngrinder-agent 디렉토리 하위에 Dockefile을 생성하여 아래와 같이 작성해준다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1732984454114&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# ngrinder-agent/Dockerfile
FROM openjdk:11-slim

RUN apt-get update &amp;amp;&amp;amp; apt-get install -y tar &amp;amp;&amp;amp; rm -rf /var/lib/apt/lists/*

# tar 파일 복사 및 압축 해제
COPY ./agent.tar /home/
RUN tar -xf /home/agent.tar -C /home/ &amp;amp;&amp;amp; rm /home/agent.tar

CMD /home/ngrinder-agent/run_agent.sh -ch controller&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;여기서 조심해야할 점은 마지막 CMD 부분에 -ch 옵션에 설정된 값 부분이다. &lt;u&gt;&lt;b&gt;ch 옵션&lt;/b&gt;은 컨트롤러&lt;/u&gt;&lt;span style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;&lt;u&gt; host명 혹은 IP 주소 설정&lt;/u&gt;으로 도커로 띄운 nGrinder 컨트롤러와 연결을 위해 컨트롤러에 해당하는 컨테이너명을 넣어주면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;이 글에서는 controller라는 이름으로 설정했기 때문에 controller로 넣어주었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;agent 관련 다른 옵션 설정이 필요하다면 아래 링크를 참고하면 된다.&lt;/p&gt;
&lt;figure id=&quot;og_1732984860125&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;Agent Configuration Guide&quot; data-og-description=&quot;enterprise level performance testing solution. Contribute to naver/ngrinder development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/naver/ngrinder/wiki/Agent-Configuration-Guide#command-line-options&quot; data-og-url=&quot;https://github.com/naver/ngrinder/wiki/Agent-Configuration-Guide&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/boFH5k/hyXGGBXjwc/2GCrjcF4T13P90K3iEHK40/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/EOlof/hyXDjn5Knr/ghIR76Tz4x6VrPmf6z3760/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/naver/ngrinder/wiki/Agent-Configuration-Guide#command-line-options&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/naver/ngrinder/wiki/Agent-Configuration-Guide#command-line-options&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/boFH5k/hyXGGBXjwc/2GCrjcF4T13P90K3iEHK40/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/EOlof/hyXDjn5Knr/ghIR76Tz4x6VrPmf6z3760/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Agent Configuration Guide&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;enterprise level performance testing solution. Contribute to naver/ngrinder development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&lt;b&gt;[참고] ngrinder-agent 디렉토리 파일 구조&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;134&quot; data-origin-height=&quot;86&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhxE2V/btsK3i8JSas/alkeokrok7g1rdlZ4dcIA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhxE2V/btsK3i8JSas/alkeokrok7g1rdlZ4dcIA0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhxE2V/btsK3i8JSas/alkeokrok7g1rdlZ4dcIA0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhxE2V%2FbtsK3i8JSas%2Falkeokrok7g1rdlZ4dcIA0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;134&quot; height=&quot;86&quot; data-origin-width=&quot;134&quot; data-origin-height=&quot;86&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;마지막으로 agent 부분을 docker-compose.yml 파일에 추가해준다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1732985207210&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# docker-compose.yml
services:
  controller:
    container_name: controller
    build:
      context: ./ngrinder-controller
      dockerfile: Dockerfile
    ports:
      - &quot;8080:8080&quot;
      - &quot;12000-12009:12000-12009&quot;
      - &quot;16001:16001&quot;
    networks:
      - ngrinder
  agent:
    depends_on:
      - controller # agent 서비스를 실행하기 전에 controller 서비스가 실행되도록 보장
    build:
      context: ./ngrinder-agent
      dockerfile: Dockerfile
    networks:
      - ngrinder
networks:
  ngrinder: # 서비스 간 통신을 위해 추가
    driver: bridge&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;box-sizing: border-box; border-right-width: 0px; border-bottom: #6B66FF 1px solid; margin: 5px 0px; border-left: #6B66FF 15px solid; letter-spacing: 1px; line-height: 1.5; border-top-width: 0px; padding: 3px 5px 3px 5px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&amp;nbsp;nGrinder docker-compose 실행&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다음 명령어를 통해 nGrinder controller와 agent를 실행한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1732987448407&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# ngrinder controller 실행
docker compose up controller

# ngrinder agent 실행
docker compose up --scale agent=${실행할 agent 수}
# docker compose up --scale agent=3&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;agent의 연결 상태는 Agent Management 메뉴에서 확인 가능하다.&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;1247&quot; data-origin-height=&quot;426&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BTmQG/btsK3igDDMe/IIhGym0rh1TZe8hiQCZmhK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BTmQG/btsK3igDDMe/IIhGym0rh1TZe8hiQCZmhK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BTmQG/btsK3igDDMe/IIhGym0rh1TZe8hiQCZmhK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBTmQG%2FbtsK3igDDMe%2FIIhGym0rh1TZe8hiQCZmhK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1247&quot; height=&quot;426&quot; data-origin-width=&quot;1247&quot; data-origin-height=&quot;426&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1206&quot; data-origin-height=&quot;392&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/er1L9A/btsK2mjSMGx/InanuII3LjJ3GP7k7zaiG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/er1L9A/btsK2mjSMGx/InanuII3LjJ3GP7k7zaiG0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/er1L9A/btsK2mjSMGx/InanuII3LjJ3GP7k7zaiG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fer1L9A%2FbtsK2mjSMGx%2FInanuII3LjJ3GP7k7zaiG0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;392&quot; data-origin-width=&quot;1206&quot; data-origin-height=&quot;392&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;참고&lt;/b&gt;&lt;/h4&gt;
&lt;figure id=&quot;og_1732981622896&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;silicon MacBook 에서 nGrinder를 docker에 올려보자&quot; data-og-description=&quot;스터디 팀원과 같이 db종류에 따른 트래픽 부하를 테스트 하기 위해 프로젝트를 진행하고 있는데, 테스트 도구로는 nGrinder를 사용하기로 결정하였다.그런데 docker hub에 올라와 있는 nGrinder는 ADM64&quot; data-og-host=&quot;velog.io&quot; data-og-source-url=&quot;https://velog.io/@iknow/silicon-MacBook-%EC%97%90%EC%84%9C-nGrinder%EB%A5%BC-docker%EC%97%90-%EC%98%AC%EB%A0%A4%EB%B3%B4%EC%9E%90&quot; data-og-url=&quot;https://velog.io/@iknow/silicon-MacBook-에서-nGrinder를-docker에-올려보자&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ceDd3Q/hyXDle7vms/Mw41ArUOn4SnCF8vW44uKK/img.png?width=598&amp;amp;height=475&amp;amp;face=0_0_598_475,https://scrap.kakaocdn.net/dn/blp0f0/hyXGExleMa/FKnkXkrRo4EnpPaYTfGDd1/img.png?width=598&amp;amp;height=475&amp;amp;face=0_0_598_475&quot;&gt;&lt;a href=&quot;https://velog.io/@iknow/silicon-MacBook-%EC%97%90%EC%84%9C-nGrinder%EB%A5%BC-docker%EC%97%90-%EC%98%AC%EB%A0%A4%EB%B3%B4%EC%9E%90&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://velog.io/@iknow/silicon-MacBook-%EC%97%90%EC%84%9C-nGrinder%EB%A5%BC-docker%EC%97%90-%EC%98%AC%EB%A0%A4%EB%B3%B4%EC%9E%90&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ceDd3Q/hyXDle7vms/Mw41ArUOn4SnCF8vW44uKK/img.png?width=598&amp;amp;height=475&amp;amp;face=0_0_598_475,https://scrap.kakaocdn.net/dn/blp0f0/hyXGExleMa/FKnkXkrRo4EnpPaYTfGDd1/img.png?width=598&amp;amp;height=475&amp;amp;face=0_0_598_475');&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;silicon MacBook 에서 nGrinder를 docker에 올려보자&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;스터디 팀원과 같이 db종류에 따른 트래픽 부하를 테스트 하기 위해 프로젝트를 진행하고 있는데, 테스트 도구로는 nGrinder를 사용하기로 결정하였다.그런데 docker hub에 올라와 있는 nGrinder는 ADM64&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;velog.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1732981902393&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;[nGrinder] M1 Mac에 설치하기&quot; data-og-description=&quot;부하 테스트를 위해 nGrinder를 사용해 보자   서론 열심히 레시피아를 만들어서 원스토어에 배포했지만 아직 유저가 별로 없다. (거의 없다... 또륵) 사용하는 유저는 별로 없지만 AWS에서 Cloud Nat&quot; data-og-host=&quot;curiousjinan.tistory.com&quot; data-og-source-url=&quot;https://curiousjinan.tistory.com/entry/apple-m1-ngrinder-setup&quot; data-og-url=&quot;https://curiousjinan.tistory.com/entry/apple-m1-ngrinder-setup&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ctbKxd/hyXDkAtT1Q/BSy7WHLukKSqXlbUZKEK4k/img.png?width=800&amp;amp;height=121&amp;amp;face=0_0_800_121,https://scrap.kakaocdn.net/dn/h9PLf/hyXGIzKc3v/IKUmnJEcZiCAgzaUzBlKbk/img.png?width=800&amp;amp;height=121&amp;amp;face=0_0_800_121&quot;&gt;&lt;a href=&quot;https://curiousjinan.tistory.com/entry/apple-m1-ngrinder-setup&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://curiousjinan.tistory.com/entry/apple-m1-ngrinder-setup&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ctbKxd/hyXDkAtT1Q/BSy7WHLukKSqXlbUZKEK4k/img.png?width=800&amp;amp;height=121&amp;amp;face=0_0_800_121,https://scrap.kakaocdn.net/dn/h9PLf/hyXGIzKc3v/IKUmnJEcZiCAgzaUzBlKbk/img.png?width=800&amp;amp;height=121&amp;amp;face=0_0_800_121');&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;[nGrinder] M1 Mac에 설치하기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;부하 테스트를 위해 nGrinder를 사용해 보자   서론 열심히 레시피아를 만들어서 원스토어에 배포했지만 아직 유저가 별로 없다. (거의 없다... 또륵) 사용하는 유저는 별로 없지만 AWS에서 Cloud Nat&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;curiousjinan.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;figure id=&quot;og_1732981961240&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;GrepIU&quot; data-og-description=&quot;&quot; data-og-host=&quot;www.grepiu.com&quot; data-og-source-url=&quot;https://www.grepiu.com/post/124&quot; data-og-url=&quot;https://www.grepiu.com/post/124&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.grepiu.com/post/124&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.grepiu.com/post/124&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GrepIU&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.grepiu.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Development/기타</category>
      <category>Agent</category>
      <category>amd64</category>
      <category>controller</category>
      <category>Docker</category>
      <category>M3</category>
      <category>Mac</category>
      <category>ngrinder</category>
      <category>도커</category>
      <category>맥</category>
      <author>컴공 K</author>
      <guid isPermaLink="true">https://computer-science-student.tistory.com/794</guid>
      <comments>https://computer-science-student.tistory.com/794#entry794comment</comments>
      <pubDate>Sun, 1 Dec 2024 00:41:22 +0900</pubDate>
    </item>
    <item>
      <title>[GitHub Action] workflow 재사용하기</title>
      <link>https://computer-science-student.tistory.com/793</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8; color: #000000;&quot;&gt;&lt;b&gt;[GitHub&amp;nbsp;Action]&amp;nbsp;workflow&amp;nbsp;재사용하기&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;GitHub Action 워크플로우를 작성하다 보면 동일한 프로세스의 워크플로우가 반복되는 경우가 있다. 일부 로직이 변경될 때, 동일한 워크플로우를 모두 수정하거나 변경 사항을 놓치는 경우가 발생할 수 있다. 이로 인해 추가로 수정하고 커밋해야 하는 번거로움이 발생한다. 이런 불편함으로부터 &lt;span style=&quot;text-align: start;&quot;&gt;워크플로우를&lt;/span&gt; 재사용할 필요성에 대해 느꼈고 이 글에서 &lt;span style=&quot;text-align: start;&quot;&gt;워크플로우&lt;/span&gt;&amp;nbsp;재사용하는 방법에 대해 정리하고자 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;box-sizing: border-box; border-right-width: 0px; border-bottom: #6B66FF 1px solid; margin: 5px 0px; border-left: #6B66FF 15px solid; letter-spacing: 1px; line-height: 1.5; border-top-width: 0px; padding: 3px 5px 3px 5px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;workflow 재사용을 적용해볼  example &lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;워크플로우 재사용을 적용해볼 예시는 다음과 같다. 같은 워크플로우에 &lt;/span&gt;client-check&lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;와 &lt;/span&gt;admin-check&lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt; job은 실행 조건과 작업 디렉토리 설정 값을 제외한 나머지 로직이 동일하다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1383&quot; data-origin-height=&quot;793&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KJis0/btsJhSRJufE/D3um7dcECs3V6YyfYzc6BK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KJis0/btsJhSRJufE/D3um7dcECs3V6YyfYzc6BK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KJis0/btsJhSRJufE/D3um7dcECs3V6YyfYzc6BK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKJis0%2FbtsJhSRJufE%2FD3um7dcECs3V6YyfYzc6BK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1383&quot; height=&quot;793&quot; data-origin-width=&quot;1383&quot; data-origin-height=&quot;793&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;box-sizing: border-box; border-right-width: 0px; border-bottom: #6B66FF 1px solid; margin: 5px 0px; border-left: #6B66FF 15px solid; letter-spacing: 1px; line-height: 1.5; border-top-width: 0px; padding: 3px 5px 3px 5px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;재사용 workflow 생성 &lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;앞서 본 예시에서 동일한 로직을 재사용 워크플로우로 분리해보자!&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;워크플로우 파일을 재사용 용도로 사용하기 위해서는 아래와 같이 on에 &lt;a href=&quot;https://docs.github.com/en/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows#workflow_call&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;workflow_call&lt;/a&gt;을 설정해야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1724778512222&quot; class=&quot;yaml&quot; data-ke-language=&quot;highlight.js&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;name: Reusable Build &amp;amp; Lint Test
 
on:
  workflow_call: # 다른 워크플로우에서 이 워크플로우를 재사용(호출)할 수 있도록 설정
    inputs: # 인자 정의
      working_dir: # working 디렉토리 인자
        required: true # 필수 입력 여부
        type: string   # 인자 데이터 타입&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;workflow_call의 inputs를 사용하면 재사용 워크플로우를 호출하는 쪽에서 인자를 받아 내부에서 활용할 수 있도록 설정할 수 있다. 예시에서 중복되는 &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;로직과 연관되는 부분 중 기본 작업 디렉토리를 설정하는 부분을 working_dir로 정의하였다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;inputs 외에도 secets를 추가하여 민감 정보를 안전하게 전달할 수 있다)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;동일한 로직에 대해 기존 워크플로우 작성 방식과 동일하게 작성해준다. 이때, 작업 디렉토리 설정 부분에만 working_dir 값을 사용할 수 있도록 설정한다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1724779888764&quot; class=&quot;yaml&quot; data-ke-language=&quot;highlight.js&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# .github/workflows/reusable-build-lint-test.yml
name: Reusable Build &amp;amp; Lint Test

on:
  workflow_call:
    inputs:
      working_dir:
        required: true
        type: string

jobs:
  build-test-lint-format:
    runs-on: ubuntu-latest
    defaults:
      run:
       working-directory: ${{ inputs.working_dir }} # 작업 디렉토리 설정
    steps: # 중복되는 로직 작성
      - name: Checkout code
        uses: actions/checkout@v4

      # ... 생략 ...

      - name: Run linter
        run: yarn lint&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;box-sizing: border-box; border-right-width: 0px; border-bottom: #6B66FF 1px solid; margin: 5px 0px; border-left: #6B66FF 15px solid; letter-spacing: 1px; line-height: 1.5; border-top-width: 0px; padding: 3px 5px 3px 5px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;재사용 workflow 호출&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;재사용 워크플로우 사용시 steps 내부에서 중간에 호출할 수 없고 jobs.*.uses 에서만 호출 가능하다. 아래와 같이 &lt;u&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;uses&lt;/b&gt;&lt;/span&gt;에 재사용 workflow를 호출&lt;/u&gt;하고, &lt;u&gt;호출시 필요한 인자인 working_dir 값을 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;with&lt;/b&gt;&lt;/span&gt; 에 정의&lt;/u&gt;한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1724780216346&quot; class=&quot;yaml&quot; data-ke-language=&quot;highlight.js&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  client-check:
    needs: changes
    if: ${{ needs.changes.outputs.client == 'true' }} # client 변경이 있을 경우 실행
    uses: ./.github/workflows/reusable-build-lint-test.yml # 재사용할 워크플로우 호출
    with: # 재사용 워크플로우에 인자 전달
      working_dir: CLIENT # 작업 디렉토리 인자 설정&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;재사용 워크플로우는 내부 워크플로우 뿐만 아니라 다른 외부 저장소에 정의된 워크플로우도 호출 가능하다.(물론 public으로 오픈되어 있거나 접근 권한이 있다는 가정하에..)&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1724780666713&quot; class=&quot;yaml&quot; data-ke-language=&quot;highlight.js&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  client-check:
    needs: changes
    if: ${{ needs.changes.outputs.client == 'true' }} # client 변경이 있을 경우 실행
    uses: CodeDiary18/TEMP-REUSABLE-WF/reusable-build-lint-test.yml@main # 재사용할 워크플로우 호출
    with: # 재사용 워크플로우에 인자 전달
      working_dir: CLIENT # 작업 디렉토리 인자 설정&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;box-sizing: border-box; border-right-width: 0px; border-bottom: #6B66FF 1px solid; margin: 5px 0px; border-left: #6B66FF 15px solid; letter-spacing: 1px; line-height: 1.5; border-top-width: 0px; padding: 3px 5px 3px 5px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;재사용 workflow의 이점과 적용해보면 좋을 곳&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;b&gt;재사용 workflow의 이점&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;color: #000000;&quot;&gt;&lt;b&gt;중복된 코드 감소&lt;/b&gt;: 중복 코드를 줄여 관리 효율성 향상과 가독성 개선&lt;/li&gt;
&lt;li style=&quot;color: #000000;&quot;&gt;&lt;b&gt;유지보수 용이&lt;/b&gt;: 공통 작업을 하나의 워크플로우로 정의하여 유지보수 간편&lt;/li&gt;
&lt;li style=&quot;color: #000000;&quot;&gt;&lt;b&gt;신속한 적용&lt;/b&gt;: 하나의 파일 수정으로 모든 워크플로우에 변경사항 신속 적용&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote style=&quot;color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;b&gt;재사용 workflow 적용해보면 좋을 부분&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;CI/CD 파이프라인&lt;/b&gt;: 빌드, 테스트, 배포 등의 공통 작업을 재사용하여 설정의 일관성 유지&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;코드 품질 검사&lt;/b&gt;: 린트(lint)나 테스트 실행과 같은 품질 검사 작업을 통합하여 여러 프로젝트에서 재사용&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;배포 자동화&lt;/b&gt;: 다양한 환경에 배포하는 과정을 표준화하여 관리&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;문서화&lt;/b&gt;: 문서 생성 및 배포 작업을 하나의 워크플로우로 관리하여 문서화 프로세스 간소화&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;환경 설정&lt;/b&gt;: 여러 프로젝트에서 공통으로 사용하는 환경 변수나 설정을 통합하여 관리&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;box-sizing: border-box; border-right-width: 0px; border-bottom: #6B66FF 1px solid; margin: 5px 0px; border-left: #A9A9A9 15px solid; letter-spacing: 1px; line-height: 1.5; border-top-width: 0px; padding: 3px 5px 3px 5px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;전체 workflow 파일&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1724779406976&quot; class=&quot;yaml&quot; data-ke-language=&quot;highlight.js&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# main workflow 파일
name: CI

on:
  pull_request:
    branches: [ dev ]

permissions:
  contents: write

jobs:
  changes:
    name: Check for changes # 변경 사항 확인 작업
    runs-on: ubuntu-latest
    outputs:
      client: ${{ steps.filter.outputs.client }}  # client 변경 여부 출력
      admin: ${{ steps.filter.outputs.admin }}    # admin 변경 여부 출력
    steps:
      - uses: dorny/paths-filter@v3
        id: filter
        with:
          token: ${{ secrets.TOKEN }}
          filters: |
            client:
              - 'CLIENT/**'      # CLIENT 디렉토리 변경 감지
            admin:
              - 'ADMIN/**'       # ADMIN 디렉토리 변경 감지

  client-check:
    needs: changes
    if: ${{ needs.changes.outputs.client == 'true' }} # client 변경이 있을 경우 실행
    uses: ./.github/workflows/reusable-build-lint-test.yml # 재사용할 워크플로우 호출
    with: # 재사용 워크플로우에 인자 전달
      working_dir: CLIENT # 작업 디렉토리 인자 설정
      
  admin-check:
    needs: changes
    if: ${{ needs.changes.outputs.admin == 'true' }} # admin 변경이 있을 경우 실행
    uses: ./.github/workflows/reusable-build-lint-test.yml # 재사용할 워크플로우 호출
    with:  # 재사용 워크플로우에 인자 전달
      working_dir: ADMIN # 작업 디렉토리 인자 설정&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1724779678094&quot; class=&quot;yaml&quot; data-ke-language=&quot;highlight.js&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 재사용 workflow : .github/workflows/reusable-build-lint-test.yml
name: Reusable Build &amp;amp; Lint Test

on:
  workflow_call:
    inputs:
      working_dir:
        required: true
        type: string

jobs:
  build-test-lint-format:
    runs-on: ubuntu-latest
    defaults:
      run:
       working-directory: ${{ inputs.working_dir }}
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Set up Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '18'

      - name: Install dependencies
        run: yarn install

      - name: Build the project
        run: yarn build

      - name: Run tests
        run: yarn test --passWithNoTests

      - name: Run formatter check
        run: yarn format

      - name: Run linter
        run: yarn lint&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1724780757215&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;Reusing workflows - GitHub Docs&quot; data-og-description=&quot;Learn how to avoid duplication when creating a workflow by reusing existing workflows.&quot; data-og-host=&quot;docs.github.com&quot; data-og-source-url=&quot;https://docs.github.com/en/actions/sharing-automations/reusing-workflows&quot; data-og-url=&quot;https://docs.github.com/en/actions/sharing-automations/reusing-workflows&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bRJQPO/hyWSmTtuqJ/ZaS6HstZKMlvNqkOokRkO0/img.png?width=1200&amp;amp;height=1200&amp;amp;face=0_0_1200_1200,https://scrap.kakaocdn.net/dn/h8e17/hyWV3xYukl/5bmlJu5y4jKKmqs048nJH1/img.png?width=1896&amp;amp;height=596&amp;amp;face=0_0_1896_596&quot;&gt;&lt;a href=&quot;https://docs.github.com/en/actions/sharing-automations/reusing-workflows&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.github.com/en/actions/sharing-automations/reusing-workflows&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bRJQPO/hyWSmTtuqJ/ZaS6HstZKMlvNqkOokRkO0/img.png?width=1200&amp;amp;height=1200&amp;amp;face=0_0_1200_1200,https://scrap.kakaocdn.net/dn/h8e17/hyWV3xYukl/5bmlJu5y4jKKmqs048nJH1/img.png?width=1896&amp;amp;height=596&amp;amp;face=0_0_1896_596');&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;Reusing workflows - GitHub Docs&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Learn how to avoid duplication when creating a workflow by reusing existing workflows.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;docs.github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;figure id=&quot;og_1724778644768&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;Events that trigger workflows - GitHub Docs&quot; data-og-description=&quot;You can configure your workflows to run when specific activity on GitHub happens, at a scheduled time, or when an event outside of GitHub occurs.&quot; data-og-host=&quot;docs.github.com&quot; data-og-source-url=&quot;https://docs.github.com/en/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows#workflow_call&quot; data-og-url=&quot;https://docs.github.com/en/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ENfSw/hyWSoRiVcO/klMs4bPAzfHZOFRycKxRpk/img.png?width=1200&amp;amp;height=1200&amp;amp;face=0_0_1200_1200,https://scrap.kakaocdn.net/dn/bRSjve/hyWSnLD0VQ/9wYtUxHJKRgraHtk8k0kqk/img.png?width=2122&amp;amp;height=952&amp;amp;face=0_0_2122_952&quot;&gt;&lt;a href=&quot;https://docs.github.com/en/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows#workflow_call&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.github.com/en/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows#workflow_call&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ENfSw/hyWSoRiVcO/klMs4bPAzfHZOFRycKxRpk/img.png?width=1200&amp;amp;height=1200&amp;amp;face=0_0_1200_1200,https://scrap.kakaocdn.net/dn/bRSjve/hyWSnLD0VQ/9wYtUxHJKRgraHtk8k0kqk/img.png?width=2122&amp;amp;height=952&amp;amp;face=0_0_2122_952');&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;Events that trigger workflows - GitHub Docs&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;You can configure your workflows to run when specific activity on GitHub happens, at a scheduled time, or when an event outside of GitHub occurs.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;docs.github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Development/Git</category>
      <category>Action</category>
      <category>github</category>
      <category>Reusable</category>
      <category>Workflow</category>
      <category>깃허브</category>
      <category>액션</category>
      <category>워크플로우</category>
      <category>재사용</category>
      <author>컴공 K</author>
      <guid isPermaLink="true">https://computer-science-student.tistory.com/793</guid>
      <comments>https://computer-science-student.tistory.com/793#entry793comment</comments>
      <pubDate>Wed, 28 Aug 2024 03:00:32 +0900</pubDate>
    </item>
    <item>
      <title>Burp Suite(버프 슈트) 설치</title>
      <link>https://computer-science-student.tistory.com/792</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8; color: #000000;&quot;&gt;&lt;b&gt;Burp Suite(버프 슈트) 설치&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Burp Suite(버프 슈트)는 PortSwigger라는 회사에서 개발된 웹 애플리케이션의 침투 테스트에 사용되는 소프트웨어 보안 애플리케이션이다. 클라이언트와 서버가 통신을 주고 받을 때 전달되는 패킷을 중간에 가로채서 확인할 수 있다. 이 글에서는 버프 슈트의 설치 방법과 실행 방법에 대해 정리하고자 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000; background-color: #f6e199;&quot;&gt;&lt;b&gt;설치 방법&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1. PortSwigger(버프 슈트 제품 회사) 홈페이지에 접속한다.&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712486044041&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Web Application Security, Testing, &amp;amp; Scanning - PortSwigger&quot; data-og-description=&quot;PortSwigger offers tools for web application security, testing, &amp;amp; scanning. Choose from a range of security tools, &amp;amp; identify the very latest vulnerabilities.&quot; data-og-host=&quot;portswigger.net&quot; data-og-source-url=&quot;https://portswigger.net/&quot; data-og-url=&quot;https://portswigger.net&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bvxJX5/hyVJWH6xHq/yBOPil1VxQKZnEfIuLREXk/img.png?width=506&amp;amp;height=254&amp;amp;face=0_0_506_254,https://scrap.kakaocdn.net/dn/cdARgi/hyVMTiEU8g/fUKOMxTiSKjNmEQZMzMHP1/img.png?width=506&amp;amp;height=254&amp;amp;face=0_0_506_254&quot;&gt;&lt;a href=&quot;https://portswigger.net/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://portswigger.net/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bvxJX5/hyVJWH6xHq/yBOPil1VxQKZnEfIuLREXk/img.png?width=506&amp;amp;height=254&amp;amp;face=0_0_506_254,https://scrap.kakaocdn.net/dn/cdARgi/hyVMTiEU8g/fUKOMxTiSKjNmEQZMzMHP1/img.png?width=506&amp;amp;height=254&amp;amp;face=0_0_506_254');&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;Web Application Security, Testing, &amp;amp; Scanning - PortSwigger&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;PortSwigger offers tools for web application security, testing, &amp;amp; scanning. Choose from a range of security tools, &amp;amp; identify the very latest vulnerabilities.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;portswigger.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2. 상단 탭 중 Products 를 클릭한 뒤 Community Edition 을 선택한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1262&quot; data-origin-height=&quot;736&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oTa8K/btsGp1kEYG8/g5WEcp5IK4almufxIergy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oTa8K/btsGp1kEYG8/g5WEcp5IK4almufxIergy1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oTa8K/btsGp1kEYG8/g5WEcp5IK4almufxIergy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoTa8K%2FbtsGp1kEYG8%2Fg5WEcp5IK4almufxIergy1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;680&quot; height=&quot;397&quot; data-origin-width=&quot;1262&quot; data-origin-height=&quot;736&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;3. Go straight to downloads를 클릭한 뒤 나오는 페이지에서 자신의 운영체제에 맞게 선택한 뒤 Download를 클릭한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1234&quot; data-origin-height=&quot;631&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLdGPZ/btsGqQvVXjp/K8YA5H22kPiS54pkME447k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLdGPZ/btsGqQvVXjp/K8YA5H22kPiS54pkME447k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLdGPZ/btsGqQvVXjp/K8YA5H22kPiS54pkME447k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLdGPZ%2FbtsGqQvVXjp%2FK8YA5H22kPiS54pkME447k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;680&quot; height=&quot;348&quot; data-origin-width=&quot;1234&quot; data-origin-height=&quot;631&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1206&quot; data-origin-height=&quot;919&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Lv9Qk/btsGpTtD7KK/0BLy4uFwx83pximN4D5Sa0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Lv9Qk/btsGpTtD7KK/0BLy4uFwx83pximN4D5Sa0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Lv9Qk/btsGpTtD7KK/0BLy4uFwx83pximN4D5Sa0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLv9Qk%2FbtsGpTtD7KK%2F0BLy4uFwx83pximN4D5Sa0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;680&quot; height=&quot;518&quot; data-origin-width=&quot;1206&quot; data-origin-height=&quot;919&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;4. 설치 파일을 실행하면 아래와 같이 나오는데 Next를 클릭해준다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;502&quot; data-origin-height=&quot;422&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d7ZfHx/btsGqVDN9Pm/HkY1yUsxmhkSZcAft0cDQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d7ZfHx/btsGqVDN9Pm/HkY1yUsxmhkSZcAft0cDQk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d7ZfHx/btsGqVDN9Pm/HkY1yUsxmhkSZcAft0cDQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd7ZfHx%2FbtsGqVDN9Pm%2FHkY1yUsxmhkSZcAft0cDQk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;502&quot; height=&quot;422&quot; data-origin-width=&quot;502&quot; data-origin-height=&quot;422&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;5. 설치될 경로는 기본적으로 세팅되는데 변경이 필요하다면 변경해준 뒤 Next를 클릭한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;502&quot; data-origin-height=&quot;422&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/priP3/btsGq056ILJ/kgNn7jFCvmKXxOtWKKiIak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/priP3/btsGq056ILJ/kgNn7jFCvmKXxOtWKKiIak/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/priP3/btsGq056ILJ/kgNn7jFCvmKXxOtWKKiIak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpriP3%2FbtsGq056ILJ%2FkgNn7jFCvmKXxOtWKKiIak%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;502&quot; height=&quot;422&quot; data-origin-width=&quot;502&quot; data-origin-height=&quot;422&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;6. 시작 메뉴에 바로가기를 생성할 것인지에 대해 선택해준 뒤 Next를 클릭한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;502&quot; data-origin-height=&quot;422&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMgJJK/btsGsjKJCze/zeMN7opqoHj2kDMW9moW0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMgJJK/btsGsjKJCze/zeMN7opqoHj2kDMW9moW0k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMgJJK/btsGsjKJCze/zeMN7opqoHj2kDMW9moW0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMgJJK%2FbtsGsjKJCze%2FzeMN7opqoHj2kDMW9moW0k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;502&quot; height=&quot;422&quot; data-origin-width=&quot;502&quot; data-origin-height=&quot;422&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;7. 그리고 조금 기다려주면 아래와 같이 설치가 완료되었다고 나온다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;502&quot; data-origin-height=&quot;422&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqKze2/btsGq1qqrvd/WmBH5ydq2rHkRCVbU1X6N0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqKze2/btsGq1qqrvd/WmBH5ydq2rHkRCVbU1X6N0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqKze2/btsGq1qqrvd/WmBH5ydq2rHkRCVbU1X6N0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqKze2%2FbtsGq1qqrvd%2FWmBH5ydq2rHkRCVbU1X6N0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;502&quot; height=&quot;422&quot; data-origin-width=&quot;502&quot; data-origin-height=&quot;422&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199; color: #000000;&quot;&gt;&lt;b&gt;실행&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;별도 설정을 하지 않고 기본적인 세팅 값으로 버프 슈트를 실행해볼 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1. 버프 슈트를 실행하면 아래와 같이 나오는데 기본 값으로 그대로 두고 Next를 클릭한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;885&quot; data-origin-height=&quot;698&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYqNkp/btsGqNeUEmY/ggGKzXDdyw0z1Iy77HiTp0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYqNkp/btsGqNeUEmY/ggGKzXDdyw0z1Iy77HiTp0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYqNkp/btsGqNeUEmY/ggGKzXDdyw0z1Iy77HiTp0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYqNkp%2FbtsGqNeUEmY%2FggGKzXDdyw0z1Iy77HiTp0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;552&quot; data-origin-width=&quot;885&quot; data-origin-height=&quot;698&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;885&quot; data-origin-height=&quot;698&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biJP5j/btsGp0F3Vv0/xykTv7skKv4bFfp5oKIyIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biJP5j/btsGp0F3Vv0/xykTv7skKv4bFfp5oKIyIK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biJP5j/btsGp0F3Vv0/xykTv7skKv4bFfp5oKIyIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiJP5j%2FbtsGp0F3Vv0%2FxykTv7skKv4bFfp5oKIyIK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;698&quot; data-origin-width=&quot;885&quot; data-origin-height=&quot;698&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2. response 데이터를 잡기 위해 Proxy 탭의 Proxy settings를 클릭한 뒤 나오는 화면에서 Response interception rules 부분의 Intercept responses based on ~ 부분의 체크박스를 클릭해준다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1309&quot; data-origin-height=&quot;893&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/o3lbu/btsGquzZzkS/LKkDps8PQHOEc3mdy8NPk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/o3lbu/btsGquzZzkS/LKkDps8PQHOEc3mdy8NPk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/o3lbu/btsGquzZzkS/LKkDps8PQHOEc3mdy8NPk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo3lbu%2FbtsGquzZzkS%2FLKkDps8PQHOEc3mdy8NPk0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;893&quot; data-origin-width=&quot;1309&quot; data-origin-height=&quot;893&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1385&quot; data-origin-height=&quot;943&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JHyIF/btsGqMtCYie/7KUMcE2KYGsPgo9zxZ782k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JHyIF/btsGqMtCYie/7KUMcE2KYGsPgo9zxZ782k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JHyIF/btsGqMtCYie/7KUMcE2KYGsPgo9zxZ782k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJHyIF%2FbtsGqMtCYie%2F7KUMcE2KYGsPgo9zxZ782k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;943&quot; data-origin-width=&quot;1385&quot; data-origin-height=&quot;943&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;3. 패킷을 잡기 위해 아래와 같이 Intercept is on 으로 나올 수 있도록 해당 부분을 클릭해서 변경해준다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1309&quot; data-origin-height=&quot;893&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdtV3Y/btsGpZtGJHX/wu1QRzTzf6qyoLzwjNr5oK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdtV3Y/btsGpZtGJHX/wu1QRzTzf6qyoLzwjNr5oK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdtV3Y/btsGpZtGJHX/wu1QRzTzf6qyoLzwjNr5oK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdtV3Y%2FbtsGpZtGJHX%2Fwu1QRzTzf6qyoLzwjNr5oK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;893&quot; data-origin-width=&quot;1309&quot; data-origin-height=&quot;893&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;4. Open browser 를 클릭한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1309&quot; data-origin-height=&quot;893&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7Am4q/btsGqJRbdSV/Mlr28jEpIZemt0xTjRsOkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7Am4q/btsGqJRbdSV/Mlr28jEpIZemt0xTjRsOkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7Am4q/btsGqJRbdSV/Mlr28jEpIZemt0xTjRsOkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7Am4q%2FbtsGqJRbdSV%2FMlr28jEpIZemt0xTjRsOkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;478&quot; data-origin-width=&quot;1309&quot; data-origin-height=&quot;893&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;5. 열린 브라우저에 원하는 url(naver.com)을 입력하고 버프 슈트 창을 확인해보면 패킷 정보를 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1385&quot; data-origin-height=&quot;1216&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/364VE/btsGqec5e6S/53NRzSueY3E1HJuNUEMbNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/364VE/btsGqec5e6S/53NRzSueY3E1HJuNUEMbNK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/364VE/btsGqec5e6S/53NRzSueY3E1HJuNUEMbNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F364VE%2FbtsGqec5e6S%2F53NRzSueY3E1HJuNUEMbNK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;1216&quot; data-origin-width=&quot;1385&quot; data-origin-height=&quot;1216&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;a href=&quot;https://seo-security.tistory.com/33&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://seo-security.tistory.com/33&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712486018626&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;Burp Suite (버프 스위트) - 1. 설치 및 사용 방법&quot; data-og-description=&quot;1. Burp Suite (버프 스위트) 대표적인 웹 애플리케이션 보안 테스트 도구로 스캐닝을 포함하여 다양한 유형의 보안 테스트 수행이 가능합니다. 주요 기능 중 하나는 웹 브라우저와 대상 애플리케이&quot; data-og-host=&quot;seo-security.tistory.com&quot; data-og-source-url=&quot;https://seo-security.tistory.com/33&quot; data-og-url=&quot;https://seo-security.tistory.com/33&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bZSrVq/hyVJRGOlGS/iOWPKbWYTEIB1KGlG9KeGk/img.png?width=800&amp;amp;height=480&amp;amp;face=0_0_800_480,https://scrap.kakaocdn.net/dn/bnneCr/hyVJ5ygITr/ELMWxU0L8aRWo3J0iGjMUK/img.png?width=800&amp;amp;height=480&amp;amp;face=0_0_800_480,https://scrap.kakaocdn.net/dn/e7jMu/hyVJ5ZkMuU/Nk0sx7b4ixhQv21CElgdT0/img.png?width=1202&amp;amp;height=934&amp;amp;face=0_0_1202_934&quot;&gt;&lt;a href=&quot;https://seo-security.tistory.com/33&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://seo-security.tistory.com/33&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bZSrVq/hyVJRGOlGS/iOWPKbWYTEIB1KGlG9KeGk/img.png?width=800&amp;amp;height=480&amp;amp;face=0_0_800_480,https://scrap.kakaocdn.net/dn/bnneCr/hyVJ5ygITr/ELMWxU0L8aRWo3J0iGjMUK/img.png?width=800&amp;amp;height=480&amp;amp;face=0_0_800_480,https://scrap.kakaocdn.net/dn/e7jMu/hyVJ5ZkMuU/Nk0sx7b4ixhQv21CElgdT0/img.png?width=1202&amp;amp;height=934&amp;amp;face=0_0_1202_934');&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;Burp Suite (버프 스위트) - 1. 설치 및 사용 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;1. Burp Suite (버프 스위트) 대표적인 웹 애플리케이션 보안 테스트 도구로 스캐닝을 포함하여 다양한 유형의 보안 테스트 수행이 가능합니다. 주요 기능 중 하나는 웹 브라우저와 대상 애플리케이&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;seo-security.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://websecurity.tistory.com/128&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://websecurity.tistory.com/128&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712494241219&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;Burp Suite(버프 슈트) 설치 및 사용법&quot; data-og-description=&quot;Burp Suite[목적]웹 프록시 서버를 사용시 클라이언트와 서버간 통신을 주고 받을 때 전달되는 패킷을 중간에 가로채어 확인 및 조작할 수 있게 해주는 툴[주의 사항]해당 툴을 사용하여 악의적인 &quot; data-og-host=&quot;websecurity.tistory.com&quot; data-og-source-url=&quot;https://websecurity.tistory.com/128&quot; data-og-url=&quot;https://websecurity.tistory.com/128&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dLUzuL/hyVJT5Hv37/EshS7pjAqFqrWqkz85wpW1/img.png?width=492&amp;amp;height=246&amp;amp;face=0_0_492_246,https://scrap.kakaocdn.net/dn/cUfloO/hyVJYTutnp/ZwAjSg7aNzyhaIkkLpO3SK/img.png?width=492&amp;amp;height=246&amp;amp;face=0_0_492_246,https://scrap.kakaocdn.net/dn/4H2aJ/hyVMXFoMjo/suyAbT3ojR0Ajy24ezbN2K/img.png?width=680&amp;amp;height=409&amp;amp;face=0_0_680_409&quot;&gt;&lt;a href=&quot;https://websecurity.tistory.com/128&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://websecurity.tistory.com/128&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dLUzuL/hyVJT5Hv37/EshS7pjAqFqrWqkz85wpW1/img.png?width=492&amp;amp;height=246&amp;amp;face=0_0_492_246,https://scrap.kakaocdn.net/dn/cUfloO/hyVJYTutnp/ZwAjSg7aNzyhaIkkLpO3SK/img.png?width=492&amp;amp;height=246&amp;amp;face=0_0_492_246,https://scrap.kakaocdn.net/dn/4H2aJ/hyVMXFoMjo/suyAbT3ojR0Ajy24ezbN2K/img.png?width=680&amp;amp;height=409&amp;amp;face=0_0_680_409');&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;Burp Suite(버프 슈트) 설치 및 사용법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Burp Suite[목적]웹 프록시 서버를 사용시 클라이언트와 서버간 통신을 주고 받을 때 전달되는 패킷을 중간에 가로채어 확인 및 조작할 수 있게 해주는 툴[주의 사항]해당 툴을 사용하여 악의적인&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;websecurity.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;</description>
      <category>Development/기타</category>
      <category>burp</category>
      <category>burp suite</category>
      <category>Suite</category>
      <category>버프</category>
      <category>슈트</category>
      <author>컴공 K</author>
      <guid isPermaLink="true">https://computer-science-student.tistory.com/792</guid>
      <comments>https://computer-science-student.tistory.com/792#entry792comment</comments>
      <pubDate>Wed, 10 Apr 2024 01:00:31 +0900</pubDate>
    </item>
    <item>
      <title>PuTTY 출력 라인 수 늘리기</title>
      <link>https://computer-science-student.tistory.com/791</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8; color: #000000;&quot;&gt;&lt;b&gt;PuTTY 출력 라인 수 늘리기&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;PuTTY를 실행하여 Window로 이동 후 &lt;b&gt;Lines of scrollback&lt;/b&gt; 부분에 출력하고자 하는 라인 수로 변경하면 출력 라인 수를 변경할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;450&quot; data-origin-height=&quot;442&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzkfp4/btsGeKvpiSW/NKnbTAircKx5Z5rnORnnRk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzkfp4/btsGeKvpiSW/NKnbTAircKx5Z5rnORnnRk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzkfp4/btsGeKvpiSW/NKnbTAircKx5Z5rnORnnRk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbzkfp4%2FbtsGeKvpiSW%2FNKnbTAircKx5Z5rnORnnRk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;450&quot; height=&quot;442&quot; data-origin-width=&quot;450&quot; data-origin-height=&quot;442&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;방금 변경한 출력 라인 수 설정을 일시적으로 사용하는 것이 아닌 기본 설정으로 사용하고 싶다면 Session으로 가서 아래와 같이 &lt;b&gt;Default Settings&lt;/b&gt;를 클릭 후 Save 버튼을 눌러 설정을 저장해주면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;452&quot; data-origin-height=&quot;442&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/32UId/btsGd0TjaJ7/j8xwg4bjG0LzYajNWhKaC1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/32UId/btsGd0TjaJ7/j8xwg4bjG0LzYajNWhKaC1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/32UId/btsGd0TjaJ7/j8xwg4bjG0LzYajNWhKaC1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F32UId%2FbtsGd0TjaJ7%2Fj8xwg4bjG0LzYajNWhKaC1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;452&quot; height=&quot;442&quot; data-origin-width=&quot;452&quot; data-origin-height=&quot;442&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Development/기타</category>
      <category>putty</category>
      <category>scrollback</category>
      <category>라인</category>
      <category>라인 수</category>
      <category>푸티</category>
      <author>컴공 K</author>
      <guid isPermaLink="true">https://computer-science-student.tistory.com/791</guid>
      <comments>https://computer-science-student.tistory.com/791#entry791comment</comments>
      <pubDate>Sat, 30 Mar 2024 23:55:59 +0900</pubDate>
    </item>
    <item>
      <title>[SQL] WITH 절</title>
      <link>https://computer-science-student.tistory.com/790</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8; color: #000000;&quot;&gt;&lt;b&gt;[SQL] WITH 절&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;WITH 절은 복잡한 쿼리문에서 반복되는 서브쿼리를 임시 테이블처럼 활용할 수 있는 가상 테이블의 개념이다. 일종의 이름을 붙인 서브쿼리라고 할 수 있다. 주요 RDBMS(MySQL, Oracle, Postgresql...)에서 제공하는 기능이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;WITH 절을 사용하면 &lt;b&gt;반복되는 블록을 재사용함&lt;/b&gt;으로써 &lt;u&gt;코드 가독성을 높일&lt;/u&gt; 수 있으며 &lt;u&gt;실행 속도 시간을 최적화&lt;/u&gt;할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;WITH 절은 아래와 같이 별칭(서브쿼리의 이름)을 지정하고 별칭에 해당하는 쿼리문을 지정해주면된다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1709401155664&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;WITH 별칭1 AS (SELECT 문),
     별칭2 AS (SELECT 문)
...
SELECT
FROM 별칭1, 별칭2 ...;


# example
WITH LIST AS (
	SELECT * 
	FROM TEST_TB
	WHERE VALUE &amp;gt;= 100
)
SELECT *
FROM LIST;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #99cefa; color: #000000;&quot;&gt;&lt;b&gt;참고&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://thebook.io/006696/0187/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://thebook.io/006696/0187/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1709401162570&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;오라클 SQL과 PL/SQL을 다루는 기술: 02 WITH 절&quot; data-og-description=&quot;더북(TheBook): (주)도서출판 길벗에서 제공하는 IT 도서 열람 서비스입니다.&quot; data-og-host=&quot;thebook.io&quot; data-og-source-url=&quot;https://thebook.io/006696/0187/&quot; data-og-url=&quot;https://thebook.io/006696/0187/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://thebook.io/006696/0187/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://thebook.io/006696/0187/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;오라클 SQL과 PL/SQL을 다루는 기술: 02 WITH 절&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;더북(TheBook): (주)도서출판 길벗에서 제공하는 IT 도서 열람 서비스입니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;thebook.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://learnsql.com/blog/what-is-with-clause-sql/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://learnsql.com/blog/what-is-with-clause-sql/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1709399733159&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;What Is the WITH Clause in SQL?&quot; data-og-description=&quot;We discuss the SQL WITH clause, also called the common table expression or CTE, a powerful tool for simplifying queries and processing hierarchical data.&quot; data-og-host=&quot;learnsql.com&quot; data-og-source-url=&quot;https://learnsql.com/blog/what-is-with-clause-sql/&quot; data-og-url=&quot;https://learnsql.com/blog/what-is-with-clause-sql/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://learnsql.com/blog/what-is-with-clause-sql/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://learnsql.com/blog/what-is-with-clause-sql/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;What Is the WITH Clause in SQL?&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;We discuss the SQL WITH clause, also called the common table expression or CTE, a powerful tool for simplifying queries and processing hierarchical data.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;learnsql.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;http://www.gurubee.net/lecture/3788&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://www.gurubee.net/lecture/3788&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1709399748459&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;SQL 성능 개선을 위한 WITH절 활용하기&quot; data-og-description=&quot;SQL 성능개선을 위한 WITH절 활용하기데이터 중복 액세스 제거하기SQL에서 동일한 데이터를 반복처리시, 성능개선방법으로 WITH절이 많이 활용된다.데..&quot; data-og-host=&quot;www.gurubee.net&quot; data-og-source-url=&quot;http://www.gurubee.net/lecture/3788&quot; data-og-url=&quot;http://www.gurubee.net/lecture/3788&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/eIKpPG/hyVqgUGvWH/AwF7vydc4VSpwbVCLT60y0/img.jpg?width=200&amp;amp;height=203&amp;amp;face=0_0_200_203&quot;&gt;&lt;a href=&quot;http://www.gurubee.net/lecture/3788&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://www.gurubee.net/lecture/3788&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/eIKpPG/hyVqgUGvWH/AwF7vydc4VSpwbVCLT60y0/img.jpg?width=200&amp;amp;height=203&amp;amp;face=0_0_200_203');&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;SQL 성능 개선을 위한 WITH절 활용하기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;SQL 성능개선을 위한 WITH절 활용하기데이터 중복 액세스 제거하기SQL에서 동일한 데이터를 반복처리시, 성능개선방법으로 WITH절이 많이 활용된다.데..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.gurubee.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Development/Database &amp;amp; SQL</category>
      <category>AS</category>
      <category>mysql</category>
      <category>Oracle</category>
      <category>sql</category>
      <category>sub query</category>
      <category>with</category>
      <category>서브쿼리</category>
      <author>컴공 K</author>
      <guid isPermaLink="true">https://computer-science-student.tistory.com/790</guid>
      <comments>https://computer-science-student.tistory.com/790#entry790comment</comments>
      <pubDate>Sun, 10 Mar 2024 01:00:48 +0900</pubDate>
    </item>
    <item>
      <title>[Oracle] 오라클 실수로 삭제 후 커밋한 데이터 복구 - AS OF TIMESTAMP</title>
      <link>https://computer-science-student.tistory.com/788</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8; color: #000000;&quot;&gt;&lt;b&gt;[Oracle] 오라클 실수로 삭제 후 커밋한 데이터 복구 - AS&amp;nbsp;OF&amp;nbsp;TIMESTAMP&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;최근 실수로 데이터를 삭제하고 커밋(commit)해버려 엄청 당황스러웠던 일이 있었다. 어떻게 복구할 수 있을까 찾던 중 AS OF TIMESTAMP 를 활용하여 복구하는 방법에 대해 알게 되었고 그 방법에 대해 이 글에 정리하고자 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; FlashBack은 DB에서 데이터 수정 및 삭제를 하고 커밋을 한 이후더라도 특정한 시간이나 특정 시점으로 되돌릴 수 있는 기능이다. Oracle 9i 이후부터 지원되는 기능으로 잘못된 DML operation으로 인한 복구를 쉽게 할 수 있다. FlashBack 기능을 통해 AS OF TIMESTAMP를 활용하여 삭제 전 데이터를 조회할 수 있으며 이를 활용하여 데이터 복구가 가능하다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&lt;b&gt;참고 : FlashBack을 사용하기 위한 조건&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #666666;&quot;&gt;- 자동 UNDO 관리 시스템을 사용 : UNDO_MANAGEMENT = AUTO&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #666666;&quot;&gt;- UNDO 정보를 &lt;span style=&quot;color: #666666; text-align: left;&quot;&gt;어느 시점까지&lt;span&gt; &lt;/span&gt;&lt;/span&gt;보유할지 설정 : UNDO_RETENTION = {시간(단위:초)}&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #666666;&quot;&gt;- UNDO 관련 파라미터 값 확인 : SHOW PARAMETER UNDO;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아래와 같이 기존 select 문처럼 테이블명과 조회 조건을 넣고 AS OF TIMESTAMP 부분에 수치와 단위 부분을 원하는 조건으로 넣고 조회하면 된다. 단위는 SECOND(초), MINUTE(분), HOUR(시간), DAY(일)이 있다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1706628905336&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- 단위 : SECOND, MINUTE, HOUR, DAY
SELECT * 
FROM {테이블명} AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '수치' 단위) 
WHERE {조회조건};


-- EXAMPLE
SELECT *
FROM TEST AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '10' SECOND) -- 10초 전 TEST 테이블의 데이터 조회
WHERE NAME LIKE 'K%';&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;a href=&quot;http://www.gurubee.net/lecture/1869&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://www.gurubee.net/lecture/1869&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1706630000907&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;Undo Segment 관리&quot; data-og-description=&quot;초기화 파라미터 환경구성 ① UNDO_MANAGEMENT &amp;nbsp; - 테이타베이스의 Undo 모드를 자동 모드로 사용 할지 수동 모드를 사용할지 여부를 결정 합니다. ..&quot; data-og-host=&quot;www.gurubee.net&quot; data-og-source-url=&quot;http://www.gurubee.net/lecture/1869&quot; data-og-url=&quot;http://www.gurubee.net/lecture/1869&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bMi332/hyVca7x9Zw/gzSdGXBPmaCAic6Wrgmz8K/img.jpg?width=200&amp;amp;height=203&amp;amp;face=0_0_200_203&quot;&gt;&lt;a href=&quot;http://www.gurubee.net/lecture/1869&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://www.gurubee.net/lecture/1869&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bMi332/hyVca7x9Zw/gzSdGXBPmaCAic6Wrgmz8K/img.jpg?width=200&amp;amp;height=203&amp;amp;face=0_0_200_203');&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;Undo Segment 관리&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;초기화 파라미터 환경구성 ① UNDO_MANAGEMENT &amp;nbsp; - 테이타베이스의 Undo 모드를 자동 모드로 사용 할지 수동 모드를 사용할지 여부를 결정 합니다. ..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.gurubee.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;a href=&quot;https://youngram2.tistory.com/66&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://youngram2.tistory.com/66&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1706625040865&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;Oracle FlashBack 플래시백 ( 데이터 복원)&quot; data-og-description=&quot;Oracle Flashback 기능이란? DB관리중에 실수로 데이터를 삭제하거나 데이터값을 잘못 변경하는 실수가 가끔 발생 합니다. 이러한 실수는 commit 이전이라면 rollback명령어로 수행한 작업을 원복 시킬수&quot; data-og-host=&quot;youngram2.tistory.com&quot; data-og-source-url=&quot;https://youngram2.tistory.com/66&quot; data-og-url=&quot;https://youngram2.tistory.com/66&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bR42PR/hyVb04VFGO/9nBh4MY86UkfqSUj8fmSz1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/F083B/hyVccEh5Hi/p8Tsec5GpF5RkYi7ekz7yk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;https://youngram2.tistory.com/66&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://youngram2.tistory.com/66&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bR42PR/hyVb04VFGO/9nBh4MY86UkfqSUj8fmSz1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/F083B/hyVccEh5Hi/p8Tsec5GpF5RkYi7ekz7yk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800');&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;Oracle FlashBack 플래시백 ( 데이터 복원)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Oracle Flashback 기능이란? DB관리중에 실수로 데이터를 삭제하거나 데이터값을 잘못 변경하는 실수가 가끔 발생 합니다. 이러한 실수는 commit 이전이라면 rollback명령어로 수행한 작업을 원복 시킬수&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;youngram2.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=CqqNRKaVwqg&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.youtube.com/watch?v=CqqNRKaVwqg&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Development/Database &amp;amp; SQL</category>
      <category>as of timestamp</category>
      <category>Flashback</category>
      <category>Oracle</category>
      <category>sql</category>
      <category>UNDO</category>
      <author>컴공 K</author>
      <guid isPermaLink="true">https://computer-science-student.tistory.com/788</guid>
      <comments>https://computer-science-student.tistory.com/788#entry788comment</comments>
      <pubDate>Tue, 30 Jan 2024 23:00:44 +0900</pubDate>
    </item>
    <item>
      <title>[스프링 부트, Spring Boot] @Profile, @ActiveProfiles</title>
      <link>https://computer-science-student.tistory.com/787</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8; color: #000000;&quot;&gt;&lt;b&gt;@Profile&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;빈이나 컴포넌트에 프로필을 구분하여 빈을 로드하고 싶은 경우&amp;nbsp;@Profile을 활용하면 된다. 아래와 같이 @Profile을 통해 프로필(profile)이 active될 때 어떤 빈 혹은 컴포넌트를 등록할지 결정할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1705333549095&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Configuration
@Profile(&quot;prod&quot;)
public class ProdConfig{
    @Bean
    public DataSource dataSource(){
    // ... 생략
    }
}


@Configuration
@Profile(&quot;dev&quot;)
public class DevConfig{
    @Bean
    public DataSource dataSource(){
    // ... 생략
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;프로필 이름 앞에 NOT 연산자인 !를 접두사로 붙여 프로필에서 제외시킬 수 있다. 아래의 경우 prod 프로필을 제외한 프로필에 대해서만 활성화 된다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1705334843928&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Configuration
@Profile(&quot;!prod&quot;)
public class ProdExceptConfig{
    @Bean
    public DataSource dataSource(){
    // ... 생략
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8; color: #000000;&quot;&gt;&lt;b&gt;@ActiveProfiles&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;@ActiveProfiles를 사용해 &lt;span style=&quot;text-align: start;&quot;&gt;테스트 수행시 사용할&amp;nbsp;&lt;/span&gt;프로필을 지정할 수 있다. 아래의 예시의 경우 local과 default 프로필만 적용되어 동작한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1705336029204&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@SpringBootTest
@ActiveProfiles(&quot;local&quot;)
public class RepoTest {
    @Autowired
    Repo repo;
    
    // ... 생략
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&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://velog.io/@injoon2019/Profile-ActiveProfiles&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://velog.io/@injoon2019/Profile-ActiveProfiles&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1700414335492&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;@Profile, @ActiveProfiles&quot; data-og-description=&quot;케이의 블로그를 참고해서 개발환경과 배포 환경을 분리해봤다. 하지만 이렇게 분리하고 나니 테스트가 거의 다 깨졌다. 처음에는 테스트 쪽에 application.yml을 생성하면 된다고 생각했는데 그렇&quot; data-og-host=&quot;velog.io&quot; data-og-source-url=&quot;https://velog.io/@injoon2019/Profile-ActiveProfiles&quot; data-og-url=&quot;https://velog.io/@injoon2019/Profile-ActiveProfiles&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/CX9vf/hyUCcDmSLR/kkqEUMrErCrfet3x2t77n0/img.png?width=766&amp;amp;height=712&amp;amp;face=0_0_766_712,https://scrap.kakaocdn.net/dn/YP6DK/hyUCgZ4gSk/Kc5Fm4CUQh3J3nne0cxeV1/img.png?width=766&amp;amp;height=712&amp;amp;face=0_0_766_712,https://scrap.kakaocdn.net/dn/bMic0A/hyUyorWiHo/ACvJIwjMwKO0PhSYSWbaXK/img.png?width=857&amp;amp;height=576&amp;amp;face=0_0_857_576&quot;&gt;&lt;a href=&quot;https://velog.io/@injoon2019/Profile-ActiveProfiles&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://velog.io/@injoon2019/Profile-ActiveProfiles&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/CX9vf/hyUCcDmSLR/kkqEUMrErCrfet3x2t77n0/img.png?width=766&amp;amp;height=712&amp;amp;face=0_0_766_712,https://scrap.kakaocdn.net/dn/YP6DK/hyUCgZ4gSk/Kc5Fm4CUQh3J3nne0cxeV1/img.png?width=766&amp;amp;height=712&amp;amp;face=0_0_766_712,https://scrap.kakaocdn.net/dn/bMic0A/hyUyorWiHo/ACvJIwjMwKO0PhSYSWbaXK/img.png?width=857&amp;amp;height=576&amp;amp;face=0_0_857_576');&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;@Profile, @ActiveProfiles&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;케이의 블로그를 참고해서 개발환경과 배포 환경을 분리해봤다. 하지만 이렇게 분리하고 나니 테스트가 거의 다 깨졌다. 처음에는 테스트 쪽에 application.yml을 생성하면 된다고 생각했는데 그렇&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;velog.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://memo-the-day.tistory.com/32&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://memo-the-day.tistory.com/32&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1705334773652&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 프로필(Profiles)  설정방법(예제)&quot; data-og-description=&quot;1. 개요 이 튜토리얼에서는 Spring에 프로파일을 소개하는 데 초점을 맞출 것입니다. 프로필은 프레임 워크의 핵심 기능으로, 빈을 다른 프로필 ( 예 : dev , test , prod) 에 매핑 할 수 있습니다. 그런 &quot; data-og-host=&quot;memo-the-day.tistory.com&quot; data-og-source-url=&quot;https://memo-the-day.tistory.com/32&quot; data-og-url=&quot;https://memo-the-day.tistory.com/32&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cPNQh8/hyU5GEWIkW/j7oYt3F65Ns9oPQk7bqf00/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/dz49ws/hyU5R7xYhq/3uiPZlO8J6VSucvJ58XEK1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;https://memo-the-day.tistory.com/32&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://memo-the-day.tistory.com/32&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cPNQh8/hyU5GEWIkW/j7oYt3F65Ns9oPQk7bqf00/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/dz49ws/hyU5R7xYhq/3uiPZlO8J6VSucvJ58XEK1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800');&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 프로필(Profiles) 설정방법(예제)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;1. 개요 이 튜토리얼에서는 Spring에 프로파일을 소개하는 데 초점을 맞출 것입니다. 프로필은 프레임 워크의 핵심 기능으로, 빈을 다른 프로필 ( 예 : dev , test , prod) 에 매핑 할 수 있습니다. 그런&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;memo-the-day.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;</description>
      <category>Development/Spring &amp;amp; SpringBoot</category>
      <category>@ActiveProfiles</category>
      <category>@Profile</category>
      <category>spring</category>
      <category>spring boot</category>
      <author>컴공 K</author>
      <guid isPermaLink="true">https://computer-science-student.tistory.com/787</guid>
      <comments>https://computer-science-student.tistory.com/787#entry787comment</comments>
      <pubDate>Mon, 15 Jan 2024 23:00:04 +0900</pubDate>
    </item>
    <item>
      <title>[Infra] 스케일 업(Scale-up), 스케일 아웃(Scale-out)</title>
      <link>https://computer-science-student.tistory.com/786</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8; color: #000000;&quot;&gt;&lt;b&gt;[Infra] 스케일 업(Scale-up), 스케일 아웃(Scale-out)&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;서버의 용량이나 성능을 높이기 위해서 인프라를 업그레이드 하는 방법으로 스케일 업과 스케일 아웃이 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;box-sizing: border-box; border-right-width: 0px; border-bottom: #6B66FF 1px solid; margin: 5px 0px; border-left: #6B66FF 15px solid; letter-spacing: 1px; line-height: 1.5; border-top-width: 0px; padding: 3px 5px 3px 5px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;스케일 업(Scale-up)&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;기존 서버의 사양을 업그레이드&lt;/b&gt;&lt;/span&gt;해 시스템을 확장하는 것&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;추가적인 네트워크 연결없이 사양만 증강하고 한 대의 서버를 관리하면 되기 때문에 비교적 간단&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;성능 향상에 따른 비용부담이 큼&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;단일 서버이기 때문에 서버 교체시 다운타임 발생 및 장애 발생시 큰 타격&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하드웨어적인 예)&lt;br /&gt;성능이나 용량 증강을 목적으로 하나의 서버에 디스크를 추가하거나 CPU나 메모리를 업그레이드시키는 것&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;소프트웨어적인 예)&lt;br /&gt;AWS의 EC2 인스턴스 사양을 micro에서 small, small에서 medium 등으로 높이는 것&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;559&quot; data-origin-height=&quot;455&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qLzjG/btsCOGqwZ0u/78JLREk56I1QQCxwEGP6QK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qLzjG/btsCOGqwZ0u/78JLREk56I1QQCxwEGP6QK/img.png&quot; data-alt=&quot;출처 :&amp;amp;nbsp;microsoft&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qLzjG/btsCOGqwZ0u/78JLREk56I1QQCxwEGP6QK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqLzjG%2FbtsCOGqwZ0u%2F78JLREk56I1QQCxwEGP6QK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;357&quot; height=&quot;291&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;559&quot; data-origin-height=&quot;455&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처 :&amp;nbsp;microsoft&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;box-sizing: border-box; border-right-width: 0px; border-bottom: #6B66FF 1px solid; margin: 5px 0px; border-left: #6B66FF 15px solid; letter-spacing: 1px; line-height: 1.5; border-top-width: 0px; padding: 3px 5px 3px 5px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;스케일 아웃 (Scale-out)&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;서버를 여러 대 추가&lt;/b&gt;&lt;/span&gt;하여 시스템을 확장하는 것&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;서버를 필요한 상황에 필요한 만큼 추가할 수 있어 확장의 유연성 있음&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;서버가 추가될 수록 관리 편의성이 떨어지고, 운영 비용 증가&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;비슷한 사양의 서버를 추가로 연결해 &lt;u&gt;처리할 수 있는 데이터 용량이 증가&lt;/u&gt;할 뿐만 아니라 &lt;u&gt;기존 서버의 부하를 분담&lt;/u&gt;해 성능 향상의 효과를 기대&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;클라우드 서비스에서는 자원 사용량을 모니터링하여 자동으로 서버를 증설(Scale-out)하는 Auto Scaling 기능도 있음&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;스케일 아웃의 반대로 서버 수를 줄이는 것을 스케일 인(Scale-in)이라고 함&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;680&quot; data-origin-height=&quot;455&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0Yby9/btsCOCuNNkV/WtLoKpAMTfU5SWTjRL2hek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0Yby9/btsCOCuNNkV/WtLoKpAMTfU5SWTjRL2hek/img.png&quot; data-alt=&quot;출처 : microsoft&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0Yby9/btsCOCuNNkV/WtLoKpAMTfU5SWTjRL2hek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0Yby9%2FbtsCOCuNNkV%2FWtLoKpAMTfU5SWTjRL2hek%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;416&quot; height=&quot;278&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;680&quot; data-origin-height=&quot;455&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처 : microsoft&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;800&quot; data-origin-height=&quot;352&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RPZIw/btsCOC2JkaQ/F2uXv8E2oZ9ALo0cLhzvxK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RPZIw/btsCOC2JkaQ/F2uXv8E2oZ9ALo0cLhzvxK/img.png&quot; data-alt=&quot;출처 :&amp;amp;nbsp;https://tech.gluesys.com/&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RPZIw/btsCOC2JkaQ/F2uXv8E2oZ9ALo0cLhzvxK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRPZIw%2FbtsCOC2JkaQ%2FF2uXv8E2oZ9ALo0cLhzvxK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;352&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;352&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처 :&amp;nbsp;https://tech.gluesys.com/&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;a href=&quot;https://tech.gluesys.com/blog/2020/02/17/storage_3_intro.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://tech.gluesys.com/blog/2020/02/17/storage_3_intro.html&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1703959750418&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;글루시스 기술 블로그&quot; data-og-description=&quot;A simple yet classy theme for your Jekyll website or blog.&quot; data-og-host=&quot;tech.gluesys.com&quot; data-og-source-url=&quot;https://tech.gluesys.com/blog/2020/02/17/storage_3_intro.html&quot; data-og-url=&quot;https://tech.gluesys.com&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/eLopH/hyUTwi7pnF/FM4GF4Y0kcPcloX9P1OP60/img.png?width=612&amp;amp;height=605&amp;amp;face=0_0_612_605,https://scrap.kakaocdn.net/dn/bQTKBM/hyUTIDSsuo/0VNj0tXFcUG9daG4Zqmwc0/img.png?width=612&amp;amp;height=605&amp;amp;face=0_0_612_605,https://scrap.kakaocdn.net/dn/AalCI/hyUXPH6es0/zf6n4Lzi8Ac05SWTILo8z1/img.jpg?width=2000&amp;amp;height=2000&amp;amp;face=0_0_2000_2000&quot;&gt;&lt;a href=&quot;https://tech.gluesys.com/blog/2020/02/17/storage_3_intro.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://tech.gluesys.com/blog/2020/02/17/storage_3_intro.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/eLopH/hyUTwi7pnF/FM4GF4Y0kcPcloX9P1OP60/img.png?width=612&amp;amp;height=605&amp;amp;face=0_0_612_605,https://scrap.kakaocdn.net/dn/bQTKBM/hyUTIDSsuo/0VNj0tXFcUG9daG4Zqmwc0/img.png?width=612&amp;amp;height=605&amp;amp;face=0_0_612_605,https://scrap.kakaocdn.net/dn/AalCI/hyUXPH6es0/zf6n4Lzi8Ac05SWTILo8z1/img.jpg?width=2000&amp;amp;height=2000&amp;amp;face=0_0_2000_2000');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;글루시스 기술 블로그&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A simple yet classy theme for your Jekyll website or blog.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;tech.gluesys.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;a href=&quot;https://tecoble.techcourse.co.kr/post/2021-10-12-scale-up-scale-out/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://tecoble.techcourse.co.kr/post/2021-10-12-scale-up-scale-out/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1703958385455&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;Scale-up과 Scale-out에 대해 알아보자!&quot; data-og-description=&quot;&amp;hellip;&quot; data-og-host=&quot;tecoble.techcourse.co.kr&quot; data-og-source-url=&quot;https://tecoble.techcourse.co.kr/post/2021-10-12-scale-up-scale-out/&quot; data-og-url=&quot;https://tecoble.techcourse.co.kr/post/2021-10-12-scale-up-scale-out/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/edetNJ/hyUTEOYHNF/sI3wppU0b0XVWYcmPz7kd0/img.jpg?width=738&amp;amp;height=517&amp;amp;face=0_0_738_517,https://scrap.kakaocdn.net/dn/bTn5vX/hyUXYSzlfr/aQ2CZFVK8VtkjDC3qFdnTK/img.jpg?width=738&amp;amp;height=517&amp;amp;face=0_0_738_517,https://scrap.kakaocdn.net/dn/wu4bn/hyUXTqbLKh/AfWwbgAyuzuE3KL6I72KJ0/img.png?width=800&amp;amp;height=352&amp;amp;face=0_0_800_352&quot;&gt;&lt;a href=&quot;https://tecoble.techcourse.co.kr/post/2021-10-12-scale-up-scale-out/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://tecoble.techcourse.co.kr/post/2021-10-12-scale-up-scale-out/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/edetNJ/hyUTEOYHNF/sI3wppU0b0XVWYcmPz7kd0/img.jpg?width=738&amp;amp;height=517&amp;amp;face=0_0_738_517,https://scrap.kakaocdn.net/dn/bTn5vX/hyUXYSzlfr/aQ2CZFVK8VtkjDC3qFdnTK/img.jpg?width=738&amp;amp;height=517&amp;amp;face=0_0_738_517,https://scrap.kakaocdn.net/dn/wu4bn/hyUXTqbLKh/AfWwbgAyuzuE3KL6I72KJ0/img.png?width=800&amp;amp;height=352&amp;amp;face=0_0_800_352');&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;Scale-up과 Scale-out에 대해 알아보자!&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;hellip;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;tecoble.techcourse.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;a href=&quot;https://library.gabia.com/contents/infrahosting/1222/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://library.gabia.com/contents/infrahosting/1222/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1703944499246&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;가비아 라이브러리&quot; data-og-description=&quot;IT 콘텐츠 허브&quot; data-og-host=&quot;library.gabia.com&quot; data-og-source-url=&quot;https://library.gabia.com/contents/infrahosting/1222/&quot; data-og-url=&quot;https://library.gabia.com/contents/infrahosting/1222/library.gabia.com/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/uEwXB/hyUTzz7T0F/SkSvMfCNH1kogYB3OG2KI1/img.jpg?width=800&amp;amp;height=447&amp;amp;face=0_0_800_447,https://scrap.kakaocdn.net/dn/TRoSH/hyUTwcmtPb/Cx5DGHH711GUhBEQkPzsjK/img.jpg?width=820&amp;amp;height=206&amp;amp;face=0_0_820_206&quot;&gt;&lt;a href=&quot;https://library.gabia.com/contents/infrahosting/1222/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://library.gabia.com/contents/infrahosting/1222/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/uEwXB/hyUTzz7T0F/SkSvMfCNH1kogYB3OG2KI1/img.jpg?width=800&amp;amp;height=447&amp;amp;face=0_0_800_447,https://scrap.kakaocdn.net/dn/TRoSH/hyUTwcmtPb/Cx5DGHH711GUhBEQkPzsjK/img.jpg?width=820&amp;amp;height=206&amp;amp;face=0_0_820_206');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;가비아 라이브러리&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;IT 콘텐츠 허브&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;library.gabia.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://learn.microsoft.com/ko-kr/dotnet/architecture/cloud-native/infrastructure-resiliency-azure&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://learn.microsoft.com/ko-kr/dotnet/architecture/cloud-native/infrastructure-resiliency-azure&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1703959962354&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Azure 플랫폼 복원력 - .NET&quot; data-og-description=&quot;Azure용 클라우드 네이티브 .NET 앱 설계 | Azure를 통한 클라우드 인프라 복원력&quot; data-og-host=&quot;learn.microsoft.com&quot; data-og-source-url=&quot;https://learn.microsoft.com/ko-kr/dotnet/architecture/cloud-native/infrastructure-resiliency-azure&quot; data-og-url=&quot;https://learn.microsoft.com/ko-kr/dotnet/architecture/cloud-native/infrastructure-resiliency-azure&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/XdYEz/hyUXPVCrti/bsSVjoTyBCmTk8efypR5X0/img.png?width=260&amp;amp;height=256&amp;amp;face=0_0_260_256,https://scrap.kakaocdn.net/dn/bnDbI1/hyUXSdLeph/kKub21HlnzW6CevJjBAMs0/img.png?width=1890&amp;amp;height=672&amp;amp;face=0_0_1890_672,https://scrap.kakaocdn.net/dn/YfGL4/hyUTK2LGyK/BOFLKDuyOXYp926HY7WHf0/img.png?width=700&amp;amp;height=222&amp;amp;face=0_0_700_222&quot;&gt;&lt;a href=&quot;https://learn.microsoft.com/ko-kr/dotnet/architecture/cloud-native/infrastructure-resiliency-azure&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://learn.microsoft.com/ko-kr/dotnet/architecture/cloud-native/infrastructure-resiliency-azure&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/XdYEz/hyUXPVCrti/bsSVjoTyBCmTk8efypR5X0/img.png?width=260&amp;amp;height=256&amp;amp;face=0_0_260_256,https://scrap.kakaocdn.net/dn/bnDbI1/hyUXSdLeph/kKub21HlnzW6CevJjBAMs0/img.png?width=1890&amp;amp;height=672&amp;amp;face=0_0_1890_672,https://scrap.kakaocdn.net/dn/YfGL4/hyUTK2LGyK/BOFLKDuyOXYp926HY7WHf0/img.png?width=700&amp;amp;height=222&amp;amp;face=0_0_700_222');&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;Azure 플랫폼 복원력 - .NET&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Azure용 클라우드 네이티브 .NET 앱 설계 | Azure를 통한 클라우드 인프라 복원력&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;learn.microsoft.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Development/기타</category>
      <category>Scale-In</category>
      <category>scale-out</category>
      <category>Scale-up</category>
      <category>스케일아웃</category>
      <category>스케일업</category>
      <category>스케일인</category>
      <author>컴공 K</author>
      <guid isPermaLink="true">https://computer-science-student.tistory.com/786</guid>
      <comments>https://computer-science-student.tistory.com/786#entry786comment</comments>
      <pubDate>Sat, 30 Dec 2023 23:00:00 +0900</pubDate>
    </item>
    <item>
      <title>[MySQL] 한번에 여러개의 데이터 삽입(insert)</title>
      <link>https://computer-science-student.tistory.com/782</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8; color: #000000;&quot;&gt;&lt;b&gt;[MySQL]&amp;nbsp;한번에&amp;nbsp;여러개의&amp;nbsp;데이터&amp;nbsp;삽입(insert)&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;첫번째로 VALUES 로 아래와 같이 여러 데이터를 한번에 삽입하는 방법이 있다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1700410968128&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;INSERT INTO TEST (col1, col2, ...)
VALUES
('v1', 'v2', ...),
('v1', 'v2', ...),
...
('v1', 'v2', ...);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;두번째로 SELECT 문을 활용하여 SELECT 된 결과를 삽입 방법이 있다.&amp;nbsp;여러 테이블의 결과를 단일 테이블에 저장하거나 하나의 테이블의 일부 컬럼을 조회하여 저장하는 경우에 활용된다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1700411700763&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;INSERT INTO TEST
SELECT * FROM TEMP WHERE 조건;


SELECT INTO TEST
SELECT A, B, C, D FROM TEMP WHERE 조건;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Development/Database &amp;amp; SQL</category>
      <category>insert</category>
      <category>mysql</category>
      <category>select</category>
      <category>넣기</category>
      <category>데이터</category>
      <category>한번에</category>
      <author>컴공 K</author>
      <guid isPermaLink="true">https://computer-science-student.tistory.com/782</guid>
      <comments>https://computer-science-student.tistory.com/782#entry782comment</comments>
      <pubDate>Tue, 31 Oct 2023 02:00:27 +0900</pubDate>
    </item>
    <item>
      <title>[AWS] 예산(Budgets) 제한 설정</title>
      <link>https://computer-science-student.tistory.com/781</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8; color: #000000;&quot;&gt;&lt;b&gt;[AWS]&amp;nbsp;예산(Budgets)&amp;nbsp;제한&amp;nbsp;설정&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;AWS에서 청구서가 날아와 '왜 이런 금액이 청구되었지?' 하고 갑작스럽게 놀라기 전에 미리 요금 폭탄을 예방할 수 있는 방법에 대해 소개하고자 한다. 바로 AWS의 예산(Budgets) 설정 서비스이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;우선 AWS console에서 &lt;b&gt;Budgets&lt;/b&gt;를 검색 후 들어간다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1091&quot; data-origin-height=&quot;337&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/r7ai9/btsCTvhevmv/MYzVF5kHecBykDEhAji2kk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/r7ai9/btsCTvhevmv/MYzVF5kHecBykDEhAji2kk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/r7ai9/btsCTvhevmv/MYzVF5kHecBykDEhAji2kk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fr7ai9%2FbtsCTvhevmv%2FMYzVF5kHecBykDEhAji2kk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1091&quot; height=&quot;337&quot; data-origin-width=&quot;1091&quot; data-origin-height=&quot;337&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아래와 같이 나오면 &lt;b&gt;예산 생성&lt;/b&gt; 버튼을 클릭한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1166&quot; data-origin-height=&quot;470&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rFnWv/btsCRfFQkv3/i8YlUXgpPSGqef3K7nCwkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rFnWv/btsCRfFQkv3/i8YlUXgpPSGqef3K7nCwkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rFnWv/btsCRfFQkv3/i8YlUXgpPSGqef3K7nCwkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrFnWv%2FbtsCRfFQkv3%2Fi8YlUXgpPSGqef3K7nCwkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1166&quot; height=&quot;470&quot; data-origin-width=&quot;1166&quot; data-origin-height=&quot;470&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다음과 같이 예산 유형을 선택하면 된다. &lt;u&gt;프리티어 서비스로만 이용하고 싶은 경우 제로 지출 예산 템플릿&lt;/u&gt;을 선택시 간단하게 예산 생성이 가능하다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XFaSI/btsCN457NRP/KkVGiCBwseCMD7xI2YNkl0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XFaSI/btsCN457NRP/KkVGiCBwseCMD7xI2YNkl0/img.png&quot; data-origin-width=&quot;661&quot; data-origin-height=&quot;1139&quot; data-is-animation=&quot;false&quot; style=&quot;width: 51.4326%; margin-right: 10px;&quot; data-widthpercent=&quot;52.04&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XFaSI/btsCN457NRP/KkVGiCBwseCMD7xI2YNkl0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXFaSI%2FbtsCN457NRP%2FKkVGiCBwseCMD7xI2YNkl0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;661&quot; height=&quot;1139&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mZIZj/btsCODm36Vl/s8qgxWFKD53lXIGlu1o1a0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mZIZj/btsCODm36Vl/s8qgxWFKD53lXIGlu1o1a0/img.png&quot; data-origin-width=&quot;575&quot; data-origin-height=&quot;1075&quot; data-is-animation=&quot;false&quot; style=&quot;width: 47.4046%;&quot; data-widthpercent=&quot;47.96&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mZIZj/btsCODm36Vl/s8qgxWFKD53lXIGlu1o1a0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmZIZj%2FbtsCODm36Vl%2Fs8qgxWFKD53lXIGlu1o1a0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;575&quot; height=&quot;1075&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;조금 더 예산에 대한 구체적인 설정(예산 금액 설정, 예산 범위, 알림 임계값...)을 하고 싶다면 템플릿을 사용하지 않고 &lt;b&gt;사용자 지정(고급)&lt;/b&gt;을 선택하여 커스텀하면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예산 생성 후 Budgets(예산) 개요를 보면 아래와 같이 생성한 예산 목록 리스트가 나온다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;293&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cbNmap/btsCMzZD5dp/ISog9kZb4To83YlkpI9brk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cbNmap/btsCMzZD5dp/ISog9kZb4To83YlkpI9brk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cbNmap/btsCMzZD5dp/ISog9kZb4To83YlkpI9brk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcbNmap%2FbtsCMzZD5dp%2FISog9kZb4To83YlkpI9brk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;940&quot; height=&quot;293&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;293&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;a href=&quot;https://aws.amazon.com/ko/getting-started/hands-on/control-your-costs-free-tier-budgets/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://aws.amazon.com/ko/getting-started/hands-on/control-your-costs-free-tier-budgets/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1703956057132&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;company&quot; data-og-title=&quot;프리 티어 및 Budgets을 사용하여 AWS 비용을 관리하는 방법 | AWS&quot; data-og-description=&quot;&quot; data-og-host=&quot;aws.amazon.com&quot; data-og-source-url=&quot;https://aws.amazon.com/ko/getting-started/hands-on/control-your-costs-free-tier-budgets/&quot; data-og-url=&quot;https://aws.amazon.com/ko/getting-started/hands-on/control-your-costs-free-tier-budgets/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/tvJFK/hyUXNjdCdM/b2BBZvRd9Ajr5GdxdfGnK1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/um5q4/hyUTDP52hK/2s7SV5LS1KVkKluDKn8p71/img.png?width=179&amp;amp;height=109&amp;amp;face=0_0_179_109,https://scrap.kakaocdn.net/dn/g6Q1E/hyUXUbzGN4/Q8tebKbnkN10mfRa2SaE2k/img.png?width=2400&amp;amp;height=1328&amp;amp;face=0_0_2400_1328&quot;&gt;&lt;a href=&quot;https://aws.amazon.com/ko/getting-started/hands-on/control-your-costs-free-tier-budgets/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aws.amazon.com/ko/getting-started/hands-on/control-your-costs-free-tier-budgets/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/tvJFK/hyUXNjdCdM/b2BBZvRd9Ajr5GdxdfGnK1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/um5q4/hyUTDP52hK/2s7SV5LS1KVkKluDKn8p71/img.png?width=179&amp;amp;height=109&amp;amp;face=0_0_179_109,https://scrap.kakaocdn.net/dn/g6Q1E/hyUXUbzGN4/Q8tebKbnkN10mfRa2SaE2k/img.png?width=2400&amp;amp;height=1328&amp;amp;face=0_0_2400_1328');&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;프리 티어 및 Budgets을 사용하여 AWS 비용을 관리하는 방법 | AWS&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aws.amazon.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Development/기타</category>
      <category>AWS</category>
      <category>Budgets</category>
      <category>설정</category>
      <category>예산</category>
      <author>컴공 K</author>
      <guid isPermaLink="true">https://computer-science-student.tistory.com/781</guid>
      <comments>https://computer-science-student.tistory.com/781#entry781comment</comments>
      <pubDate>Sun, 15 Oct 2023 22:00:14 +0900</pubDate>
    </item>
  </channel>
</rss>