개요 로그는 매우 중요하다. 나는 감히 로그가 애플리케이션의 시작과 끝이라고 단언할 수 있다. 잘 설계된 로그는 빠른 장애 대응 뿐만 아니라 회사 매출과도 직결되는 유의미한 데이터로서도 활용될 수 있다. Spring Boot의 로깅은 기본적으로 SLF4J 인터페이스를 기반으로 하여 Logback을 구현체로 작동하도록 설계되어 있다. 이번 글에서는 여기에 더하여 Kotlin 환경에서 kotlin-logging을 이용하여 로깅 정책을 수립하고 로그 적재의 예를 설명하고자 한다. SLF4J 로그 레벨의 이해 로그 레벨을 명확히 이해하면 개발환경, 운영환경 단위로 어느 수준으로 로그를 남길지를 결정할 수 있다. 로그 레벨은 계층 구조로서 아래와 같다. (상위 계층은 하위 계층을 모두 포함하기 때문에 상위로 갈수..
개요 곰곰히 생각해보면 백엔드 개발에 쏟는 시간의 대부분은 원격지 데이터베이스에 대한 CRUD라고 할 수 있다. RDBMS의 경우 Spring Boot, Spring Data JPA, Querydsl 조합을 이용하면 직관적이고 높은 생산성으로 개발에 집중할 수 있다. (MySQL/MariaDB 연동 방법은 본 블로그의 이 글에 소개한 적이 있다.) 이번 글에서는 MongoDB에도 동일한 기술 스택을 적용하는 방법을 소개하고자 한다. MongoDB 로컬 인스턴스 실행 아래는 예제를 실행하기 위한 목적의 MongoDB 로컬 인스턴스를 실행하는 예이다. (자신이 선호하는 다른 방법으로 실행해도 무방하다.) # MongoDB 도커 컨테이너를 실행 $ docker run -d --name mongodb -p 27..
개요 Server-Sent Events(이하 SSE)는 HTTP 스트리밍을 통해 서버에서 클라이언트로 단방향의 Push Notification을 전송할 수 있는 HTML5 표준 기술이다. 이번 글에서는 Spring Boot에서 SSE를 이용한 단방향 스트리밍 통신 방법을 실제 운영 프로덕션 레벨 관점에서 설명하고자 한다. 특징 전통적인 웹 애플리케이션이라면 클라이언트의 요청 단건에 대해 서버가 응답하는 방식이지만 SSE를 이용하면 별도의 복잡한 기술이 필요없이 HTTP 프로토콜을 기반으로 서버에서 클라이언트로 Real-Time Push Notification을 전송할 수 있다. 클라이언트의 요청에 의해 한 번 연결이 맺어지면 서버가 원하는 시점에 클라이언트에게 원하는 메시지를 전송할 수 있다. 이러한 특..
개요 Metabase는 다양한 데이터 소스로부터, 데이터 가공 및 시각화 기능을 제공하는 오픈 소스 BI 솔루션이다. 데이터의 시각화가 워낙 경영과 직결되는 분야다 보니 비싼 유료 솔루션들이 많이 이용되는 편인데, Metabase는 커뮤니티 참여 형태의 적극적인 버전 업데이트를 통해 최근 들어 드디어 경쟁력을 갖추었다고 생각된다. 이번 글에서는 Metabase의 다양한 사용 예를 설명하고자 한다. Metabase 업데이트 이력 2021-02-17, v0.38.0부터 피봇 테이블과 대시보드 구독 기능이 추가되었다. 특히, 대시보드 구독 기능을 통해 특정 대시보드를 특정 이메일 주소에 정기적으로 발송할 수 있게 되었다. 또한 워터폴 챠트 기능이 추가되었다. 설치 Metabase가 제공하는 공식 도커 이미지를..
- Total
- Today
- Yesterday
- 로드 바이크
- spring
- Tomcat
- Spring Boot
- 구동계
- jpa
- Kendo UI
- JavaScript
- node.js
- bootstrap
- Kendo UI Web Grid
- MySQL
- java
- CentOS
- jstl
- 태그를 입력해 주세요.
- jsp
- Spring MVC 3
- 알뜰폰
- 평속
- chrome
- Eclipse
- maven
- 자전거
- DynamoDB
- 로드바이크
- Docker
- JHipster
- kotlin
- graylog
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |