본문 바로가기

전체 글

[Kotlin] Kotlin과 Java의 차이점 코틀린의 문법을 익히기에 앞서 자바를 사용해 왔다면, 자바와 코틀린의 차이점에 대해 어느정도 파악해 두고 시작하면 좋을 것이다 1. 자바에는 있지만 코틀린에는 없는 것 Checked Exception 이전 포스팅에서 Java와 관련하여 다루었던 주제인 예외의 종류(https://kadun.tistory.com/entry/Java-%EC%98%88%EC%99%B8%EC%9D%98-%EC%A2%85%EB%A5%98Checked-UnChecked-Error) 에서 Checked Exception이 코틀린에는 존재하지 않는다. 자바의 경우에는 해당 예외를 반드시 처리해주어야 하기 때문에, try - catch 로 감싸거나, throws로 예외를 전파해주어야 하지만, 코틀린에서는 해당 예외에 대한 try - ca.. 더보기
[ELK] 마치 SQL처럼 사용하자 ElasticSearch와 OpenSearch에서는 데이터의 조회를 마치 RDB의 SQL처럼 사용할 수 있는 기능들을 제공하고 있다. ElasticSearch POST /_sql { "query": "select item from {index}* where item = {item_name}" } // 와일드카드(*)를 사용해 해당 이름을 가진 모든 인덱스를 대상으로 조회가 가능하다. OpenSearch POST /_plugins/_sql { "query": "select item from {index}* where item = {item_name}" } where 뿐만 아니라 group by, having 등 더 다양한 기능들을 지원하고 있다. 파라미터 바인딩도 지원한다 POST /_plugins/_sq.. 더보기
[ELK] 시작한 김에 ELK(2) 오늘은 logstash dummy 파일을 만들고 elasticsearch로 보낸 후 kibana에서 조회해보고자 한다. 지난번처럼 역시나 (https://xodns.tistory.com/115) 블로그의 내용을 참고했다. Elastic 진영에서는 Beats 라는 Agent를 도입하여 사용을 권장하고 있는듯 하나, 일단은 임시로 생성한 파일을 통해 logstash로 읽고 elasticsearch로 보내는 과정을 진행해보고자 한다. "DOCKER-ELK" 프로젝트에서 logstash 부분의 설정파일들을 수정해준다. 일단 더미 파일을 하나 만들자. 나는 파일명을 logstash.log 로 했다. hello world chicken pizza burger logstash 경로에 test 디렉토리를 하나 만든 후.. 더보기
[ELK] 시작한 김에 ELK(1) Elasticsearch를 적용해보면서, 단순히 ES만 사용할것이 아니라, 일반적으로 하나의 Stack으로 보는 Logstash 와 Kibana도 설치해보기로 했다. 기존에 single node 로 구성한 es는 삭제하고, docker-compose 환경으로 새롭게 구성하겠다. 각 모듈을 개별적으로 설치 후 구성할수도 있겠지만.. 여기서는 현대 문명의 혜택을 누리고자 한다. 아래의 github으로 가면 Docker 환경에서의 ELK 구축을 위한 구성을 이미 해 두었고, 손쉽게 구축이 가능하다. https://github.com/deviantony/docker-elk GitHub - deviantony/docker-elk: The Elastic stack (ELK) powered by Docker and .. 더보기
[Spring] Elasticsearch를 Spring에 적용해보자(2) 이전 글에서 야심차게 Elasticsearch 환경을 구축하고 테스트까지 하였지만, 라이선스 관련 문제로 Opensearch로 변경하게 되었다. spring-data-elasticsearch를 사용하기 애매해졌지만, 이미 진행한 부분까지는 작성해보고자 한다. 이후에는 Opensearch 전환 및 적용기를 작성하겠다. Elasticsearch 연동을 위한 SpringBoot 프로젝트를 하나 생성(과정 생략)하고, application.yml에 의존성을 추가한다. dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-elasticsearch' } 이후 연결을 위한 Configuration 클래스를 생성한다. @Conf.. 더보기
[Spring] Elasticsearch를 Spring에 적용해보자(1) 바로 지난주만 해도 코프링을 해보고자 마음 먹었지만, 세상일은 내 뜻보단 회사의 뜻대로 움직이는 법이라.. 기존 MariaDB 파이프라인 구조에서 Elasticsearch를 사용하는 구조로 변경하는 작업을 진행하게 되었다. 계속 해보고 싶었던 작업이기도 해서, 패기있게 진행하게 되었지만, 역시 설정부터가 쉽지가 않았다. 다행히 스프링부트에서는 이미 훌륭한 기능을 지원하고 있다.(spring-data-elasticsearch) 이 기능을 최대한 활용하기로 하였고, 우선적으로 로컬에서 환경을 구축해보기로 했다. Docker를 활용하여 Elasticsearch Container를 띄운다 일단 공식문서를 기준으로 진행한다. (https://www.elastic.co/guide/en/elasticsearch/re.. 더보기
[Spring] Kotlin + Spring 프로젝트 만들고 테스트 해보기 요즘 백엔드 공고를 보면 Spring 개발자를 뽑는 공고에 유독 Kotlin 가능자를 우대하는 경우가 많다. 작년에만 해도 가능은 하지만 Kotlin은 Android 개발에만 주로 사용된다 정도로 알고 있었는데.. 어느덧 점점 주류가 되고 있는 개발언어인 것 같다. 작년에 AOS 쪽 직무를 잠깐 진행하면서 Kotlin을 공부하기는 하였지만, 겉햝기 수준이었고, 그 이후로는 따로 시간내서 공부하지 않았다. 그러다 개인적으로 프로젝트를 한번 진행해보고 싶었는데, 지금까지는 사용하지 않았던 것들만 주로 사용해서 느리더라도 한번 진행해보고 싶어졌다. 최종적으로 Spring + Kotlin + MongoDB 로 진행해보려고 한다.(FE : Vue.js 예정) 기획부터 있어야겠지만, 그 전에 내가 소위 말하는 "야.. 더보기
[Java] 예외의 종류(Checked, UnChecked, Error) 현업에서 시간에 쫓기다보면, 가장 기본적인것부터 놓치기 쉬운것 같다. 기존 기능을 개선하는 과정에서, 단순 Read 로직이었던 부분에 Write, Delete 로직이 추가되었고, 그 당시에는 해당 부분을 모두 검증하였는데, 추후에 트랜잭션이 추가되면서, 직접 구현한 CustomException을 발생시키면서 모든 로직이 rollback 되었다. 실제 운영서버 중단 패치중에 일어난 일이었고, 명백히 검증을 소홀히 한 실수였기에 평소에 가장 기본적이었던 것들을 놓치고 있었던 기본들에 대해 다시금 생각해보게 되었다. 서론이 길었지만 결론적으로는 예외의 종류에 따른 처리 문제였다. Java에서 예외는 크게는 Error와 Exception으로 나누어지고, Exception은 또다시 Checked Exception.. 더보기