Tomcat 톰캣은 대표적인 서블릿 컨테이너이며 Spring Boot (MVC) 에 기본 내장된 Embede WAS이다. 전통적인 서블릿 컨테이너는 Thread Per Request 해서 요청당 하나의 스레드를 할당하여 생성부터 소멸까지 관리한다. 이 서블릿 스레드는 풀에 의해 관리되고 해당 스레드의 작업이 끝날 때 까지 다른 요청을 받을 수 없는 Blocking I/O 다. 해당 문제 해결을 위해 Servlet 3.0 에서 NIO Connector 가 등장하였다. Servlet 3.0 은 자바 6 이상에서 사용이 가능한데 자바 4에서 추가된 Java NIO에 Selector 를 활용한 Reactor Pattern 을 통해 요청 스레드와 응답 스레드의 분리가 가능하게 되었다. 하지만 Worker Thre..
자바 NIO 등장이유 자바가 느리다는 얘기를 듣던 이유는 IO 때문이다. 이러한 문제사항을 해결하기 위해 NIO(New Input Output) 이 등장하였다. 자바 IO가 느린 이유 애플리케이션의 IO 과정에는 유저 영역과 커널 영역이 있다. 유저 영역은 H/W 에 직접 접근하는 것이 불가는 하고 커널 영역에 시스템 콜을 보내 드라이버 등을 통해 접근 가능하다. 커널 영역을 거치게 되면서 불필요한 버퍼와 복사 과정이 추가된다. 자바 I/O의 비효율 커널 영역을 거쳐 I/O를 진행하기 때문에 쓸 때없는 과정(버퍼 복사)이 추가된다. 예시로 비디오 카드(모니터) -> 커널 영역의 버퍼 로 데이터를 이동하는 것은 DMA(Direct Memory Access) 기술을 통해 CPU 자원이 필요없다. 하지만 커..
성능 테스트 도구 비교 Gatling 스칼라를 통해 테스트 스크립트를 생성하는 부하 테스트 도구 비동기식 아키텍처로 가상 사용자를 스레드가 아닌 메시지로 생성해 수천 명의 동시 사용자 재현가능한 성능 좋은 테스트 도구 분산 테스트 지원하지 않아 다 수의 컴퓨터를 통해 테스트 할 수 없음.. JMeter GUI를 제공해 쉽게 사용해 볼 수 있다. 한 명의 가상 사용자를 하나의 스레드로 생성하여 동시성제한 있음. 분산 테스트를 지원한다. 즉, 여러대의 컴퓨터를 통해 테스트하고 그 테스트 결과를 종합할 수 있다. nGrinder Jython, Groovy 스크립트를 활용해 테스트 시나리오 작성가능 한 명의 가상 사용자를 하나의 스레드로 생성하여 동시성제한 있음. 분산 테스트를 지원한다. 즉, 여러대의 컴퓨터를..
자바 IO 자바 애플리케이션의 입•출력 작업을 의미한다. java.io 패키지의 클래스를 사용하여 작업할 수 있다. java.io 패키지는 크게 바이트 스트림 클래스와 문자 스트림 클래스 로 나뉜다. 네이밍에 따른 특성 Stream 으로 끝나는 클래스 바이트 단위 IO Reader 로 끝나는 클래스 문자 단위 Input 클래스 Writer 로 끝나는 클래스 문자 단위로 출력하는 클래스 File 로 시작하는 경우 파일을 입출력 하는 클래스 ByteArray 로 시작 바이트 배열을 읽거나 출력하는 클래스 CharArray로 시작 문자 배열을 읽거나 출력하는 클래스 Filter로 시작 상속을 통해 구현해 필터링 목적으로 커스텀해 사용 Data로 시작 다양한 데이터 형식을 입출력 하는데 사용. 특히 기본형(pr..
- Total
- Today
- Yesterday
- java
- Memory Fragmentation
- 클린 아키텍처
- 뾰족함
- 메모리 단편화
- 수직 분할
- 메모리 파편화
- 내부 단편화
- OOP
- Object Pool
- 세션 불일치
- 수평 분할
- 동적 타입 언어
- 객체 풀
- 동적 디스패치
- 육각형 아키텍처
- RestAssured
- Clean Architecture
- pool
- 외부 단편화
- SpringBoot 2.2
- 컴포짓 패턴
- pass by reference
- pass by value
- Session
- 정적 타입 언어
- Sticky Session
- ATDD
- multimap
- 장애 해결기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |