TIL-20220207~18

2022. 02. 09.

02.07~08

인턴1

배치 마무리

배치는 얼추 마무리됐다. 몽고DB는 커서가 없어서 익명클래스로 오버라이딩해서 처리해줬다. 아예 페이지 숫자가 올라가지 않도록 해줬는데, 페이징에서 문제가 생기는게 왜 그런건지 뜯어봐야 할 것 같다. 어쩌면 이런건 배치에 적합한게 아닌걸지도 모르겠다.

이외에도 업데이트가 제대로 안되거나 시간이 안 맞다거나 하는 자잘한걸 해결하는데 시간을 썼다. 이제 고지가 눈앞이라는 생각이 들어서 그런지 마음에 여유가 조금 생겼다. 그러면서도 불안함이 없지는 않다.

키바나?

키바나.. 처음에 내가 이해를 잘 못하는 건줄 알았다. 알고보니 시계열 데이터라 15분 전은 당연히 나오지 않는 것이었다. 어찌어찌 데이터를 보고 그래프도 보고 하긴 했는데, 하는 방법은 대충 알았으니 뭘 보여주냐가 문제가 됐다.

기본적인 틀은 가중치 분석에 필요한 부분과 콜드스타트 분석에 필요한 부분이었다. 그래서 거기에 필요한 항목들을 생각해봤고 이외에도 사용자 입장에서 얼마에 입찰해야 제일 좋을지를 볼 수 있도록 그래프를 보여주는 안도 나왔다.

일단은 마지막 과제로 생각하고 프로젝트 전반적인 마무리를 한 뒤에 잡아가기로 했다.

환경 분리

이번에도 설정 중 가장 어려운 부분이 환경 분리였다. 방법은 많지만 좋은 방법이 뭘지 고민이 많이 된다. 특히 개인적으로는 편의성도 중요한 부분이라 생각하기 때문에 개발에 방해가 되도록 분리가 되지 않았으면 하는 마음이 크다. 그런데 편의성을 잡으려면 더러워지는 부분이 생긴다. 이런걸 깔끔하게 처리하는게 제일 힘든 것 같다.

이번에는 스케줄이 특정 환경에서만 돌아가도록 하기위해 테스트 프로파일을 무조건 붙일 수 있도록 유지하는 방법을 많이 고민했다. 베이스를 반드시 상속받도록 하는 방법도 있겠지만 너무 귀찮다. 그래서 테스트의 리소스 디렉토리에 설정파일을 따로 두고 테스트 프로필을 활성화 시키는 식으로 잡았다. 단점은 이렇게 하면 디렉토리 구조 가이드와는 영 딴판이 된다. 이건 내일 여쭤보면서 풀어야 할 것 같다.

어찌됐건 테스트 데이터베이스를 격리시키는게 주요한 목적이었는데, 엘라스틱서치는 데이터베이스 개념이 아니어서 나누는게 애매했다. 그래서 테스트컨테이너를 사용하는 것 같은데, 현재 상황에서는 나만 도커를 사용하고 있어 추가비용이 생각보다 많이 발생할 수 있다. 그래서 프로퍼티를 이용하는 꼼수를 썼다. 내일 피드백을 받아봐야할 것 같다. ㅋㅋ..

코틀린 스터디

이번 주는 타입에 관한 것이었다. let이 헷갈렸는데 옵셔널의 ifPresent와 비슷한 느낌이다.

알고리즘을 풀며 함수형으로 유도한다는 느낌을 많이 받았는데 실제 사용하는 사람들은 dsl을 많이 권장하는 느낌이라고 한다. 나도 계속 써봐야 할 것 같다.

null도 타입처럼 생각하는 것 같다는 의견이 있었는데, 나는 반대로 생각했다. 오히려 코틀린 같은 언어들이 null을 상태처럼 생각해서 다른 타입과 함께 섞어 사용할 수 있는 독립적인 존재로 만든게 아닌가 생각됐다. 예를 들어 자바같은 전통적인 언어는 null이 특정 타입에 값이 없음을 나타내는 하나의 심볼이지만, 코틀린은 null이 있을 수 있다는 표시를 타입과 함께 표기한다. 뇌피셜이니 아직 어디서 주장하기는 어렵다. 정반대로 생각한 것일 수도 있겠다. 어찌됐건 중요한건 널 처리가 매우 깔끔해졌다는 것. 문법적으로 지원을 해버리면서 옵셔널을 엄청 세련되게 표현한 느낌이다.

