전체 글

· Other
서론주로 필자는 소형 프로젝트를 배포할 때, React 프로젝트를 빌드한 후, Spring 정적 자원으로 넣은 후 빌드하여 생성된 jar 파일을 배포한다. 하지만 이러한 방식은 프로젝트에 수정 사항이 생길 때마다 같은 작업을 해주어야 한다는 단점이 있다. 따라서 최근 필자는 주로 도커와 Github Actions를 사용한 자동화 배포 방식을 사용하는데, 이에 대해 소개해보고자 한다.도커(Docker)란?하나의 백엔드 프로젝트가 있다고 생각해 보자. 이 프로젝트는 Spring Boot와 mongoDB, Redis를 사용한다. 따라서 개발자는 이러한 환경을 모두 갖춘 상태에서 개발을 마친 후, 배포할 서버에도 똑같은 환경을 갖춘 후 배포하여야 한다. 하지만 가상화 컨테이너인 도커를 활용한다면, 단지 프로젝트..
· Java
기존 Proxy를 읊어보자.저번에 사용했던 Internet 관련 자바 코드를 한번 보자.public interface IInternet { void connectTo(String host);}public class Internet implements IInternet { void connectTo(String host) { System.out.println("Connecting to " + host); }}public class BlockedInternet implements IInternet { private final Internet internet = new Internet(); void connectTo(String host) { if (host..
· Java
Proxy란?지금 당장 구글에 "Proxy"라고 검색을 한다면, Proxy Server에 대해서 볼 수 있을 것이다.이건 프로그램에서의 Proxy가 아닌 통신에서의 Proxy인데, 사실 비슷한 구면이 있다.Proxy Server는 클라이언트와 서버 사이에 존재하여, 요청들을 가로채어 다시 보내주는 구조인데, 프로그램에서의 Proxy 또한 메서드의 요청을 가로채어 다시 리턴해주는 구조를 띄고 있다.Proxy는 어떨 때 쓸까?아래와 같이 인터넷을 구현하기 위한 인터페이스와 고체 클래스가 있다고 해보자.public interface IInternet { void connectTo(String host);}public class Internet implements IInternet { void con..
· Java
Virtual Thread 도입 이전기존 자바의 Thread는 OS와 1:1로 매핑되는 플랫폼 스레드를 사용한다.따라서 자바에서 Thread를 생성하고 사용하는 데는 아래와 같은 단점들이 존재한다.Thread의 개수가 제한적이다.Thread의 생성과 유지 비용이 매우 비싸다.Thread가 IO작업을 하는 동안 사용되는 동안 다른 작업을 할 수 없다, (Blocking이 일어난다.)위와 같은 단점을 조금이나마 해결해 보고자 스레드를 효율적으로 사용할 수 있는 Thread Pool을 만들어서 사용하곤 했다. 예를 들어, Spring Boot 같은 경우에 하나의 요청을 처리하기 위해 하나의 Thread를 만들어 관리하는데, 많은 요청이 들어오면 뒤에 응답은 앞에 요청이 모두 끝난 후에야 처리될 수 있다. (물..
Daehyeon
[Tech] Daehyeon