프록시 프록시는 대리(행위)나 대리권, 대리 투표, 대리인 등을 뜻하는 단어입니다. 이 개념을 클라이언트와 서버 개념에 도입한다면 클라이언트가 요청한 결과를 서버에 직접 요청하는 것이 아니라 어떤 대리자를 통해서 간접적으로 서버에 요청할 수 있습니다. 예를 들어서 내가 직접 마트에서 장을 볼 수도 있지만, 누군가에게 대신 장을 봐달라고 부탁할 수도 있습니다. 여기서 대신 장을 보는 대리자를 영어로 Proxy 라고 합니다. 프록시의 역할 대체 가능 객체에서 프록시가 되려면, 클라이언트는 서버에게 요청을 한 것인지, 프록시에게 요청을 한 것인지 조차 몰라야 합니다. 쉽게 이야기하면 서버와 프록시는 같은 인터페이스를 사용해야 합니다. 그리고 클라이언트가 사용하는 서비스 객체를 프록시 객체로 변경해도 클라이언트..
Jenkins 를 이용하여 배포 자동화를 구축하였지만 매번 Build 에 성공하였는지 매번 상태를 확인해야하는 번거로움이 있습니다. 이번 포스팅에서는 Jenkins 와 Slack 을 연동하여 알람을 받는 방법을 구축해보겠습니다. Slack 채널 생성 Jenkins 의 Build 상태를 알림받을 채널을 추가합니다. 글쓴이는 jenkins 라는 채널을 추가하였습니다. Jenkins CI App 설치 Slack 하단의 Apps -> Add apps 탭에서 Jenkins CI 를 검색하고 Add 를 클릭합니다. Add to Slack 을 클릭합니다. Jenkins 의 알림을 수신받을 채널을 선택합니다. Step3 으로 이동하여 Team Subdomain 와 Integration Token Credential I..
Publish over SSH 플러그인이 2022년 1월 12일 부로 젠킨스 보안 정책으로 인해 배포가 중단되었습니다. https://www.jenkins.io/security/advisory/2022-01-12/ Publish Over SSH plugin 을 사용하면 원격 서버에 SSH를 통한 배포를 할 수 있습니다. SSH란? SSH란 Secure Shell Protocol 의 약자로 네트워크 상의 다른 컴퓨터에 로그인 하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해주는 응용 프로그램 또는 그 프로토콜은 가리킵니다. 1. Publish Over SSH 설치 2022년 2월 현재 젠킨스 플러그인 관리를 통한 설치가 불가능 하기 때문에 직접 .hpi 확장자를 다운로드 ..
Jenkins와 Github 연동은 Github에서 제공하는 Github Webhook 을 이용하도록 하겠습니다. Github Webhook 이란? Github Webhook은 특정 이벤트가 발생했을 때 등록한 URL로 HTTP POST Payload를 보내 이슈 트래커를 업데이트하거나, CI Build를 트리거 할 수 있습니다. 또한 Github Webhook는 역방향 API라고 불리는데 일반적인 API는 요청을 하면 정보를 제공하지만, Github Webhook은 등록한 URL로 정보를 보내줍니다. 이번 포스팅에서는 Repository의 특정 Branch에 Push Event가 발생하면 Github Webhook을 통해 Jenkins Server에 빌드를 유발하도록 구축해보겠습니다. 1. GitHub..
기존 사내에서는 PuTTY 와 FileZilla 를 사용하여 수동 배포를 진행하고 있습니다. 요구사항의 변경과 충분한 테스트 검증이 되지 않은 기능이 반영되어 사이드 이펙트를 발생하는 일이 잦았고, 최근 테스트 서버까지 추가되면서 배포의 비용(시간)이 많이 소모되었습니다. 여러가지 CI 도구들이 있지만 무료 및 오픈소스이면서, 레퍼런스가 많은 Jenkins 를 채택하였습니다. 이 포스팅은 Jenkins 구축 환경에 Docker 가 설치되어 있다는 가정하에 작성되었습니다. 구축 환경 CentOS 7 Spring Boot Gradle Github Docker 로컬 환경에서 Jenkins를 구축하실 경우 로컬 네트워크 터널을 열기 위한 ngrok이 필요합니다 1. Jenkins 계정 생성 root 계정으로 접..
변하는 것과 변하지 않는 것을 분리 Template Method Pattern 은 이런 문제들을 해결하는 디자인 패턴입니다. 토비의 스프링에서는 템플릿 메소드 패턴을 다음과 같이 정의합니다. 상속을 통해 슈퍼 클래스의 기능을 확장할 때 사용하는 가장 대표적인 방법. 변하지 않는 기능은 슈퍼 클래스에 만들어두고 자주 변경되며 확장할 기능은 서브 클래스에서 만들도록 한다. 템플릿 메소드 패턴 예제 템플릿 메소드 패턴를 쉽게 이해하기 위하여 간단한 예제로 살펴보겠습니다. 민수와 수민이는 등교와 하교를 같이 하는 대학교 동기입니다. 민수는 알고리즘 수업을 듣고 수민이는 자료구조 수업을 듣습니다.민수와 수민이의 하루 학교 일과를 나누어 보겠습니다. 민수 등교 알고리즘 수업 하교 수민 등교 자료구조 수업 하교 템플..
개요 최근 몇 년 동안 패션업계에서 가장 핫이슈를 선정한다면 스니커즈 씬 일 것이다. 국내 한정판 스니커즈 리셀 플랫폼에 대기업까지 뛰어들어 사용자 점유율을 위해 일 년 넘게 사용자들에게 수수료를 받지 않고 무료로 제공하고 있다. 글쓴이는 고등학교 때 처음 사고 싶었던 신발 나이키 루나 글라이드 를 시작으로 지금까지 푹 빠져있다. 사이드 프로젝트 주제를 선정하면서 여러 가지를 구현해보고 싶었지만, 누구보다 내가 많은 경험과 정보가 있으며 도메인 지식이 뛰어나다고 생각하는 신발 을 주제로 선정하였다. 신발 하면 떠오르는 단어 바로 한정판 신발이다. 위에서 언급했듯이 리셀 플랫폼은 남녀노소 할 것 없이 누구나 쉽게 한정판 신발을 접할 수 있으며 간편하게 구매할 수 있다. 한정판 신발을 얻기 위해서는 응모에 ..