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..
MySQL VS MongoDB NoSQL MySQL과 MongoDB는 각 RDBMS와 NoSQL 이다. NoSQL은 Not Only SQL 의미로 SQL 이외의 다른 데이터베이스를 얘기한다. 즉, NoSQL 이 곧 MongoDB라고는 할 수 없다. 그저 전통적으로 RDBMS가 주류로 있어왔기 때문에 SQL 과 NoSQL 이라고 나누는 것이다. 데이터를 구성하는 방법 관계형 데이터베이스와 도큐먼트 데이터베이스는 데이터를 구성하는 방법이 서로 다르다. 관계형 데이터베이스의 경우 속성을 정의한 열의 집합으로 테이블을 정의하고 이러한 테이블들을 모아 하나의 데이터베이스를 이룬다. ROW 를 구성한다. 도큐먼트 데이터베이스의 경우 BSON(Binary JSON) 형태의 도큐먼트를 모아둔 컬렉션이 있고 이 컬렉션들..
데이터베이스에서 발생한 서버 장애 - 1편 퇴근 시간이 다가오는 22년 10월 19일 (수) 예비군 훈련 전 날에 집에갈 준비를 하던 도중 아래와 같은 슬랙 메시지가 울렸다. 회사에 서버 개발자가 나 혼자뿐이라 내일 그 어떤 일이 생겨도 처리가 불가능했기에 빠른 시간 내에 그 원인 파악을 끝내고 해결 해야만 했다. 최근 그 어떤 변경도 하지 않았고 다른 날에 비해 트래픽이 몰렸던 것도 아니기 때문에 처음에는 사용자 네트워크 문제가 아닐까 생각했다. 하지만 실제로 앱에 데이터 응답에는 상당한 지연시간이 보였다. 스프링 로그 확인하기 Caused by: java.io.IOException: Broken pipe at sun.nio.ch.FileDispatcherImpl.write0(Native Method)..
인덱스 키의 빈번한 Update가 문제인 이유 인덱스 우리가 책을 읽을 때 목차가 없다면 원하는 부분을 찾기 위해 책의 앞 부분 부터 한 페이지씩 넘겨가며 내용을 찾아야 할 것이다. 이러한 상황을 막기 위해 책은 페이지와 매핑한 목차를 제공한다. 데이터 베이스에서도 탐색 성능 향상을 위해 책의 목차와 같은 인덱스를 제공한다. 즉, 인덱스는 데이터 베이스의 탐색 성능 향상을 위한 목차이다. 인덱스의 자료구조 이진 트리의 경우 그 균형이 맞다면 O(log_2 N) 의 효율성을 가진다. 하지만 균형이 맞지 않은 트리의 경우 링크드 리스트와 같아 선형 탐색을 하게 되고 최악의 경우 O(N) 의 효율성을 가지게 된다. 때문에 트리는 균형을 맞추기 위해 요소가 추가, 갱신, 삭제 될 때 마다 균형을 맞추기 위한 리..
- Total
- Today
- Yesterday
- Clean Architecture
- multimap
- Session
- 메모리 파편화
- 수직 분할
- 객체 풀
- SpringBoot 2.2
- 정적 타입 언어
- 육각형 아키텍처
- java
- Sticky Session
- 컴포짓 패턴
- 뾰족함
- 동적 디스패치
- 세션 불일치
- ATDD
- RestAssured
- Memory Fragmentation
- 수평 분할
- pass by reference
- OOP
- 내부 단편화
- 외부 단편화
- 클린 아키텍처
- 메모리 단편화
- pass by value
- pool
- 장애 해결기
- Object Pool
- 동적 타입 언어
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |