개요 Google Drive는 구글의 클라우드 파일 저장소 상품이며, Google Sheets는 클라우드 스프레드시트 상품이다. 이번 글에서는 Google Drive/Google Sheets의 특정 계정에 업로드된 파일/시트를 UI 없이 완전히 프로그램으로 다운로드/제어할 수 있는 방법을 소개하고자 한다. 구현 시나리오 개발자는 구글이 제공하는 웹 콘솔에서 서비스 계정(Service Account)를 생성한다. 생성 후 .json 파일을 다운로드하여 프로젝트에 사용하기 위해 추가한다. 사용자는 자신의 구글 드라이브에서 애플리케이션에 공유할 파일에 위 개발자가 생성한 서비스 계정을 공유 계정을 추가한다. (공유할 계정 이름은 앞서 다운로드한 .json 파일의 client_email 값이다.) 개발자는 Go..
개요 백엔드에서의 통신 방법은 요청에 대해 즉시 응답하는 동기식 통신이 일반적이지만, 비동기 통신 또한 백엔드 아키텍쳐에서 중요하다고 말할 수 있다. 갑작스럽게 요청이 집중되는 명절 기차표 예매, 대학교 수강신청 등이 비동기 통신이 요구되는 대표적인 사용 사례라고 볼 수 있다. (이를 동기식으로 처리하면 백엔드와 데이터베이스에 엄청난 부하가 발생한다.)RabbitMQ는 AMQP(플랫폼 독립적인 비동기 메시징을 다룬 프로토콜)을 준수하여 제작된 메시지 브로커이다. 설치가 쉽고, 기능이 직관적인데다 성능이 뛰어나기 때문에 현재 비동기 메시징에 있어서는 광범위하게 사용되고 있다. 이번 글에서는 Spring Boot에서 RabbitMQ 사용 방법을 소개하고자 한다. AMQP 통신 원리 AMQP에서는 브로커의 양..
개요 로그는 매우 중요하다. 나는 감히 로그가 애플리케이션의 시작과 끝이라고 단언할 수 있다. 잘 설계된 로그는 빠른 장애 대응 뿐만 아니라 회사 매출과도 직결되는 유의미한 데이터로서도 활용될 수 있다. 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..
- Total
- Today
- Yesterday
- spring
- 자전거
- jsp
- 태그를 입력해 주세요.
- chrome
- java
- MySQL
- bootstrap
- CentOS
- JHipster
- 로드바이크
- Kendo UI Web Grid
- 평속
- Spring Boot
- Spring MVC 3
- Eclipse
- Kendo UI
- kotlin
- graylog
- 구동계
- Docker
- jpa
- 로드 바이크
- jstl
- node.js
- DynamoDB
- maven
- Tomcat
- JavaScript
- 알뜰폰
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |