일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Flux
- codebuild
- docker
- Airflow
- aws cicd
- 도커
- Jenkins
- codepipeline
- chart.js
- codedeploy
- kubeflow
- chartjs
- bootstrap
- IntelliJ
- Kafka
- or some instances in your deployment group are experiencing problems.
- aws
- Spring
- Python
- redis
- codedeploy error
- AWS CI/CD 구축하기
- SQL
- COALESCE
- Spring Error
- node
- VPN
- java bigdecimal
- PostgreSQL
- JavaScript
- Today
- Total
목록백엔드/Spring (133)
Small Asteroid Blog
Spring MVC와 WebFlux Spring MVC와 WebFlux는 모두 Spring 프레임워크의 웹 애플리케이션 개발을 위한 기술이지만,동작 방식이 다르며 각각의 장점과 활용 분야가 다릅니다. 이 블로그에서는 Spring MVC와 WebFlux의 특징을 정리하고,기존의 Spring MVC 기반 프로젝트에서 왜 WebFlux로 전환하게 되었는지에 대한 배경을 설명하고자 합니다. 1. Spring MVC📌 개념Spring MVC는 동기(Blocking) 기반의 요청-응답 처리 방식입니다. Servlet API와 멀티스레드(Thread-per-request) 모델을 사용하여 요청당 하나의 스레드를 할당하는 구조입니다.📌 특징Blocking 방식: 하나의 요청을 처리할 때 해당 스레드는 응답을 반환..
MongoTemplate과 Spring Data MongoDB Auditing Spring Data MongoDB는 @LastModifiedDate, @CreatedDate 등의 어노테이션을 통해 엔티티의 생성 및 수정 시간을 자동으로 기록할 수 있도록 Auditing 기능을 제공한다.하지만, mongoTemplate.updateFirst()와 같은 직접적인 업데이트 메서드를 사용할 경우, 이 기능이 자동으로 적용되지 않는다.이는 MongoTemplate이 @LastModifiedDate를 처리하는 AuditingEntityListener를 트리거하지 않기 때문이다.두개 동시 사용 관련된 내용 문제 발생: MongoTemplate에서 @LastModifiedDate가 자동으로 업데이트되지 않음일반적으..
Spring 에서 JPA Auditing 을 사용해 자동으로 값을 넣어주는 기능을 잘 사용하고 있었다.MongoDB 를 사용할 때도 Auditing 기능을 사용하고자 했는데 JPA 기반 Auditing 과 차이가 있었다. Auditing 기능은 엔티티가 생성되거나 수정될 때 자동으로 특정 필드를 채워주는 기능이다. (createdAt, createdBy) Auditing과 mongoTemplate의 독립성Auditing은 repository 기반 데이터를 조작할 때만 자동으로 동작합니다.하지만 mongoTemplate.updateFirst()는 쿼리 기반으로 작동하므로 @LastModifiedDate를 사용해도 자동으로 업데이트 되지 않는다.Auditing 필드(createdAt, createdBy)가..
MongoDB와 Redis는 기본적으로 분산 트랜잭션이나 관계형 데이터베이스에서 사용하는 트랜잭션을 완벽하게 지원하지 않는다.두개를 동시에 사용하면서 데이터 변경 작업을 진행할 때 트랜잭션을 구현하는 것은 어렵다. 하지만 몇 가지 방법으로 트랜잭션과 유사한 일관성을 유지할 수 있다. MongoDB의 트랜잭션 한계MongoDB는 기본적으로 단일 도큐먼트 수준의 원자성을 보장한다. 즉, 한 도큐먼트 내의 모든 쓰기 연산은 원자적으로 처리된다.MongoDB 4.0부터는 다중 도큐먼트를 대상으로 한 트랜잭션을 지원하지만, 다음과 같은 한계가 있다.Replica Set이나 Sharded Cluster 환경에서만 트랜잭션 사용 가능트랜잭션은 성능 저하를 야기할 수 있음기본적으로 트랜잭션은 60초 안에 완료되어야 ..
Spring Web MVC 와 WebFlux Reactive 환경에서 두 의존성을 같이 사용하면 문제가 발생한다. 동기/비동기 처리 방식 차이 MVC서블릿 기반 컨테이너 (Tomcat, Jetty 등) 사용 동기적 요청-응답 모델로 요청이 처리될 때까지 쓰레드가 블로킹됨WebFlux비동기 서버 사용 (Netty 등)Reactive Streams 사용요청-응답이 비동기적으로 처리되며 쓰레드 블로킹이 발생하지 않음 Spring Security 모듈 차이 MVC 와 WebFlux는 서로 다른 모듈을 제공한다. 두 모듈이 혼재하면 인증/인가 정보가 제대로 전달되지 않거나 null 로 처리될 가능성이 높다.MVC : spring-boot-starter-securityWebFlux : spring-securit..
WebFlux와 MVC 의 인증 인가 방식WebFlux 환경에서 API 호출 후, Security Context가 null로 설정되는 현상을 발견했다.이를 통해 Reactive 환경에서의 인증 및 인가 방식이 MVC와 다르다는 점을 알게 되었다. Reactive 환경에서의 인증과 인가Spring Security 의 Reactive 모듈을 사용할 경우, 기존 MVC 환경과 달리 Mono, Flux 기반의 비동기 방식으로 동작한다. WebFlux에서는 비동기적으로 Security Context를 관리하고 사용자의 인증 및 권한을 수행해야한다. Security Context 가 null 로 설정되는 이유 Reactive 환경에서는 요청 처리가 비동기적으로 진행되기 때문에, Security Contex..