본문 바로가기

작업일지

(23)
#4 ) log4j 이용해서 로그에 쿼리 남기기 DB커넥션까지 완료했으니 내가 무슨 쿼리를 돌렸는지 쉽게 보기위해 로그에 돌린 쿼리를 찍는 작업을 진행하기로 했다. log4j를 이용해서 로그에 쿼리를 찍어보도록 하자! 먼저 pom.xml에 dependency를 추가한다 org.bgee.log4jdbc-log4j2 log4jdbc-log4j2-jdbc4.1 1.16 그리고 나서 resource폴더 안에 log4jdbc.log4j2.properties를 만들고 다음과 같이 작성한다. log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator 그 후 커넥션 설정을 다음처럼 셋팅해주면 된다! 필자는 yml에 커넥션 설정값을 넣어놔서 yml을 수정했다. config에서 커넥션 설정값..
#3 ) Db Connection 4개 연동하기 with MyBatis Mybatis로 connection을 1개 연동했다. 이제 개발서버 DB 2개, 운영서버 DB 2개 총 4개의 DB Connection을 연동해서 간단한 SELECT문을 긁어오게끔 해보자 1개를 연동했을 때 보다 폴더와 패키지가 추가되었다. 원래 realdb / devdb 이렇게만 폴더나 패키지를 나눴는데 connection이 꼬이는 일이 발생해서 저렇게 세부적으로 나눠서 mapper파일을 넣어놓았다. DevDbAdminConfig.java package com.smartplus.connect.judy.config; import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariDataSource; import lombok.extern.slf..
#2 ) MyBatis와 SpringBoot 연동하기 자동연동 프로그램을 만들기 위해서 SpringBoot와 MyBatis를 연동해보고자 한다. 이번에 사용한 빌드툴은 maven이다. 그래서 먼저 pom.xml에 MySql과 MyBatis를 추가해준다! mysql mysql-connector-java runtime org.mybatis.spring.boot mybatis-spring-boot-starter 2.0.1 그리고 application.yml 혹은 properties에 다음처럼 설정한다. 먼저 커넥션 하나만 연동해보려고 mysqlDev - devdbmall만 설정했다. spring: profiles: active: - mysqlDev - mysqlReal . . . . spring: profiles: mysqlDev devdbmall: dataso..
#1 ) 신규업체 자동연동 프로그램을 만들어보자 팀프로젝트에 점점 참여하면서 신규업체가 들어오면 연동하는 작업을 맡았다! 연동 작업이 소위말해 다음과 같은 고충이 있다. 1. 노가다 작업 2. DB툴로 이쪽 DB 저쪽 DB 옮겨가며 데이터를 확인 3. 포스트맨으로 이쪽 버티컬API 찌르고 저쪽 버티컬API 찌르고 데이터 확인 연동작업을 진행하면 난리나는 tool탭과 여러개 켜져있는 프로그램 화면들이 지저분한 책상을 보는 기분이 들어서 하나의 페이지에서 모든걸 해결할 수 있게 기능화를 하면 어떨까하는 생각이 들었다. 그래서 신규업체 자동연동 프로그램을 만들어보기로 했다! - 계획 먼저 DB커넥션은 4개(개발용DB 2개 / 리얼용DB 2개)를 파야하고 MyBatis를 이용 할 예정이다. 크게 두개의 페이지와 기능으로 나눌 예정 (개발서버 테스트용 연동 /..
#5) 안동버스 API 적재 및 조회 프로그램 완성 적재API는 안동 버스정류장 별 버스 도착정보를 DB에 적재하는 역할 - 적재 프로세스 : 1. 안동버스 open api 호출 response 원문을 elasticSearch에 적재 2. http code 200이면 캐싱을 위해 redis에 적재 (타임아웃 10분) 3. kafka를 이용해서 데이터를 컨슈머에 넘김 4. 컨슈머는 kafka에 넣어진 데이터를 가져와서 JPA를 사용해 Mysql에 적재 5. 에러발생시, mongo에 exception 정보 적재 조회API는 적재된 버스 도착정보를 불러오는 역할 - 조회 프로세스: 1. Redis에 캐싱된 값이 있으면 redis에 적재되있는 값을 조회 2. Redis에 캐싱된 값이 없다면 mysql에 적재되어있는 최신 데이터을 조회 3. Redis, mysql..
#4) kafka로 데이터 발행(Publish)과 구독(Subscribe) 동작하기 카프카는 대용량의 실시간 로그처리에 특화되어 있는 솔루션이며, 데이터 유실없이 안정적으로 메세지를 전달할 수 있다. 분산환경에 특화되어 설계되어 있다는 특징이 있으며 다른 메세지 큐(ex.RabbitMQ)보다 성능적으로 뛰어나다고 한다. Publisher-Subscriber 모델 발행과 구독 모델을 사용한다. 발행과 구독이란 메세지를 특정 수신자에게 다이렉트로 전달하는 시스템이 아니다. Publisher는 메세지를 topic을 통해서 카테고리화하고 Subscriber는 그 topic을 구독함으로써 메세지를 읽어올 수 있다. Publisher는 topic에 대한 정보만 알고있고, Subscriber도 topic만 바라보기 때문에 발행자와 구독자는 서로 모르는 상태다. topic과 partition 메세지는..
#3) Redis(레디스)로 캐싱하기 Redis(레디스)는 메모리 기반의 “키-값” 구조 데이터 관리 시스템이며, 모든 데이터를 메모리에 저장하고 조회하기에 빠른 Read, Write 속도를 보장하는 NOSQL 중 하나이다. 인메모리 기반이지만 삭제 명령을 하지않으면 영속성을 지원하는 인메모리 데이터 저장소이고 쓰기 성능 증대를 위한 클라이언트 측 샤딩(Sharding)을 지원한다. 그래도 메모리 기반이기때문에 데이터 적재용으로 쓰기에는 무리가 있을 것으로 보인다. 출처 : 조대협님의 블로그 다음의 그림과 같이 문자열, 리스트, 해시, 셋, 정렬된 셋과 같은 다양한 데이터형을 지원한다. Redis와 Springboot 연동 1. pom.xml에 Redis dependency 추가 org.springframework.boot spring-bo..
#2) 엘라스틱서치(Elasticsearch)로 원문 데이터를 저장하기 엘라스틱서치는 JSON구조를 사용해 스키마가 동적으로 변화할 수 있는 특징을 가진다 그렇기 때문에 필요없는 데이터 컬럼은 빼서 저장할 수 있으므로 데이터 공간을 절약할 수 있다. 그리고 기본적으로 검색엔진이므로 검색 기능에 빠르고 강력한 기능이 탑재되어있다. 또한 다양한 프로그램 언어를 지원하고 REST API를 제공해 HTTP 형식으로 사용할 수 있다. RDBMS와 비교해보면 다음과 같다. RDBMS Elasticsearch Database Index Table type Row Document 키바나(Kibana)는 ELK에서 K를 맡고있는 솔루션이다. 엘라스틱서치와 연계하며 유저 인터페이스를 제공한다. 즉, 엘라스틱서치의 GUI툴이라고 쉽게 생각하면 될것같다. Elasticsearch와 springB..

반응형