"대화"는 위키에 따르면 마주 대하여 이야기를 주고받는 것을 뜻한다. 우리는 살면서 다양한 갈등 상황과 마주하게 된다. 그러나 정작 대화를 나누는 과정에서는 대화의 정의처럼 서로의 마음이나 욕구를 진심으로 들여다보며 이야기하지 못하는 경우가 많다. 특히 가장 빈번하게 겪는 갈등은 대화 방식에서 비롯된다.상대방의 의견은 듣지 않고 자기 의견만 고집하는 형태상대방이 싫어할까 두려워 자신의 의견을 표현하지 않는 형태대화 자체가 두려워 아예 피하는 형태나 또한 지금까지 예시로 든 모든 갈등 상황을 경험했다. 나 자신일 수도 있고, 타인일 수도 있다. 작은 오해에서 비롯된 다툼들로 인해 인간관계에서 아쉬움을 느끼면서 우리는 대화를 더 잘하는 법을 발전시키게 된다. 그리고 나 역시 앞으로 다양한 상황과 경험을 겪으..
배경최근 사내 OpenAPI에 Rate Limiter를 적용하면서, 분산 환경에서 가장 구현이 간편한 Fixed Window Rate Limiter를 설계하고 도입하였습니다. Rate Limiter에는 여러 방식이 존재하는데, 이번 기회를 통해 각 방식의 개념과 특징을 정리하고자 합니다.Rate Limiter AlgorithmToken BucketToken Bucket은 일정 개수의 토큰을 저장하는 버킷(Bucket)을 이용하여 요청을 제어하는 알고리즘입니다. API 요청을 처리하려면 버킷에 남아 있는 토큰이 필요하며, 토큰이 모두 소진되면 추가 요청은 제한됩니다.동작 방식토큰 생성 방식토큰은 1 / 제한 요청량을 단위로 생성됩니다. 예를 들어서, 1분당 10개를 제한한다고 하면 6초에 1개씩 생성합니다..
회사 문제를 해결하기 위해 머릿속으로 어떻게 해결해야 할지 계속 생각을 하던 2025년 2월 16일 오전, 눈 내리는 겨울 아침이었다. 생각을 머리 속에 담아두며 길어진 머리를 정리하기 위해 예약 시간에 정확하게 도착하거나 조금 늦을 수도 있는 그런 시간 여유롭게 나왔으면 어땠을까 하며 미용실로 발걸음을 옮겼다. 다행스럽게도 제 시간에 도착하여 미용실 문을 열고 들어서자, 처음 뵙는 인턴분이 긍정적인 목소리와함께 안내를 도와주셨다. 머리를 정리하기 이전, 인턴 분은 머리를 감겨주기 시작했다. 고객이 불편함을 느끼지 않을 수 있도록 거친 움직임 없이 옷에 물이 스며들지 않도록 세심한 손길 하나 하나에서 부드러움을 느낄 수 있었다. 원래도 배려심이 많은 분이었을까, 아니면 아직 인턴 생활을 한지 얼마 되지..
배경사내 OpenAPI에 RateLimiter를 추가하면서 테스트를 강화하고 회귀 오류를 방지하기 위해 철저한 검증을 진행했습니다. 그럼에도 불구하고 예상치 못한 장애가 발생했습니다.회귀 오류를 방지하기 위해서 테스트 코드를 강화했음에도 불구하고 테스트에서 장애가 검출되지 않는 이유는 무엇이었을까요?결론부터 말씀을 드리자면, 사내에서는 OpenAPI 요청 서버와 인증 서버를 분리하여 운영하고 있는데, 테스트 환경에서 네트워크 I/O 발생 부분을 Mocking 처리한 것이 원인이었습니다. 그리고, 실제 디버깅을 하면서 문제를 추적하는 과정에서 FeignClient의 @SpringQueryMap을 사용한 특정 요청이 실패한다는 사실을 발견했습니다.개발 환경Java Version : 14Spring Boot ..
러닝을 시작하게 된 계기개발자라는 직업을 택하고, 개발자가 된 지금도 개발자가 되기 이전에도 귀가 닳도록 들었던 조언이 있다."개발자로서 롱런하려면 운동을 꾸준히 해야 합니다. 나중에는 몸이 아파서 정말 못 할 수도 있어요."평소에도 종종 공부를 하거나, 업무를 하는 경우에 적은 통증이 있었던 나는 운동의 필요성을 느끼게 되었고, 사무직은 신체 활동이 적어 따로 시간을 내어 체력을 관리해야 한다는 점도 공감이 갔다. 그래서 처음엔 PT와 필라테스를 등록하여 배우며 운동을 시작했다. 혼자서 해볼 수도 있었지만, 유연성과 자세의 문제인지 운동 이후에 적지 않게 통증이 찾아오는 과정이 수반되었다. 근육이 성장하는 통증이 아닌 잘못 된 부분에 오는 통증 말이다. 하지만 심폐 지구력을 기르는 운동은 여전히 쉽지 ..
서론데이터 통신 비용 절감의 필요성안녕하세요. 최근에 환율이 올라가게 되면서 자연스럽게 서버의 지출 비용이 늘어나게 되었습니다. 아래 사진은 최근 6개월간의 환율 변동입니다.회사에서는 불필요한 비용 지출이 없는지 점검하는 시간을 가졌습니다. 이 과정에서 데이터 전송 비용에서 이상치 데이터가 발견되었고, 해당 원인을 분석하고 개선하는 업무를 맡게 되었습니다. 이번 글에서는 그 과정과 해결 방안을 공유하고자 합니다.비용이 발생하는 주요 원인클라우드 비용을 추적하기 위해 메가존에서 제공하는 Hyperbilling 서비스를 사용하고 있습니다. 해당 서비스에서 특정 리소스의 Out 대비 비용이 유독 높게 발생하고 있음을 확인했습니다.특히 비용이 발생하는 카테고리는 APN2-DataTransfer-Out-Bytes..
안녕하세요. 이번 글쓰기에서는 트렌비의 카탈로그 조회 성능 최적화 이슈를 해결과정을 공유하는 글을 작성하고자 합니다.배경트렌비의 카탈로그 도메인의 프로젝트는 다음과 같은 기술 스택을 기반으로 개발되었습니다.Kotlin + Spring Boot 2.7.6QueryDSL 5.0.0Hibernate 5.6.14PostgreSQL 14.3문제상황트렌비에서는 2024년 2분기에 상품에 대한 카탈로그를 더 많이 생성하고, 많이 묶어 바로 시세를 제공하여 고객들에게 정확한 가격 비교와 바로 시세 데이터를 제공하고자 하는 목적이 있었습니다. 그 과정에서 카탈로그의 수가 증가하게 되었고 어느 순간 카탈로그 어드민 페이지가 전반적으로 성능이 떨어지는 모습을 볼 수 있었고 운영 쪽에서도 많은 인입이 들어왔습니다.성능이 병목..
어느덧 2024년이 저물어 간다. 이 짧은 시간 동안 나는 얼마나 성장했을까? 어떤 일들이 나를 스쳐 갔는지 돌아볼 필요가 있다고 느꼈다. 그래서 인프런 회고 밋업에 참가해 도움을 받기도 했다."산을 오를 때 경치 대신 앞만 보고 걷다 보면 정말 아름다운 순간들을 놓칠 수 있다. 나의 올해는 얼마나 아름다웠을까? 혹은 나는 앞만 보고 달리지는 않았을까?"이를 돌아보고자 회고를 작성하게 되었다.1월프로그래머스 데브코스의 졸업 직전과 졸업 이후, 지속적으로 이력서를 수정하며 바쁜 한 달을 보냈다.당시 노션을 활용해 이력서를 제출하는 방식이 유행했는데, 매니저님의 조언이 큰 도움이 되었다.“이력서는 문서다. 아름답고 화려함보다 중요한 건, 면접관이 평가하고자 하는 내용을 명확하게 담아내는 것이다. 문서 안에 ..