1. 가상 스레드의 도입 배경 [ 기존 자바 스레드 모델의 문제와 한계 ] 자바 개발자들은 약 30년 동안 서버 애플리케이션의 동시성 처리를 위해 스레드를 사용해왔다. 대표적으로 스프링 프레임워크는 멀티 스레드 모델을 사용하고 있으며, 1개의 요청을 1개의 스레드가 처리하는 thread-per-request 방식으로 동작하고 있다. 따라서 동시 요청이 많다면 스레드의 수 역시 증가해야만 이에 대응할 수 있다. 하지만 기존 JDK의 스레드는 운영 체제(OS) 스레드의 Wrapper이기 때문에, 사용 가능한 스레드의 수가 하드웨어 수준보다 훨씬 적게 제한되어 있었다. OS 스레드는 비용이 높아 요청량에 비례하여 늘릴 수 없기 때문이다. 가질 수 있는 스레드의 양은 제한적인데, 자바 스레드는 OS 스레드의 W..
자바 21이 2023년 9월 19일에 정식으로 출시되었습니다. 자바 17을 이을 차기 LTS 버전인 만큼 중요하기 때문에, 새롭게 추가되는 기능들에 대해 자세하 살펴보도록 하겠습니다. 1. Java 21의 등장 [ Java 21의 등장 ] 오라클의 Java Platform Group의 Chief 아키텍트인 Mark Reinhold가 JDK 17을 이을 차기 LTS(Long-Term Support) 버전인 JDK 21이 초기 배포 후보 단계(initial release candidate phase)에 도달했음을 발표했다. 예정된 일정에 따라 JDK 21은 2023년 9월 19일에 정식으로 출시되었다. JDK 21은 15개의 신규 기능으로 구성된 신규 기능으로 구성되며, 이들은 총 4개의 카테고리로 구분할 ..
2021년 10월, 로블록스(Roblox)에 완전 복구까지 3일 걸린 대규모 장애가 있었습니다. 관련 내용을 로블록스에서 정리하여 블로그에 올려주었는데, 이번에는 해당 내용을 살펴보도록 하겠습니다. 1. Introduction [ Roblox Return to Service 10/28-10/31 2021 ] 10월 28일부터 10월 31일에 완전히 해결되기 까지 Roblox는 73시간 서비스 중단을 경험했습니다. 매일 5천만 명의 플레이어가 Roblox를 정기적으로 이용하고 있으며, 플레이어가 원하는 경험을 제공하기 위해 수백 개의 내부 온라인 서비스가 존재합니다. 다른 대규모 서비스와 마찬가지로 가끔 서비스 중단이 발생하지만, 이번에는 특히 길었기 때문에 주목할 만합니다. 서비스 중단에 대해 커뮤니티 ..
2023년 3월, 데이터독(Datadog)에 완전 복구까지 2일 걸린 대규모 장애가 있었습니다. 데이터독에서 관련 내용을 정리하여 블로그에 올려주었는데, 이번에는 해당 내용을 살펴보도록 하겠습니다. 1. Impact, chronology, and response(영향, 연대순 정리, 대응) [ Incident and Impact(장애와 영향) ] 2023년 3월 8일 06:03(UTC)부터 US1, EU1, US3, US4 그리고 US5에 걸쳐 모든 데이터독 서비스 가동이 중단되었습니다. 장애가 시작되었을 때, 사용자는 브라우저나 API를 통해 데이터독 플랫폼이나 서비스에 접근할 수 없었으며, 모니터링도 불가능했고 알람 역시 오지 않았습니다. 데이터 수집을 위한 다양한 서비스들도 중단 초기에 영향을 받았..
이번에는 유지보수하기 좋은 멀티 모듈 구조를 설계하는 기준과 그에 따른 고려사항에 대해 알아보도록 하겠습니다. 아래의 내용은 절대적인 기준이 아니며, 상황에 따라 달라질 수 있음을 참고 부탁드립니다. 또한 해당 내용은 인프콘 2023에서 발표한 내용이니, 인프콘 영상을 통해서도 참고 하실 수 있습니다. 발표자료는 여기서 확인하실 수 있고, 예시로 설계된 구조는 깃허브에서 확인하실 수 있습니다. 1. 멀티 모듈 설계하기, 모듈을 나누는 기준 시스템에 독립적인 공통 코드 분리하기 서로 다른 수준(속도)의 공통 코드 분리하기 서로 다른 기능의 모듈 분리하기 서로 다른 액터의 모듈 분리하기 [ 시스템에 독립적인 공통 코드 분리하기 ] 가장 먼저 공통 코드를 분리시킬 수 있고, 공통 코드는 “시스템 종속성”을 기..