목록Backend (5)
Spring WebFlux는 비동기 및 논블로킹 웹 애플리케이션을 개발하는 데 유용한 프레임워크이다. WebFlux는 Reactive Programming을 기반으로 하며, Mono와 Flux를 사용하여 비동기적으로 데이터를 처리할 수 있다. 이번 글에서는 Spring WebFlux와 Spring MVC의 차이점, Mono와 Flux의 활용 방법에 대해 정리해본다.1. Spring MVC와 Spring WebFluxSpring MVC란?Spring MVC는 Model-View-Controller 패턴을 따르는 전통적인 동기식 웹 애플리케이션 프레임워크이다. 클라이언트의 요청이 들어오면, 요청을 처리하는 컨트롤러가 동기적으로 응답을 반환한다. 요청을 처리하는 동안 스레드가 차단되며, 한 번에 하나의 요청만..
DB Indexing 기초 개념1. 인덱스의 개념인덱스는 테이블의 특정 컬럼 값을 빠르게 찾을 수 있도록 돕는 자료구조다.전체 테이블을 순회하는 풀 테이블 스캔 대신, B-Tree나 해시 테이블 구조를 통해 원하는 행(row)에 효율적으로 접근할 수 있다.2. 인덱스의 특징조회 성능 향상WHERE, JOIN, ORDER BY, GROUP BY 등에 걸린 조건을 만족하는 레코드를 빠르게 찾는다.쓰기 비용 증가INSERT/UPDATE/DELETE 시 인덱스도 함께 갱신해야 하므로 쓰기 성능이 떨어질 수 있다.추가 디스크 공간 사용인덱스는 추가적인 저장 공간을 필요로 하므로, 과도하게 생성하면 디스크 자원을 낭비한다.통계 기반 최적화MySQL 옵티마이저는 테이블 및 인덱스 통계 정보를 활용해 최적의 실행 계획..

카프카? 그게 뭔데!카프카는 실시간으로 스트리밍 데이터를 처리하는데 최적화된 분산 데이터 스토어입니다.즉, 연속적으로 생성되는 수 많은 데이터(스트리밍 데이터) 를 효과적으로 처리하는데 특화되어 있습니다. 스트리밍 데이터? 그거 API로 계속 쏘면 되는거 아니야? 라고 생각할 수 있겠지만, 현실은 그렇지 않습니다.대규모 서비스에서는 매초마다 수천, 수만건의 이벤트가 발생하며, 이런 데이터를 안정적으로 처리하려면 이것을 위해 설계된 특별한 아키텍처가 필요합니다. 일반적인 API 통신으로는 아래와 같은 문제를 해결하기 어렵습니다.고가용성 - 서버가 다운된다면? 서버 다운을 모르고 쏜 데이터들은 유실될 것이고, DB에 들어가지 못한 데이터들은 손실될 것입니다. 처리 지연 - API 수신 서버의 처리 능력을 초..

커뮤니티 사이트를 만들던 중, 프론트 페이지 로딩 속도가 너무 느린 문제가 발생했습니다.홈 화면은 아래 처럼 이미지들이 많이 필요한데, 모든 이미지는 S3에 원본 사이즈 (1280p) png로 저장되어있습니다. AWS CloudFront를 적용하여 이미지 캐싱을 추가 하였지만, 여전히 속도 개선이 이루어지지 않았습니다. 프론트는 next를 사용하여 Next/Image를 사용하고 있고, Sharp를 통해 최적화를 하고 있습니다. 하지만, 원본 이미지가 너무 크기에, 한번에 많은 사진을 프론트 서버에서 리사이징 하기에 부담이 크고, 이로 인해 속도가 느리다는 판단을 하였습니다. 프론트 서버에서 리사이징에 대한 부담을 적게 하기 위해, 뒷단에서 미리 필요한 사이즈의 사진을 주려면 어떻게 해야 할까요? 원본 ..

회사에서 intellij Ultimate를 사용하고 있어 springboot 시작이 쉬웠지만, 집에서 사용하는 community 버전으로 설정하려고 하니 잘 되지 않아 글을 정리한다. intellij community 에서는 pulgin을 통해 springboot를 설정 할 수 없어 https://start.spring.io/ 를 통해 springboot 프로젝트를 만들어야 한다. 이런 식으로 원하는 설정을 넣은 후 generate를 하면 zip 파일로 프로젝트를 받을 수 있다. 원하는 위치에서 압축을 푼 뒤, intellij에서 open을 하면 Community 버전에서 springboot 프로젝트를 사용할 수 있다.