02.09

인턴2

이제 거의 마무리 단계다 자잘하게 고치고 있다. 피드백을 받는 날이었는데, 콜드스타트를 보강해야 한다.

사용자경험

화면에 보여져서 로그가 들어가는 시점 그 사이가 거래 시점이라 생각하고 그 전에는 결제가 되면 안 되지 않을까 하는 생각을 했다. 얼추 맞는 말이지만, 로그를 쌓지 못한다고 소재가 화면에 보여지지 않는 것은 사용자 경험 입장에서 너무 좋지 않을 것이라는 피드백이 있었다. 실제로는 어떨지 다시 여쭤봐야겠다.

대용량

es에서 퍼오는건 기간별로 하면 조회가 많이 줄어들지 않을까 하는 피드백도 있었다. 여유가 나면 테스트 해보고 수치 측정을 해보면 좋지 싶다. 너무 고민 없이 일단 개발에만 집중했던것이 아닌가 싶기도 하다.. ㅋㅋ 기존이랑 비교해서 오차가 얼마나 나는지 테스트해봐도 되겠다. 더군다나 배치가 엄청 느리게 돌아가니 이건 빠르게 개선해보면 좋을 것 같다.

환경분리

환경분리는 이렇게 하는게 맞다고 한다. 디렉토리 가이드에는 서버기준이라고 한다. 데브 서버에 올라가는 프로필이라 한다.

객치지향에 대한 짧은 생각

객체지향을 구현측면에서 생각해보면 타입하나에 여러 구현체들을 동적으로 선택가능하게 하는 것.

하나의 타입이 여러가지 동작을 할 수 있도록 하는 것. 추상화된 객체의 여러가지 구현들을 런타임에 결정하는 것.

하나의 추상화된 행위의 결과가 계속 달라지는 것.

02. 09 ~ 16

인턴3

프로젝트 마무리

콜드스타트만 마무리하고 발표준비를 시작했다. 발표를 하며 제대로 안 맞는 부분이나 별로라고 생각되는 부분은 리팩토링을 진행했다. 버그도 찾았다.

발표준비를 하다보니 양을 줄이는게 문제였다. 지금까지 한 것들을 되돌아보는 느낌으로 준비했다.

배치?

DB는 업데이트 쿼리가 답이었다. 배치가 필요없는 작업인지 생각해봐야한다. 필요하다면 인덱스를 걸던 하면 되는 문제일 것 같다. 문제는 건수가 너무 많아질때인데, 그 정도면 파티셔닝 같은 방법으로 풀어야 하지 않을까 싶다.

속도를 측정해보고 있는데, 효과적인 방법을 찾으면 글을 써봐야겠다.

면접

전환 면접을 봤다. 복기를 해보긴 했는데, 잘 모르겠다. 걸리는 부분이 조금 있다. 고통스러운 한 주가 될 것 같다. ㅋㅋ

스쿱

다시 재개하기로 했다. 4주정도 잡고 진행하려하는데, 빠르게 쳐내는걸 목표로 해야겠다.

02.17 ~ 18

인턴4

프로젝트를 코틀린으로 마이그레이션 하는 추가 과제를 받았다. 새로운 프로젝트는 코틀린으로 시작하고 기존 프로젝트도 마이그레이션 할 예정이라고 한다.

이렇게 바로 사용할 줄은 몰랐는데 잘 됐다.

다른 팀원에게 쿠버네티스를 학습하는 것도 추천 받았는데, 일단 도커먼저 다시 봤다. 도커 컴포즈에서 막히는 부분이 생겨 시간을 많이 쏟았다.

정대화
DaeHwa_Jeong@outlook.com

Powered with by Gatsby 2.0