출근 43일차

·2022년 10월 26일
1

회사이야기

목록 보기
43/118

오늘은 여러모로 재밌었다.

프로덕션에 올릴 준비 해줘요

내가 작업한 주소 검색엔진(ES)가 프로덕션에 올라가는게 확정됐다.

이것저것 정규식을 다 때려박고 예상할 수 있는 예외처리를 모조리 다 해버렸더니
정확도를 99%까지 끌어 올릴 수 있었다.

그래서 1%의 미스는 기존에 사용하던 외부 API로 검증을 하고
99%를 ES를 이용해서 검증하기로 확정이 났다.

근데 내가 지금 7.17.0 버전을 쓰고 있는데 8.x 버전으로 쓸 수 있었으면 좋겠다고 이야기가 나와서
일기를 쓰는 무렵 이것저것 작업을 해봤는데 다 틀어지는데? (....)

ES에서 하이픈은 사라진다.

주소는 보통 하이픈이 존재한다. 35-12 < 이런거때문에

근데 ES는 스탠다드 분석기에서는 하이픈을 지운다.

35-12가 35 12가 되는 것인데...... 이래서 주소의 정확도가 낮아지는 문제가 발생했다.

그래서 걍 뒤져봤다. 근데 공식문서가 진짜 최고더라..

https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-word-delimiter-graph-tokenfilter.html

그래서 이렇게 꽂아넣으니까 하이픈도 안사라지고 인식을 잘 하게 됐다!

{
  "template": "address-*",
  "index_patterns": ["address"],
  "order": "1",
  "settings": {
    "refresh_interval": "5s",
    "analysis": {
      "filter": {
        "dont_split_on_numerics": {
          "type": "word_delimiter",
          "preserve_original": true,
          "generate_number_parts": false,
          "catenate_numbers": true,
          "catenate_words": true
        }
      },
      "analyzer": {
        "custom_analyzer": {
          "type": "custom",
          "tokenizer": "whitespace",
          "filter": ["dont_split_on_numerics"]
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "doro_address": {
        "type": "text",
        "analyzer": "custom_analyzer",
        "fields": {
          "keyword": { "type": "keyword" }
        }
      },
      "zibun_address": {
        "type": "text",
        "analyzer": "custom_analyzer",
        "fields": {
          "keyword": { "type": "keyword" }
        }
      },
      "zip_code": {
        "type": "keyword"
      },
      "build_name": {
        "type": "keyword"
      },
      "manage_code": {
        "type": "keyword"
      },
      "created_at": { "type": "date" },
      "updated_at": { "type": "date" }
    }
  }
}

아, concat_ws로 했더니 값이 NULL이여도 공백이 한개 더 생기네

어떻게 풀어내면 좋을까 하다가 그냥 로그스태시에서 쳐냈다(...)

filter { 
    ruby {
        code => '
        event.set("doro_address",event.get("doro_address").gsub(/\s+\s/," "))
        event.set("zibun_address",event.get("zibun_address").gsub(/\s+\s/," "))
        '
    }
}

서버 코드상에서도 지울 수 있겠지만, 어짜피 데이터를 한번 넣고 상당히 오랫동안 쓸거라서
입력할 때 정리해서 넣으면 되겠다고 생각했다.

그리고 데이터를 넣고 있는데 확실히 속도가 느려졌다.
원래 한시간 반정도 걸리는데 한 두시간 걸릴듯?

nGram은 성능이슈가 확실히 있긴 하구나

주소검증이 제대로 안될 때 공백없이 다 붙여서 해보는건 어떻냐는 제안을 받았다.

그래서 nGram으로 한번 해봤는데, 속도가 무쟈게 안나오더라..

물론 정확도는 높았지만, 속도가 많이 나온다는 것은 여러모로 좋지 않을 것이라 생각해서 제외했다.

점심은 피자랑 맥주

회사에서 술을 마셔요?

넵 오늘 점심은 피맥

많이 마시는 것은 아니고, 팀원 중 한분께서 수제맥주를 간혹 가져오셔서 그때 마다 이렇게 한번씩 먹는 편이다.

한달에 한번씩은 백엔드 전원이 모여서 밥을 먹는 회고 & 스터디 시간이 있고
이런 점심의 낮술(?)타임은 한달에 0.5번정도 있나(?)

다음 백엔드 월간 회고때는 와인을 한병씩 가져와서 먹어보자는데...

과일치즈나 좀 사갈까싶다(ㅋㅋ)

오늘은 주간 프로덕션 백엔드 회고

수요일 15시는 주간 프로덕션 팀 백엔드 정기 회고날이다.

그 중 이런 이야기를 했다.

코드를 짜는게 즐거워서 퇴근하고서도 취미생활처럼 코드를 치고 있는데
체력적 부담이 조금 온 것 같아서 업무량을 조금 줄여야할 것 같다.

그런데 지금 ES 작업이 예전부터 해보고 싶었던 것이라 지키기 힘들 것 같아서
빠르게 끝내는게 나에게 휴식을 주는 길이 아닐까 생각한다(...)

현재 내가 하고 있는 작업이 좀 많은데 대충 이쯤 된다.

  1. 새로운 택배사 연동 개발 - 기존의 에픽
  2. 새로운 택배사 추가로 인한 기존 택배사와 함께 사용할 수 있도록 개발 - 기존의 에픽
  3. 주소 검증 검색엔진 구축 - 상황이 좋게 시작한 피쳐
  4. TypeORM v0.3 버전업 사전 준비 - 12월 15일까지
  5. GraphQL 프로덕션 Best Practices 만들기 - 이건 내가 써보고 싶어서 취미로 하는 중

오늘도 주소검증에 정규식에 고통받는 나의 모습을 보면서 이게 바로 스불재라고(ㅠㅠ)

하....휴먼 에러를 코드로 바로잡는다는건 정말 어려운 것 같다

아무튼 조금 느긋하게 해야하는데, 성격이 그렇질 못해가지고 음.... 고민이다
걍 사무실 출근하고 노트북을 회사에 놓고 와버리는게 깔끔할 것 같긴 한데...

모르겠다 뭐가 맞을지 하하


이것저것 해보고싶은게 많은데, 몸의 한계가 온거까진 아니지만 건강이 확실히 좋지 않은 것 같다.

운동을 진짜...^^ 무조건 해야할 것 같고

ES의 세부 보안과정에 관한 정보를 좀 찾아봐야 할 것 같다.

내일은 ES 보안을 제외한 코드작업과 TypeORM 버전업에 대한 어느정도 초안을 그려보면 되겠다 :>

profile
물류 서비스 Backend Software Developer

0개의 댓글