반응형

2022/01 4

Docker Compose 를 이용해 Spring Boot + MySQL 서비스 구축 (기초)

이 글은 개인적으로 공부를 목적으로 여러 블로그, 문서를 참조하며 작성하여 부정확하거나 내용이 부실할 수 있는점 양해드리며 잘못된 부분이 있다면 댓글로 알려주시면 감사하겠습니다 :) 간단한 웹 서비스를 구축한다고 가정한다.간단하면서 일반적으로, 백엔드 애플리케이션 + DB와 프론트에 Nginx를 두는 구조를 많이 사용한다.docker 환경에서는 백엔드 애플리케이션, DB, Nginx를 각각 설정하고 컨테이너화 하여 관리할 수 있다.다만 서버 장비가 증설된다면 각 컨테이너 설정을 다시 해주어야하는 번거로움이 존재한다.Docker Compose는 한 서비스를 위한 여러 컨테이너를 관리를 하나의 파일에서 할 수 있고 여러 컨테이너들을 동시에 실행시킬 수 있다. 이를 통해 위와 같이 매번 컨테이너를 설정해야하..

Spring Boot 애플리케이션 Docker 컨테이너로 배포 (기초)

명령어 간략 정리docker images # 이미지 목록 조회docker ps # 실행중인 컨테이너 목록 조회 (-a 옵션 시 종료된 컨테이너 목록도 보여줌)docker kill CONTAINER_ID # 컨테이너 종료 도커 이미지 빌드 명령어docker build --tag [repo:tag] [Dockerfile path]e.g.docker build --tag myservice:0.1 컨테이너 실행 관련 명령어docker run IMAGE_ID # 이미지ID 기반 새 컨테이너 생성하여 실행docker run repo:tag # 레파지토리&태그에 해당하는 이미지 기반 새 컨테이너 생성하여 실행docker start CONTAINER_..

Java / Servlet 비동기 기술 흐름 with Spring

1. Servlet 3.0 이전기존 알고 있었던과 같이 1 Request per 1 Thread 할당 방식이다.오래걸리는 무거운 작업은 @Async 를 활용해 비동기로 처리할 수 있었지만 이는 말 그대로 해당 스레드 내부에서 유효할 뿐 해당 작업이 끝나기 까지 그 스레드가 반환되지 못하는건 매한가지였다.톰캣의 NIO 지원은 HTTP Connection 관련 부분을 비동기로 처리하는 것 뿐 서블릿 동작과는 별개의 문제이 방식의 문제점은 짧게 끝나는 작업이 오래 걸리는 작업이 스레드를 오래 점유하여 덩달아 오래걸리게 되는 문제가 있었다.2. Servlet 3.0Servlet 3.0 부터는 이런 문제점을 어느정도 해결하여 오래 걸리는 작업을 별로 스레드에 할당하여 처리하고,해당 스레드는 빨리 반환하여 다른 요..

Java CompletableFuture 개념 및 간단한 활용 사례

Future 는 비동기 작업 수행의 결과를 담고있는 자바의 인터페이스이다.ListenableFuture 는 Spring 에서 제공하는 인터페이스로 Future에 콜백을 등록해 사용할 수 있도록 한 방식이다.자바 8 때 소개된 CompletableFuture 는 여러 비동기 작업을 결합하고 처리하는데 기존 방식에 비해 훨씬 편하게 수행할 수 있다.아래는 간단히 반환값이 없는 2개 비동기 작업을 수행하는 예시이다.CompletableFuture .runAsync(() -> log.info("runAsync")) .thenRun(() -> log.info("thenRun"));반환값이 있는 비동기 작업은 아래와 같이 할 수 있다.CompletableFuture .supplyAsync(() -> 1) // 비..