DEV/INSIGHT 5

소프트웨어 장인 정신 - 커뮤니케이션 1

들어가며 ‘소프트웨어 장인 정신’에 대한 글을 적어 보려고 합니다. 가장 먼저 주제를 좁혀보겠습니다. ‘소프트웨어 장인이라면 이런 이런 습관을 가지고 있어야 한다’는 글은 아닙니다. 대신에 ‘소프트웨어 장인이 되어가는 과정에서 경력 3년을 가진 개발자 장환석의 정신 상태’라는 표현이 좋겠습니다. 소프트웨어 장인 정신이라는 대주제에 아래, 첫 번째 글은 ‘커뮤니케이션’에 대해서 두 번째 글은 ‘기술’에 대해서 작성할 생각입니다. 커뮤니케이션에 대해서 먼저 이야기하는 이유는 ‘조직의 커뮤니케이션 구조가 소프트웨어의 구조에 영향을 미친다’는 말에 크게 공감하기 때문입니다. 경력 10년의 개발자가 되었을 때에는 한 조직을 ‘제대로’ 리딩할 수 있는 사람이 되고싶다는 생각을 합니다. 3년의 시간동안 보고 배웠던 ..

DEV/INSIGHT 2024.03.14

모니터링 데이터에는 LLM를 어떻게 붙여야할까?

1. 들어가며 알파고와 이세돌의 경기가 있었던 날이 2016년 3월이니, 벌써 거의 8년 전의 일입니다. 작년 2023년에는 GPT-4가 세상에 나왔습니다. 1년마다 정말 큰 변화를 맞이하고 있습니다. 모니터링 데이터 속에서 하루 하루를 살아가다보니 LLM의 흐름을 모니터링 데이터의 관점에서 생각해보게 되었습니다. 텍스트 데이터만 입력으로 받는 LLM을 모니터링 데이터에 어떻게 적용할 수 있을까요? 2. Elastic은 어떻게 했을까? 2.1. Vector DB 조금만 알아보기 Elastic Search는 내부적으로 Vector DB를 사용합니다. Elastic Master Class에서는 “Lucene을 세계 최고의 Vector DB로 만들겠다”고 선언하기도 했습니다. 그러면 이 Vector DB는 무..

DEV/INSIGHT 2024.01.02

COUNT와 Pagination, 필요없을 수 있습니다

데이터의 갯수가 정말 많을 때에 Pagination을 사용해서 데이터를 조회하곤합니다. 화면에 한 번에 조회할 수 있는 데이터의 갯수는 한정적이기 때문입니다. 아래 사진의 히트맵에서도 정상 트랜잭션의 갯수는 51402개, 에러 트랜잭션의 갯수는 305개입니다. 이러한 트랜잭션 데이터를 히트맵이 아니라 LIST로 표현할 때에는 Pagination을 적용한 화면으로 설계를 하곤합니다. 하지만 어떤 데이터가 가장 중요할까? 또는 첫 번째 페이지만으로 충분한 인사이트를 줄 수 있지 않을까?라고 접근하면 생각보다 쉽게 문제를 성능문제를 풀 수도 있습니다. 트랜잭션 데이터를 조회할 때의 주요 관심사는 주로 2가지입니다. 1. 정상이지만 느린 트랜잭션 2. 에러 트랜잭션 이 두가지 경우는 각각 아래의 필터 조건을 사..

DEV/INSIGHT 2023.09.24

어떤 기능을 먼저 만들어야할까?

저는 회사에서 로그 모니터링 서비스를 만들고 있습니다. 와탭의 로그 모니터링 서비스는 약 1년 9개월동안 성장해왔습니다. 감사하게도 로그 모니터링에 니즈가 있는 대형 고객사들를 비교적 빠른 시간 내에 만날 수 있었습니다. 게다가 On-Premise가 필요하다는 고객과 SaaS가 필요하다는 고객이 모두 있었으며, 자체적으로 로그 모니터링 시스템을 개발했던 회사와 모니터링 최대 경쟁사인 DataDog의 제품을 사용하던 고객도 있었습니다. 덕분에 최근 1년동안, 매우 많이 힘들기는 했지만, 로그 모니터링 서비스로서의 최소한의 기능은 갖추어졌다고 생각합니다. 며칠전 같이 로그 모니터링 서비스를 개발하는 동료분들과 경쟁사의 로그 모니터링 제품을 비교 분석해본 적이 있습니다. DataDog, Sumo Logic, ..

DEV/INSIGHT 2023.09.20

성능과 사용자 경험의 사이에서

저는 회사에서 로그 모니터링 서비스를 만들고 있습니다. 위의 화면에서 검색 조건은 content:*Exception*으로 입력되어 있습니다. 수집 된 로그 중에서 Exception이 포함된 로그를 조회하는 모습을 보여줍니다. 지정한 키워드가 포함되었는지 확인할 때에는 java.lang.String#startsWith(java.lang.String)을 사용합니다. 물론 이렇게 수집된 모든 로그에 대해서 FULL-SCAN을 하면 검색 속도도 안나오고 CPU도 많이 사용할 수 있습니다. 더 큰 문제는 지정한 검색 시간 안에 로그가 N개 있으면 N개의 문자열에 대해서 모두 startsWith 연산을 수행한다는 점입니다. RDBMS를 사용하는 환경이라면 Connection Pool을 오랫동안 점유하게 되고, Fi..

DEV/INSIGHT 2023.09.20