일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- redis
- JavaScript
- kubeflow
- codedeploy error
- or some instances in your deployment group are experiencing problems.
- aws
- codedeploy
- chartjs
- 도커
- Kafka
- bootstrap
- SQL
- Python
- Spring
- AWS CI/CD 구축하기
- docker
- codepipeline
- node
- IntelliJ
- Airflow
- Spring Error
- COALESCE
- java bigdecimal
- chart.js
- Jenkins
- codebuild
- VPN
- PostgreSQL
- aws cicd
- Today
- Total
목록전체 글 (632)
Small Asteroid Blog
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..
Reactive MongoDB 를 사용할 때 Flux, Mono 는 데이터를 처리하는 중요한 두가지 방식이다. buffer 와 next 를 사용한 스트리밍 방식Flux dataStream = mongoTemplate.aggregate(aggregation, "result_data", ResultResponse.class);return dataStream .buffer(pageSize) // 요청한 사이즈만큼 버퍼링 .next() // 첫 번째 페이지만 가져오기 .defaultIfEmpty(Collections.emptyList()) // 데이터가 없을 경우 빈 리스트 반환 .map(res -> { String ne..
ReactiveMongoTemplate과 ReactiveMongoRepository는 반응형 MongoDB 작업을 수행하는 두 가지 주요 방식이다. ReactiveMongoRepository를 사용해야 하는 경우ReactiveMongoRepository는 주로 기본적인 CRUD 작업을 간편하게 처리할 때 유용하다.단순한 조회, 저장, 삭제 등의 작업이 자주 필요할 때는 repository가 더 직관적이고, 필요한 메서드들이 미리 정의되어 있어 코드가 간결해진다. 단순한 CRUD 작업: 기본적인 조회(findById, findAll), 저장(save), 삭제(deleteById) 등의 작업메서드 이름을 통한 쿼리 정의: findByName, findByStatus 등 메서드 이름만으로 간단한 조건 기반 조..
Spring에서 몽고디비를 사용할 때스트리밍 조회(Stream Processing)와 MongoDB Aggregation 중어떤 방법이 더 좋은지 데이터의 특성과 사용 목적을 고려해야 한다. 스트리밍 조회 (Stream Processing)장점메모리 효율성: 전체 데이터를 한 번에 메모리에 로드하지 않고, 하나씩 처리하기 때문에 메모리 부담이 적다.단순한 로직: 데이터 하나하나를 순차적으로 처리하는 데 적합하여, 복잡한 집계나 가공 작업을 서버 측 코드에서 쉽게 처리할 수 있다.단점네트워크 부담: 모든 데이터를 서버로 전송해야 하므로 네트워크 트래픽이 높아질 수 있다.속도 저하 가능성: MongoDB 내에서 바로 처리하지 않고, 애플리케이션 서버에서 작업을 수행해야 하므로 처리 속도가 느려질 수 있다...