이번 글에서는 R2DBC, Spring data r2dbc를 사용해 코드를 작성해보자. 학습 기록용. 피드백은 언제나 환영입니다. 사용한 모든 예제코드는 github을 참고해주세요. 이전 글 R2DBC를 사용해보자 (1) - 왜 사용할까? 이번 글에서 R2DBC란 무엇이고, 왜 사용하고, 어떻게 사용했는지 경험에 대해 이야기해보고자 한다. 잘못된 내용이 있으면 피드백은 언제든지 환영입니다 :) R2DBC는 언제 사용할까? Reactive Programming binux.tistory.com 예제 환경은 다음과 같다. Java: JDK 17 Build tool: Gradle Database: MySQL Dependency 사용하기 위해서는 의존성을 먼저 추가해주어야 한다. 데이터베이스에 맞는 R2DBC d..
이번 글에서 R2DBC란 무엇이고, 왜 사용하고, 어떻게 사용했는지 경험에 대해 이야기해보고자 한다. 학습 기록용. 피드백은 언제나 환영입니다. 시리즈 R2DBC를 사용해보자 (2) - CRUD를 만들어보자 이번 글에서는 R2DBC, Spring data r2dbc를 사용해 코드를 작성해보자. 학습 기록용. 피드백은 언제나 환영입니다. 사용한 모든 예제코드는 github을 참고해주세요. 이전 글 R2DBC를 사용해보자 (1) - 왜 사 binux.tistory.com R2DBC를 사용해보자 (3) - Join (Many-To-One, One-To-One, One-To-Many) 이번 글에서 R2DBC, Spring data r2dbc를 사용해 Join을 다뤄보자. 학습 기록용. 피드백은 언제나 환영입니다..
최근 재미로 Kotlin을 사용해보고 있는데, 한 가지 불편한게 있었다. Java를 사용할 땐 아래의 사진의 빨간 부분처럼 IntelliJ가 hint를 주고 있었는데, Kotlin을 사용하니 이 정보를 주지 않았던 것. 있을 땐, 이게 도움이 되는지 몰랐는데, 없으니 괜히 사소하게 불편했다. 그래서 이 참에 찾아봤는데, 이 기능은 `Inlay hints`라고 한다. Code reference information | IntelliJ IDEA www.jetbrains.com 이를 Kotlin에서 활성화시켰더니, 잘 보인다. 흐흐. 진작 사용할 걸.
Tomcat 같이 Thread pool을 만들어두고 사용하는 경우, ThreadLocal 사용 시 주의해야하는 점이 있습니다. 바로 Thread 반환 시, ThreadLocal을 remove 해주어야 한다는 점입니다. 왜 Thread pool을 사용할까요? Thread pool을 사용하는 경우는 이유가 명확한데요. Thread를 작업 도중 생성하는 것이 시간이 오래 걸리는 비싼 행동이기 때문입니다. 그러므로 특정한 개수(Tomcat의 경우 200개)만큼의 Thread를 미리 만들어두고, 요청이 들어올 때마다 만들어둔 Thread를 이용하도록 합니다. 작업이 끝나면 다시 Thread를 반환하고, 추후 다른 요청을 처리할 때 다시 이용하게 됩니다. 왜 이러한 Thread pool 구조에서 ThreadLoca..
OpenTelemetry OpenTelemetry (축약해서 OTel)은 trace, metric, log와 같은 telemetry 데이터를 instrumenting, generating, collecting, exporting 하기 위한 특정 벤더에 종립되지 않은 오픈소스(vendor-neutral open-source) Observability framework입니다. OpenTelemetry가 왜 필요할까? 분산된 시스템이 커지고, 확장됨에 따라 개발자 입장에서 자신의 서비스가 어떤 서비스에 의존적이고 의존되고 있는지 파악하기 어려워졌고, 결론적으로 어떠한 영향을 받는지/주는지 보기 어려워졌습니다. 특히, 서비스 배포 또는 중단하는 경우에 말이죠. 이러한 문제를 해결하기 위해 어떻게 해야할까요? 일..
Observability란 무엇일까요? Observability란 내부 동작 상황을 알 수 없는 시스템에 대하여 이해할 수 있도록 돕는 것, 정보를 의미합니다. 즉, 어떠한 문제가 발생하였을 때 Observability를 통해서 왜 이런 일이 발생했는지 유추해볼 수 있습니다. 너무 설명이 추상적인가요? 그럼, Observability 개념을 제외하고 생각해봅시다. 애플리케이션에서 어떠한 문제가 발생하였을 때, 어떻게 원인을 찾을 수 있을까요? 쉽게 생각한다면 "시스템 Log를 보죠!"라고 답할 수 있습니다. 맞아요. Log 도 Observability 범주에 속합니다. 더 넓게 trace, metrics, log, span 등과 같은 정보들. 즉, 애플리케이션의 상태를 계측할 수 있는 정보들을 의미합니다..
이전에 인증과 인가에 대한 글을 작성한 적이 있다. 근데 이와 관련해 TMI이면서 추가적인 내용을 작성해놓고 싶어 이 글을 적는다. 이전 인증/인가 글을 적으면서 인증(Authentication)과 인가(Authorization)에 대한 개념은 정립했었다. 근데 여러 공식문서를 읽다보니 Authentication, Authorization 대신 AuthN, AuthZ가 많이 사용되고 있었다. 처음엔 이게 뭐지... 했는데 사실 별거 아니였다. 단어가 그냥 길어서 축약해서 사용하는건데, 아래처럼 이해하면 된다. Authe n tication - AuthN Authori z ation - AuthZ 인증/인가 API를 구현하면서 인증/인가에 실패했을 경우, Http status를 어떻게 반환할까 고민을 했던..
들어가기 전에 이 글은 use-the-index-luke 사이트의 no-offset 글을 번역한 글입니다. 원 글이 좀 딱딱한 것 같아서 이해하기 쉽게 번역해보았습니다. 참고부탁드립니다. 왜 offset을 사용하면 안돼? SQL로 Pagination을 구현하기 위해 구글을 찾다보면 아래와 같은 결과를 자주 볼 수 있다. SELECT * FROM table WHERE {condition} LIMIT {contents 개수} OFFSET {page number} offset은 데이터베이스에서 쿼리의 처음 N개 결과를 건너뛰도록 설정한다. 하지만 데이터베이스는 N개 결과 이후의 row만 받아오는 것이 아니라 모든 row를 디스크로부터 읽어오고, N개의 결과까지 순서대로 진행하며 넘기게 되는 식으로 진행된다. ..
- Total
- Today
- Yesterday
- Log
- Spring
- Kubernetes
- python
- 로그
- Intellij
- Spring boot
- WebFlux
- 알고리즘
- 비동기
- 일상
- Clean Architecture
- 백준
- k8s
- docker
- Algorithm
- c++
- jasync
- java
- Istio
- 하루
- hexagonal architecture
- tag
- HTTP
- gradle
- 쿠버네티스
- container
- MySQL
- 클린 아키텍처
- boj
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |