본문 바로가기

개인 학습 메모장

(103)
6월 말 ~ 오늘까지의 회고 어느덧 데브코스에 참여한지 2달이 됐다. 현재까지 스프링 프레임워크, 스프링 부트, jdbcTemplate에 대해 배웠다. 기존에 알고 있던 내용이 많이 포함됐지만, 톰캣을 직접 띄우고 Configuration class를 만들어 DispatcherServlet, ViewResolver, MessageConverter를 모두 등록하고 사용해본 것은 처음이다. 또한 JPA만 사용해봤지 mybatis, jdbcTemplate, Connection을 직접 사용, 반납을 하는 코드를 작성해본 경험은 없었다. 이번 강의를 통해 위에 작성한 내용을 경험할 수 있었고 Spring boot의 AutoConfiguration의 편리함과 어떠한 설정을 자동으로 해주는지 디버깅을 하며 알게 됐다. 또한 데이터베이스에 접근할..
OpenFeign 적용기 최근 WebClient를 잘못 사용하고 있다는 것을 깨닫고 기존의 코드를 Open Feign으로 리팩토링을 하려고 했다. RestTemplate도 있지만 코드가 지저분해지기 때문에 OpenFeign을 이용했다. Feign Feign이란 인터페이스와 어노테이션 만으로 웹 서비스 호출을 쉽게 만든 Netflix에서 만든 기술이다. Spring Cloud Netflix Spring Cloud는 마이크로서비스 아키텍처를 구축하는데 필요한 도구 모음이다. 이 도구들은 분산 시스템에서 발생할 수 있는 여러 복잡한 문제를 해결하도록 설계되었습니다. Netflix는 이러한 마이크로서비스 문제를 해결하기 위해 여러 오픈 소스 소프트웨어(OSS)를 개발하고 공개했다. 이 중에서 Feign은 그 사용법이 간단하고, HTTP..
데브코스 2주 회고(pre 팀) 데브 코스에 들어와 어느덧 2주가 지났다. 2주 간 꽤 많은 일들이 있었고 돌아볼 사항이 많아 기록을 남기고자 한다. 2주동안 일어난 큰 일들을 생각해보면 아래와 같다. 1. 컬리 서류 불합격 2. 토스증권 서류 불합격 3. 계산기 프로젝트 데브코스 2주 후 느낀점 첫 2주는 팀 소통을 배우는 기간이라고 생각한다. 팀을 이루고 6시간 동안 필수적으로 팀과 함께 공부한 경험은 처음이다. 아마 다른 팀원들도 마찬가지였을 것이다. 처음에는 어색함을 못이기고 많은 대화를 하지 못한 것이 아쉽다. 만남 초반에 친해지기 위한 게임을 많이 했으면 좋았으면 하는 생각이 든다. 그렇다 하더라도 팀을 이뤄서 하는 공부는 혼자서 하는 공부와는 많이 달랐다. 같이 하는 사람이 생기니 동기부여도 되고 나와 다른 사람의 생각을 ..
elasticsearch에 형태소 분석기 적용하기 앞으로 elasticsearch를 이용할 때 유용할 것 같아 형태소 분석기 적용 과정을 정리하고자 한다. 형태소 분석기란 여기 "나는 김치를 좋아한다" 라는 문장이 있다. elasticsearch에서 김치를 포함하는 문장을 검색한다면, 검색 결과가 나오지 않는다. elasticsearch는 영어 외의 like 검색을 띄워쓰기 단위로 하기 때문이다. 따라서 "김치를" 까지 검색을 해야 해당하는 문장이 검색된다. 이러한 상황에서 형태소 분석기를 이용하면 형태소 단위로 검색이 가능하다. 적용하기 1. 먼저 현재 elasticsearch가 설치된 경로에 형태소 분석기를 설치한다. elasticserch에서 지원하는 대표적인 형태소 분석기인 nori를 설치했다. $ bin/elasticsearch-plugin i..
Slack Webhook API 사용법 서비스를 제공하다보면 예상치 못한 오류가 발생할 수 있고 개발자는 어떤 오류가 어디서 발생했는지 알아야 더욱 좋은 서비스를 제공할 수 있다. 보편적으로 slack을 많이 이용할텐데 앞으로도 slack을 이용해 에러 메시지를 받는 것을 자주 이용할 것 같아서 이용법을 정리한다. 1. Slack app을 만든다. https://api.slack.com/messaging/webhooks Sending messages using Incoming Webhooks Creating an Incoming Webhook gives you a unique URL to which you send a JSON payload with the message text and some options. api.slack.com 위 링..
Elasticsearch 쿼리빌더로 리팩토링 글을 쓰게 된 이유 이번에 한 리팩토링은 객체지향의 특징을 잘 살렸다고 생각이 들었다. 이후 엘라스틱 서치 뿐만 아니라 다음에 코드를 작성할 때 또한 도움이 될 것이라 생각이 들어 기록을 남기고자 한다. 잠깐의 필수 지식 본문에 들어가기에 앞서 글의 주제와는 다소 벗어나지만 글의 이해를 위해 꼭 알고 있어야 할 사항이 있다. 자바의 인터페이스 메커니즘과 스프링 데이터를 상속받은 인터페이스의 메커니즘을 정확하게 이해해야한다. 자바에서는 일반적으로 new 키워드를 통해 인터페이스를 사용하지 못하고 구현체를 생성해서 인터페이스를 사용해야 한다. 예를들어 다음의 코드가 있다. interface test extends test2, test3{ } interface test2 { void method2(); } c..
CQRS패턴 도입 이야기: 프로젝트에 Kafka 적용하기 지난 글에서 Kafka의 기본의 되는 개념을 공부했다. 이제 프로젝트에서 적용해보자. 1. 카프카, 주키퍼 서버 실행 다음과 같이 docker-compose 파일 작성 후 docker-compose up -d 명령어로 kafka 서버를 실행한다. (각 요소가 무엇인지 알고 싶고 또 다른 설정을 하고 싶다면 다음의 링크 참고 https://www.baeldung.com/ops/kafka-docker-setup) version: '2' services: zookeeper: image: wurstmeister/zookeeper ports: - "2181:2181" kafka: image: wurstmeister/kafka ports: - "9092:9092" environment: KAFKA_ADVERTISE..
CQRS패턴 도입 이야기: Kafka 조금 알아보기 Kafka 적용 과정을 작성하기에 앞서 Kafka에 대해 알아보는 시간을 가져보자카프카란?위의 사진에 작성되어 있는 내용과 같이 카프카는 다음의 내용을 핵심으로 설명하고 있다.Fortune 100개의 회사중 80퍼센트가 이용한다.스트리밍을 처리하기 위한 플랫폼이다.고성능이라는 것을 강조하고 있다.구조기본적인 구조는 다음 이미지와 같다. 카프카 클러스터메시지 저장소여러 개의 브로커로 구성됨(하나의 브로커는 하나의 서버와 비슷한 개념)브로커는 메시지를 나눠서 저장하고 이중화 처리,장애 대체도 한다.데이터 이동의 핵심 역할주키퍼카프카 클러스터를 관리하는 용도로 주키퍼 클러스터가 필요주키퍼 속에 카프카 클러스터의 정보가 들어간다.프로듀서카프카 클러스터에 메시지를 넣는 역할토픽을 기준으로 특정 토픽에 메시지를 넣..