반응형
전체 글

전체 글

    Elasticsearch template를 일별 index 구성하기

    Elasticsearch를 이용해서 로그기록을 많이한다. 일별 로그성 인덱스를 자동으로 만들기 위해 template를 사용해서 구성하는 법을 정리해보자. 우선 매일 새롭게 생성될 index에 대한 template를 생성해보자. template 생성 PUT _template/wedul_log_* { "index_patterns": [ "wedul_log_*" ], "mappings": { "_doc": { "dynamic": false, "properties": { "id": { "type": "integer" } } } } } 생성한 템플릿이 잘 만들어졌는지 확인해보자. 확인 GET template/wedul_log* 그럼 이제 wedul_log라는 대표 인덱스를 생성해주고 template에 맞는 일자별..

    Elasticsearch에서 reindex를 이용해서 매핑정보 변경하기

    Elasticsearch에서 index를 구성하다보면 매핑정보를 추가하거나 수정하고 싶을때가 있다. 내가 아는 내에서는 한번 생성된 index의 매핑정보를 변경하는건 어렵다. 그래서 reindex를 통해 index의 매핑정보를 변경해줘야한다. 우선 wedul_mapping이라는 인덱스가 있다고 해보자. 매핑 정보는 다음과 같다. PUT wedul_mapping { "mappings": { "_doc": { "dynamic": "false", "properties": { "id": { "type": "integer" }, "name": { "type": "text", "fields": { "keyword": { "type": "keyword" } } } } } } } 이때 name에서 keyword필드를 ..

    ffmpeg로 동영상 정보 추출 및 썸네일 가져오기

    ffmpeg로 동영상 정보 추출과 썸네일을 가져올 수 있다. 간단하게 설치하고 cli를 통해 진행해보자. 설치 우선 mac os인경우 brew install ffmpeg로 설치하고 linux인 경우 sudo apt-get install ffmpeg로 설치하면 되다. 동영상 정보 가져오기 (ffprobe) ffmpeg에서 ffprobe를 이용해서 동영상 정보를 추출 할 수 있다. print_format옵션을 사용하여 json 형태로 출력이 가능하다. 만약 프로그램에서 사용 시 node에서는 child_process를 이용해서 실행 수 결과를 받아서 사용하면 된다. ffprobe -v quiet -print_format json -show_format -show_streams wedul.mp4 썸네일 만들기..

    DDD. 응용서비스 코드 규칙과 트랜잭션 관리

    도메인 응용서비스 관련 내용을 진행하기 전에 도메인에 대해 간단하게 정리해보자. 응용서비스에서 가장많이 사용하게 되는 부분은 도메인이다. 도메인에서 담당하는 역할은 도메인 내부에 있어야한다. 특히 도메인의 데이터를 조작하는 경우에는 도메인을 사용하는 응용서비스 영역에 배치되게 되면 응용서비스 영역에서 사용할 때마다 중복코드가 발생할 간으성이 크다. (도메인 관련 validation 체크도 도메인 내부에서 진행하는 것을 추천) 응용서비스 응용서비스는 표현영역과 도메인 영역을 연결하는 매개체 역할을 하는데 이는 디자인 패터의 파사드(Fasade)패턴과 같다. 응용서비스의 크기 응용서비스는 보통 다음 두가지 방법 중 한가지 방식으로 구현한다. 1. 한 응용서비스 클래스에 회원 도메인의 모든 기능을 구현한다. ..

    DDD. 애거리루트 정리

    애그리거트는 관련된 객체를 하나의 군으로 묶어주는 것 으로 상위수준에서 모델을 조망하는 방법 중 하나이다. 애그리거트는 비슷한 속성을 가진 객체를 묶어놓은 것을 의미한다. 예를 들어 주문 시스템에 주문 관련 애그리거트는 Order, Receiver, OrderLine.. 등이 있고 회원정보에는 Member, MemberInfo등으로 나눌 수 있다. 각 애그리거트에 연관된 객체를 담고 있으며 유사하고 동일한 라이프 사이클을 보유하고 있다. 애거리거트 루트 애그리거트에서 가장 핵심이 되는 주체 즉, 애그리거트 전체를 관리하고 책임지는 주체를 애그리거트의 루트 엔티티라고 한다. 애그리거트내에 존재하는 모든 엔티티는 루트 엔티티와 직간접적으로 연결되어있다. 애거리거트 루트의 핵심 역할은 애거리거트의 일관성을 유..

    Redis Cluster mode에서 mget, mset, pipeline과 같은 멀티 키 명령어 사용하기.

    redis에 만약 200 ~ 300개가 넘는 캐시 정보를 계속 request를 날리면 레이턴시가 발생할 가능성이 크기 때문에 이런경우에 mget, mset, pipeline 등 멀티키 명령어를 사용한다. 하지만 redis가 single mode일 때는 아무 상관이 없지만 cluster mode인경우에는 다음과 같은 오류를 발생 시킨다. "CROSSSLOT Keys in request don't hash to the same slot" 무슨 오류일까?? 처음에 redis가 싱글모드로 돌고 있던 stage에서 테스트를 해서 정상적으로 멀티키 명령어가 잘 되는줄 알고 배포 했다가 라이브에서 위와 같은 오류가 발생했다... 너무 당황해서 바로 수정했다. 무엇이 문제 였을까? 하면서 문서를 찾아보니 redis에는..

    DDD. DIP 의존 역전 원칙

    서비스가 특정 시스템에 의존성을 가지게 되면 서비스 자체만으로 테스트 수행이 어렵고 종속되는 시스템에 따라 서비스의 코드가 지속적으로 변경될 여지가 있다. 이를 해결하기 위해서 DIP개념을 사용할 수 있다. DIP 제품의 할인율을 구하는 서비스가 있다고 가정해보자. 이 서비스는 의미 있는 단일 기능을 제공하는 고수준 모듈이다. 그리고 이 고수준 모듈의 기능 구현을 위해서 현재 가격과 할인 %등을 구하는 여러 하위 기능이 필요하다. 이때 이 기능들은 하위 기능을 실제로 구현한 저수준 모듈이라고 한다. 고수준 모듈이 저수준 모듈 여러개의 의존성을 가지게 된다면 테스트와 여러 기능 수정 때마다 변경이 생긴다. 그럼 이를 해결하기위해서는 저수준 모듈이 고수준 모듈을 의존하게 만들어야 하는데 이를 위해서는 추상화..

    DFS로 미로 탈출하기

    최단거리 알고리즘을 공부하면서 예전해 만들었었던 미로 찾기를 다시한번 해봤다. 초년생때 이런문제가 어려웠는데 다시해보니 크게 어렵지는 않은것 같다. DTO package dto; /** * Maze 블록의 정보를 보관하는 DTO * * @author rokki * */ public class MazeBlock { private int x; // x 좌표 private int y; // y 좌표 private int count; // 카운트 public MazeBlock(int x, int y, int count) { this.x = x; this.y = y; this.count = count; } public int getX() { return x; } public void setX(int x) { th..

    스위스 여행 루체른 (빈사의 사자상, 리기산, 카펠교)

    스위스 마지막날은 취리히였지만 취리히는 크게 머리에 남는게 없어서 기록은 하지 않기로 했다. 대신 그 전날이었던 루체른에 간 후기를 마지막으로 써본다. 인터라켄 동역에서 루체른 인터라켄 동역에서 루체른으로 가기위해서는 마찬가지로 SBB 어플을 사용했다. 루체른까지 한번에 가는 기차는 한시간에 한번씩 밖에 없다. 그래서 시간때를 잘 보고 선택해서 가야한다. 놓치면 또 기다려야 한다 ㅜㅜ 아니면 베른을 거쳐서 가는 방법이 있는걸로 아는데 번거롭고 시간도 오래걸리니 패스 생각보다 기차가 오래가기 때문에 지친다. 그리고 중간에 가는 방향이 한번 바뀌기 때문에 타이밍 봐서 반대로 앉아야한다. 안그러면 멀미난다. 루체른에서 리기산 가기 루체른역에서 내리면 엄청 크다는걸 느낄 수 있다. 거기서 내려서 정문으로 나오면..

    스위스 여행 인터라켄 여행 후기 (융프라우, 뮤렌 murren, 하더쿨룸 방문)

    여행 3일차가 되면서 인터라켄을 가기로 했다. 스위스하면 가장 먼저 떠오르는 경치 융프라우를 보기위해서 신혼여행 일정중 총 3일을 인터라켄에서 잡았다. 베른에서 인터라켄 서역으로 베른에서 인터라켄 서역으로 가기 위해서 처음과 마찬가지로 SBB 어플을 켰다. 인터라켄은 베른에서 한시간? 정도 걸린다. 열차를 타고 가다보면 옆쪽에 호수가 나오는데 멋지다. 왼쪽에 앉아서 가야 정확하게 볼 수 있다. 그런데 열차의 창문이 조금 더러워서 사진이 잘 안나온다 ㅜ 인터라켄 동역이나 서역이나 걸어서 15분 정도 거리고 그 가운데 사이에는 가게도 많고 사람도 많아서 구경하기 좋다. 융프라우 가기 전에 가기에 딱 좋다. 호텔은 메트로폴 폴리스라는 4성급 호텔에서 보는 경치가 정말 좋다. 예약은 인터파크에서 했는데 가격은 ..

반응형