목록분류 전체보기 (106)
훈훈훈
이번에는 Spring boot에서 Event Listener를 사용하는 것에 대하여 정리해보려고 한다. Event Listener를 사용하게된 계기는 Spring boot Application 시작 및 종료 시 특정 이벤트를 수행시키기 위해서 여러 방법을 찾던 중 가장 나은 방법으로 판단하게 되어 사용하게 되었다. 비슷한 기능으로는 @PostConstruct와 @PreDestory가 있지만 해당 기능은 Bean이 생성 시점에 실행되기 때문에 이벤트가 실행되는 시점은 내가 원하는 시점과 약간 차이가 발생한다. 따라서 해당 기능은 사용하지 않고 Event Listener를 사용하였다. 예제 코드 @Component class StartTest { private val logger = LoggerFactory..
이번에는 쿠버네티스를 사용해서 웹 서버를 구축하려고 한다. 사실 AWS와 같은 클라우드 벤더사를 사용할 경우 로컬 내에서 웹 서버랑 데이터 베이스 서버를 동시에 실행 시킬 일은 없지만, 쿠버네티스에 대한 개념도 잡을 겸 해보았다. 예제로 사용한 웹 서버는 이전 글에서 Spring boot와 코틀린으로 작성한 코드를 사용하였다. 사용한 기술은 아래와 같다. - Spring boot - Postgresql - Docker - Kubernetes - Helm 구성도는 아래와 같다. 웹 서버(Spring boot)와 DB서버(Postgresql) 컨테이너를 각각 파드로 나누었다. 그 다음 서비스도 서로 다른 포트로 통신하기 때문에 서로 다른 서비스로 나누었다. Service까지 설정이 되면 이제 파드에 접근할 ..
이번에는 Spring boot, JPA와 코틀린(Kotlin)을 사용하여 간단한 API를 만들어 보려고 한다. 현재 사내에서 API 서버를 스프링 부트와 코틀린을 사용하여 개발하고 있다. 구글 검색 시 자바에 비해 코틀린에 관한 내용은 많이 부족하다. ....그래서 시간 날떄 틈틈히 정리를 해보려고 한다. 사용한 기술은 아래와 같다. - Spring Boot - Kotlin - gradle - postgresql - JPA IDE는 IntelliJ를 사용하였으며, 이클립스 환경이랑은 약간 차이가 날 수 있다. 이제 아래 코드를 보면서 살펴보자. 프로젝트 구조 먼저 프로젝트 구조는 아래와 같이 구성하였다. 파일 구성은 Controller, Service, DTO, Model, Repository 로 구성하..
이번에는 스프링 부트를 코틀린을 사용하여 간단하게 CRUD API를 만들어보려고 한다. 해당 예제는 코틀린 마이크로서비스 개발이란 책을 보고 작성하였다. 만들고자 하는 API는 유저 관리(CRUD) 기능을 가지고 있으며, 별도로 인증인가 적용은 하지 않았다. 마찬가지로 JPA도 연동없이 목데이터를 사용하여 간단하게 만들려고 한다. 여담이지만 이전에 python에 관한 글 작성 시 코드 블럭에 오류 없이 잘 사용했었는데, 코틀린이나 자바로 코드 블럭을 적용해보니 제대로 적용이 안되는 것 같다..... 이제 코드를 작성해보자 Customer package com.kotlin_rest_exam.rest_exam data class Customer( var id: Int = 0, var name: String ..
이번에는 Spring MVC 초기 설정하는 과정에 대하여 정리해보려고 한다. 요즘 스프링 부트를 공부하기 전에 스프링 프레임워크에 대해 먼저 공부를 진행하고 있지만 ... 이전에 Django를 사용했었을 때는 보지 못했던 개념들 많아 .... 모르던 부분들은 계속 공부하고 정리해보려고 한다.... # Spring MVC 란 ? 스프링 프레임워크에는 다양한 종류의 모듈이 존재한다. 이번에는 그 중에서 웹 프레임워크를 만들기 위한 모듈 중 Spring MVC에 대한 간단한 개념과 초기 설정을 정리해보려고 한다. IDE는 Intellij를 사용했으며, 이클립스에도 STS를 사용하면 거의 동일하게 사용할 수 있다. 먼저 Http Request 시 Spring MVC에서 처리되는 과정을 살펴보면 아래 그림과 같다..
이번에 새롭게 Node.js 처음 공부를 시작해보았다. 이전에 Django를 사용하여 REST API를 만들어 왔었지만, 비동기 처리에 어려움을 느껴 Node.js 공부의 필요성을 많이 느꼈다.' 현재 채용 시장을 살펴보아도 Node.js를 구인하는 스타트업 및 대기업을 많이 볼 수 있는데, 그만큼 요즘 핫한 것 같다. 그래서 이번에 Node.js 관련 서적도 구매하고 차근차근 공부해 나아가려고 한다. 이번에 정리할 내용은 단순하다. 단순히 Node.js로 웹서버를 실행시켜 보려고 한다. 코드는 아래와 같다. # 예제 코드 const http = require('http'); const server = http.createServer((req, res) => { res.write('Hello Node.J..
이번에는 이진 탐색 트리 개념과 이진 탐색 트리에서 최소합을 찾는 문제에 대하여 정리해보려고 한다. 이진 탐색 트리는 이진탐색과 연결리스트의 장점을 합친 개념으로 그림으로 간단히 그리면 아래와 같다. # 이진탐색트리 예시 이진 트리는 위 그림과 같은 형태로 표햔된다. 구조는 최상위 노드(위 그림에서는 8)를 기준으로 아래에 자식 노드가 존재 한다. 자식노드의 왼쪽은 노드 보다 작은 수, 오른쪽은 노드 보다 큰 수가 배치된다. 그리고 그 하위 노드들도 위와 같은 방법으로 중복 없이 정렬하면 트리가 완성된다. 이진트리는 중복 없이 최상위 노드를 기준으로 크기에 따라 정렬하기 때문에 효율적으로 탐색할 수 있다. 탐색 유형에는 총 3가지가 있으며 간단히 정의하면 아래와 같다. 1. 전위순회 : 부모 방문 -> ..
이번에는 페이지네이션에 대하여 정리해보려고 한다, 해당 기능을 설명하기 위해 회원 목록 조회 API를 예시로 설명하려고 한다. 회원 목록은 회원 수가 늘어날 수 록 계속 쌓이는 데이터이기 때문에 일정 개수 이상 조회 시, 다음 페이지로 넘어가서 조회하는 기능이 필요하다. 이때, 사용하는 기능이 페이지네이션이다. Django에는 페이지네이션 기능에 관련된 모듈을 제공하는 것으로 알고 있지만, 이번에는 모듈을 사용하지 않고 구현하려고 한다. 이제 아래 구현 코드를 살펴보자. # 구현 코드 class AccountList(View): def get(self, request): ''' 회원정보 리스트로 조회 ''' offset = int(request.GET.get('offset', 0)) limit = int..