![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUp0ic%2FbtrYy9x4dQw%2F7EXHbdGkP8VbnQZmdi1gak%2Fimg.png)
WebFlux 적용하기 (1) Java I/O 와 NIO(New I/O, Non-Blocking I/O)
2023. 2. 14. 19:10
Spring Boot/WebFlux
내 프로젝트를 WebFlux 로 Async-Non Blocking 하게 만들어보자! WebFlux 는 Reactive Programming 을 지원하는 프레임워크로, 디폴트로 Netty 라는 NIO 클라이언트 서버 프레임워크를 사용합니다. Webflux 적용하기 첫 번째 포스팅으로 Java I/O 와 NIO 를 알아보도록 하겠습니다. 느린 Java 의 I/O 자바에 New I/O 가 추가 된 이유는 무엇일까요? 그 이유는 기존 I/O 의 속도가 느리기 때문입니다. Java 의 I/O 가 어떤 이유로 느린지, 그리고 NIO 는 어떤 점을 개선했는지 알아봅시다. Java I/O 의 동작 원리(파일 읽기) 프로세스는 커널에 read() 시스템 콜을 통해 버퍼를 채우도록 요청합니다. read() 가 호출되면 커..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdeGDug%2FbtrXBN3cwsI%2F4ibLjyKCKrsHG00jDtiLk0%2Fimg.png)
[Spring Boot] Tomcat 알아보기 (3) Tomcat Thread Pool
2023. 1. 30. 16:09
Spring Boot
스프링은 어떻게 동시에 수많은 요청을 처리할까요? 지난 포스팅에서는 Servlet Container 와 Java Thread Pool 에 대해 알아보았습니다. 더보기 [Spring Boot] Tomcat 알아보기 (1) Servlet 과 Servlet Container [Spring Boot] Tomcat 알아보기 (2) Java Thread Pool 이번 포스팅에서는 동시 요청을 처리하는 Tomcat 의 Thread Pool 에 대해 알아보겠습니다. Tomcat 의 Thread Pool 지난 포스팅에서 알아본 것처럼, Spring 에서 클라이언트의 요청은 Tomcat 과 같은 Servlet Container 가 처리합니다. Tomcat 의 Thread Pool 의 구조는 Java Thread Pool ..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlxU9E%2FbtrWLUPlo9A%2F2YKFc3DwvDEcq2gS6oG0Nk%2Fimg.jpg)
[Spring Boot] Tomcat 알아보기 (2) Java Thread Pool
2023. 1. 19. 22:47
Spring Boot
스프링은 어떻게 동시에 수많은 요청을 처리할까요? 지난 포스팅에서는 동시 요청 처리에 대해 알아보기 전에 Tomcat 의 Servlet Container 역할을 살펴보았습니다. 더보기 [Spring Boot] Tomcat 알아보기 - (1) Servlet 과 Servlet Container 이번 포스팅에서는 Thread Pool 의 개념과 Tomcat 에서 유사하게 사용되는 Java 의 Thread Pool 클래스에 대해 알아보도록 하겠습니다. Tomcat 알아보기 두 번째 포스팅 Java Thread Pool 입니다. Thread Pool Java 에서 유저 수준 스레드는 커널 수준 스레드에 매핑됩니다. (참고) [Java] JVM 알아보기 - (6) Thread, Java Thread Model 그렇..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFxuN9%2FbtrWghsLgLr%2FHefOXYLC9QRISbmQ3PdI9k%2Fimg.png)
[Spring Boot] Tomcat 알아보기 (1) Servlet 과 Servlet Container
2023. 1. 17. 13:46
Spring Boot
스프링 부트는 어떻게 동시에 수많은 요청을 처리할까요? Tomcat 알아보기 첫 번째 포스팅으로 Servlet 과 Servlet Container 에 대해 알아보겠습니다. Servlet 자바 docs 에서 정의하는 서블릿은 다음과 같습니다. A servlet is a small Java program that runs within a Web server. Servlets receive and respond to requests from Web clients, usually across HTTP, the HyperText Transfer Protocol. 서블릿은 웹 서버 내에서 실행되는 작은 자바 프로그램입니다. 서블릿은 일반적으로 HTTP 를 통해 웹 클라이언트의 요청을 수신하고 응답합니다. 우리는 웹..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9FaUJ%2FbtrUavkZBFF%2Feur8vEaMzaz9Y7gDFua3d1%2Fimg.png)
[Spring Boot] DTO 는 왜, 언제 사용할까?
2023. 1. 3. 23:19
Spring Boot
오늘은 Spring Boot 프로젝트를 시작할 때마다 고민의 대상이 되는 DTO 에 대해 알아보도록 하겠습니다. 매번 DTO 의 필요성에 대해 깊이 고민하지 않고 사용해서 그 기준을 잡기가 어려웠는데요. 이번 포스팅을 통해 DTO 의 책임과 역할을 이해하고 저만의 사용 가이드라인을 만들어보도록 하겠습니다. DTO (Data Transfer Object) 우선, DTO 의 정의를 간략하게 알아보겠습니다. DTO는 프로세스 간에 데이터를 전달하는 용도의 객체입니다. 비즈니스 로직을 포함하지 않는 데이터를 전달하기 위한 단순한 객체 를 뜻합니다. MVC 패턴에서는 주로 Client 와 Controller 사이에서 DTO 가 사용됩니다. 저는 보통 Controller 에서는 DTO 로 데이터를 전달받고, 애플리..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGM8hY%2FbtrTLaBAqkG%2FnL8faErH2ULm4txA4yL9k0%2Fimg.png)
[Spring Boot] Maven Multi Module
2022. 12. 16. 01:41
Spring Boot
안녕하세요. 이번 포스팅에서는 메이븐으로 멀티 모듈 프로젝트를 구성하는 방법에 대해 알아보겠습니다. 먼저 Maven과 Multi Module이 무엇인지 알아보고, 그 후에 인텔리제이 IDE 를 사용하여 프로젝트를 구성해보겠습니다. Apache Maven 우리는 소스 코드를 작성하고 코드를 실행하기 위해 JAR 나 WAR 등의 파일을 만든다. 이처럼 소스 코드 파일 및 리소스를 컴퓨터에서 실행 가능한 산출물(Artifact)로 만드는 일련의 과정을 Build 라고 한다. 빌드는 전처리, 컴파일, 패키징, 테스팅, 배포 등의 여러 과정으로 이루어지지만 개발자들은 Maven 과 같은 Build Tool 을 사용하여 한 번의 클릭으로 실행 파일을 얻을 수 있다. Project Object Model (POM) ..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FchyW53%2FbtrLh8FEheT%2FsUjUQN12nRKZgoYf9uVFd0%2Fimg.jpg)
[Spring Boot] AWS S3 이미지파일 업로드하기
2022. 9. 3. 21:22
Spring Boot
Amazon S3 ? Simple Storage Service 의 약자 이미지, 파일 등의 정적 리소스를 REST 인터페이스를 통해 저장/삭제/조회할 수 있다. Object 객체, 저장되는 대상을 의미한다. 실제 파일과 메타 데이터로 구성 Bucket Object 가 저장되는 곳, 최상위 디렉토리 Region Object 가 저장되는 물리적 위치 IAM 정책 생성하기 Identity and Access Management 의 약자 AWS 리소스에 접근하도록 권한이 부여 된 대상을 관리하는 서비스 액세스 유형 액세스 키, Programmatic access 사용자가 AWS API, SDK 등의 개발 도구에 대해 접근이 필요한 경우, 각 사용자에 대한 액세스 키가 생성된다. 암호, AWS Management..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcfmuP5%2FbtrIY0RnjMg%2FMyP0dXtQkrPuKOMdnZozmK%2Ftfile.heic)
[Spring Boot] Mockito 로 테스트 하기
2022. 8. 6. 00:14
Spring Boot
Mockito 란? 자바 기반의 mocking 프레임워크 mock object를 creation, verification, stubbing 한다. mocking 은 조롱이라는 의미인데, mockito 를 사용하면 디비 연결 등의 실제 서비스 환경과 관계 없이 독립적으로 클래스의 기능을 테스트할 수 있다. 실제 서비스를 조롱하듯이 개발자가 마음대로 객체를 관리하는 테스트 방법을 뜻한다. 튜토리얼 사이트에서 가져 온 아래 예제를 보자. 여러 주식의 값을 개발자의 임의대로 셋팅하여 StockService 를 단위 테스트할 수 있다. import static org.mockito.Mockito.*; public class PortfolioTester { public static void main(String[]..