All Posts

  • Published on
    내가 좋아하는 저자 Adam Grant의 새 책이 나와서 읽게 되었다. 성장 마인드셋을 믿지만, 성장이 정체되고 있다라는 불안감에 있는 나에게 큰 용기를 주는 책이었다. 다시 한번 나의 목표에 도달하기 위해서 내가 할 수 있는 시도들을 생각해보고, 조금씩이라도 어제보다 더 나아지는 오늘에 집중하자고 다짐했다. 지금까지 나의 성장들이 가파르게 우상향 한 것은 아니였다. 때로는 역석장 하는 것 같아서 불안하고 좌절했다. 하지만 전체 과정에서 컴포트 존을 나와 계속 도전을 해온 점과 성장하기 위해서 포기하지 않고 계속 노력해 온 점에 대해서 스스로 칭찬해주었다. 그리고 이 책을 통해서 아들의 성장과정에서 어떠한 것을 중요하게 생각하고 가르쳐줘야할지 고민해볼 수 있었다. 주도적으로 계속해서 배울 수 있는 힘을 배우고, 그 과정에서 재미도 느낄 수 있었으면 좋겠다
  • Published on
    GPTCache를 사용하여 LLM에 질의를 할 때, 의미적으로 유사한 질문에 대해서는 Cache에 저장된 답변 값을 사용할 수 있도록 구성해보았다. Langchain과 Langserve를 통해서 간단히 Cache를 제공하는 API server를 만들 수 있었다. Default로 설정된 GPTCache에서 의미적으로 충분히 다른 질의에 대해서도 기존 Cache값을 사용하는 False Positive 결과를 받았다. 그래서 Default로 사용된 Similarity Evaluation 방법이 어떻게 동작되는지 살펴보았다. 이해를 바탕으로 Threshold값을 변경하여 발생했던 False Positive case를 제거해보았다. 앞으로 Cache hit rate, Accuracy, Speed를 고려하여 서비스에 적합한 Evaluation 방법을 선택하기 위해서는 Default 말고 다른 옵션들도 확인할 필요가 있겠다.
  • Published on
    OpenTelemetry collector를 사용하여 tracing과 logging을 같이 하는 것을 검토하였다. Kubernetes와 멀어져 있던 사이에 OpenTelemetry 커뮤니티가 엄청나게 성장한 것을 깨닫게 되었다. Log에 traceID를 남기고 그걸로 Tracing 정보를 볼 수 있도록 구성했고, Grafana 하나에서 통합적으로 볼 수 있도록 Loki와 Tempo를 Exporter로 사용했다. 아직 Python과 Nodejs에서는 Log쪽의 상태는 Development나 Experimental이기 때문에, receiver에서 filelog를 사용하여 Kubernetes log file을 fluentbit처럼 tail해서 가져오고 traceId를 log에 넣어주는 instrument libary를 사용했다.
  • Published on
    Vault의 secret engine을 사용하여 네이버 클라우드의 임시 인증키를 발행하고 싶었다. 네이버클라우드는 AWS, Azure처럼 builtin plugin으로 제공하지 않는다. 하지만 custom secret engine을 vault framework SDK를 통해서 쉽게 만들 수 있다. 네이버 클라우드에서 STS API를 제공하기 때문에, custom secret engine을 통해서 임시 인증키를 발행하는 것을 테스트 해보게 되었다. 처음에 구조를 이해하는데 좀 시간이 걸렸지만, Vault Tutorial에서 친절하게 설명하고 있어서 비교적 쉽게 만들 수 있었다.
  • Published on
    GitOps에서 Secret을 어떻게 관리할지 고민을 하였고, 개발자들의 인지부하를 줄이기 위해서 Vault UI로 자신의 앱의 비밀값을 관리하는 것이 제일 효율적이라는 판단을 했다. Vault secrets operator가 GA로 공유가 되었고, Secrets Store CSI나 External secrets 프로젝트보다 깔끔한 방식이라는 생각이 들었다. Vault secrets operator의 CRD로 vault secret과 kubernetes secret의 sync를 맞추고, reloader로 secret이 변경되었을 때 다시 pod를 배포하는 것을 테스트해보았다.
  • Published on
    AWS Cloudformation에서 Secret Manager의 값을 참조하도록 할 수 있다. AWS SAM을 사용하여 배포된 Lambda의 환경변수가 Secret Manager의 값을 참조하는 경우가 있었다. 그런데 Secret manager의 값을 변경하여 다시 배포하여도 변경된 값이 Lambda 환경변수에 반영이 되지 않았다.🧐 AWS SAM의 리포에 관련된 Issue가 있었고, 제안한 해결방법을 적용하였다. 살짝 삽질을 했기 때문에 기록을 남겨 본다.🤪
  • Published on
    Kubernetes cluster에서 Nginx로 허용 가능한 IP를 설정하고 싶었다. 간단하게 끝날 줄 알았던 작업은 또다른 삽질기가 되었다.😭 Kubernetes에서 SNAT이 되는 과정을 이해하고 externalTrafficPolicy를 Local로 설정했다. 그리고 External Load balancer에서는 client IP를 전달하기 위해서 Proxy Protocol와 같은 것을 설정하고, Nginx에서 그 Proxy protocol로 전달된 IP address로 Access control을 할 수 있도록 설정하였다.
  • Published on
    CNAME flattening이 어떻게 작동하고, 왜 사용하게 되었는지 이해하게 되었다.
  • Published on
    책 "유난한 도전"를 시간 가는 줄 모르고 재미있게 읽었다. 토스의 초기부터 최근까지 겪었던 우여곡절과 그 속에서 만들어낸 성공 스토리들을 읽으면서, 내 가슴에 뭔가 꿈틀꿈틀 거리는 열정과 흥분을 느꼈다. 또 다시 주도적인 변화를 만들어내고 싶다는 열정을 가지게 된 것과 동시에 나는 그러한 치열함과 멋진 커리어를 가지지 못했다는 불안감을 가지게 되었다. 책 "무브업"은 나의 커리어적인 불암감에 위에 양념을 살짝 더 뿌려줬다. 하지만 그래도 이제는 그러한 불안감에 압도당하지 않고, 내가 주어진 하루에서 내가 할 수 있는 최선을 고민하는 할 수 있다.