전체 글

전체 글

    Interceptor와 Argument Resolver의 역할을 구분하자

    보호되어 있는 글입니다.

    NamedParameterJdbcTemplate을 써보자

    보호되어 있는 글입니다.

    생성자에서 같은 타입의 인자를 여러개 받을 때, Builder 패턴을 사용해보자

    https://joanne.tistory.com/90 [Effective Java] 아이템 2. 생성자에 매개변수가 많다면 빌더를 고려하라 아이템 2. 생성자에 매개변수가 많다면 빌더를 고려하라. 생성자에 매개변수가 많을 때, 사용하는 점층적 생성자 패턴의 객체가 완전히 생성되기 전까지는 일관성이 무너진 상태에 놓이게 되는 joanne.tistory.com 사실 위 글에서 알 수 있듯이, 이펙티브 자바에서 저 내용을 읽은 적이 있다. 하지만 전혀••• 기억하지 못하고 있었다. 하지만 이번에, 위와 같은 리뷰를 받게 되었다. 우선, Section 클래스는 다음과 같은 필드를 갖고 있다. public class Section { private Long id; private Station upStation; ..

    Jenkins 자동 배포 2편

    1편에서 다룬 내용을 모두 수행해야 2편의 작업이 수행 가능합니다. >> Jenkins 자동 배포 1편 바로가기 settings > Webhooks > Add webhook을 선택한 뒤, 입력창을 채워준다. Payload URL - http://{Jenkins EC2 public IP}:{연결 포트}/github-webhook/ ( ex. http://123.456.78.9:8080/github-webhook/) Content type - application/json 그리고, 이제는 깃허브 내 계정의 Settings에 들어간 뒤, Developer Settings의 Personal access tokens 탭에 접속한다. 여기서 generate new token을 선택한 뒤, 다음의 값들을 선택한다. ..

    Jenkins 자동 배포 1편

    도와주신 알리, 시드, 크로플 감사합니당 >ㅁ 플러그인 관리 > 설치 가능을 누른 뒤, Publish Over SSH와 Github Integration 을 설치한다. 설치가 모두 완료되면 다시 Jenkins 관리 > 시스템 설정에 들어가서 Cmd+F로 ssh server를 검색한다. 검색 결과 다음과 같은 화면이 나올텐데, 입력창을 모두 채워준다. 입력창에 대한 설명은 사진 아래에 적어두었다. Name - 본인이 원하는 이름 아무거나 Hostname - 서비스 인스턴스 private ip Username - ubuntu (이는 EC2에 접속할 때 ssh -i KEY ubuntu@{ip}에서 ubuntu이다. 명칭이 다르다면 그 명칭을 쓰면 된다.) Remote Directory - 젠킨스에서 빌드 후 ..

    List.. 너 도대체 뭐냐?

    java.lang.UnsupportedOperationException가 발생한다. public class Sections { private List sections = new ArrayList(); public Sections() { } public Sections(List sections) { this.sections = sections; } public void addSection(Section section) { sections.add(section); } } @BeforeEach void setUp() { //1. UnSupportOperation 발생 안함. List sectionInputs = new ArrayList(); sectionInputs.add(SECTION); sections =..

    원격으로 DB 연결을 요청할 때, bind-address의 의미

    Summary 🚀 통신 요청을 받는 NIC가 다르며, 소켓 생성시 각 아이피마다 서로 다른 소켓 파일이 생성된다. 따라서 mysql.cnf 파일에 작성한 bind-address에 알맞은 ip를 갖는 소켓 파일에서 오는 요청만 허용한다. 애플리케이션 서버와 디비 인스턴스를 분리하면서, 원격으로 DB에 커넥션 연결을 요청해야했다. 그렇게 하기 위해서는 DB 인스턴스에 mysql을 설치하고, mysql.cnf 파일에서 보안 그룹에 알맞은 port와 bind-address를 설정해주어야한다. 그와 관련된 글은 여기 에서 자세히 확인할 수 있다. 우선 DB 인스턴스를 분리하면서 가장 반감이 들었던 부분은 bind-address를 0.0.0.0으로 설정해줌으로서 네트워크 전체 대역에서 오는 요청을 허용해주어야만 커..

    EC2 인스턴스 2개로 서버 구축하기

    이번에 백엔드 서버를 구축하면서 Web Server - Web Application Server - DB 와 같은 구조로 구축하게 되었다. 우선, 처음에 페어인 제이온과 함께 배포를 진행할 때에는 한 인스턴스에서 모든 것을 구성해 진행했다. 즉, 한 서버에서 먼저 애플리케이션 서버를 배포한 뒤, nginx를 이용하여 Proxy를 관리하고, mysql 서버를 이용하여 내부 localhost로 db를 연결하였다. 하지만 이 모든 과정 중 디비와 서버 인스턴스를 분리하는 것이 맞다고 판단하였고, 분리하는 과정을 글로 남겨보려 한다. 따라서 이 글은 한 인스턴스에 Web Server(Https로 바인딩해주는 Reverse Proxy) Web Application Server Database가 배포되어있다는 가정..

    커스텀 예외(Custom Exception)를 효과적으로 사용하기

    블로그를 https://seovalue.github.io/ 로 이전 중이에요 🚌 해당 글은 https://seovalue.github.io/2022/02/21/custom-exception/ 에서 확인할 수 있어요.