6초에서 0.2초로: 레거시 API 성능 개선 이야기
·
프로그래밍
서비스를 운영하다 보면 늘 예상치 못한 문제가 튀어나오곤 합니다. 이번엔 문서 및 카테고리 이동 기능이 발목을 잡았습니다.실제로 고객들이 자주 사용하는 기능이여서, 해당 기능으로 고객들은 작성해놓은 문서를 새로운 카테고리나, 폴더등으로 옮기곤 합니다. 그런데 고객들의 사용 빈도만큼이나 "너무 느려요", "이동기능 로딩만 5초 넘게 걸려요" 같은 불만도 많았습니다.그래서 실제로 테스트를 해보니 응답 시간이 평균 6초에 달했습니다. 사용자는 6초 동안 화면에서 로딩 메시지를 봐야 하고, 작업 도중 페이지를 닫아버리는 경우도 있었습니다.따라서 해당 기능에 대해 어떤 부분에서 성능 문제가 발생했는지, 파악하고 개선하자는 목표로 작업을 진행했습니다.6초의 로딩 시간, 문제는 반복되는 save()호출이었다문제의 원..
번역 API 개선기: 번역 가능 언어 추가 요청을 받으며 배운 점
·
프로그래밍
업무를 하다 보면 늘 새로운 문제를 만납니다. 이번에는 번역 관련 API에서 번역 가능 언어를 추가해 달라는 요청이 왔습니다. 처음에는 단순히 번역 가능 언어 코드를 추가하고 끝낼 작업처럼 보였지만, 막상 작업을 시작하면서 기존 코드에서 숨겨진 문제를 발견하게 되었습니다. 그리고 그 문제를 개선하는 과정에서 많은 것을 배웠습니다. 이번 글에서는 그 경험을 나누고자 합니다. 1. 문제의 시작: 느린 번역 처리 시간 “번역 가능 언어 목록에 새로운 언어를 추가해 주세요”라는 요청을 받았습니다. 요청 자체는 간단했지만, 테스트를 진행하던 중 의외의 문제가 드러났습니다. 번역 API를 호출할 때 번역 처리 시간이 너무 오래 걸렸던 것입니다. 약 4,500자의 텍스트를 번역하는 데 17초가 걸렸죠. “왜 이렇게 ..
시스템 로그 페이지 조회 성능 최적화
·
프로그래밍
개발 과정에서 성능 최적화는 매우 중요한 과제 중 하나입니다. 특히, 대용량 데이터 처리 시, 데이터 조회 성능은 사용자 경험에 직접적인 영향을 미칩니다. 본 포스트에서는 시스템 로그 페이지 조회 성능을 개선한 사례를 공유하고자 합니다. 문제 상황 라이브 환경에서 시스템 로그 페이지 조회 시, 약 8.10초가 소요되는 문제가 발생했습니다. 조회 대상 데이터는 약 76,040건이었습니다. 문제 분석 ListView를 사용하는 클래스에서 전체 시스템 로그 데이터 갯수를 조회하는 과정에서 성능 저하가 발생했습니다. 특히, get_context_data 메서드에서 len(self.get_queryset())을 호출할 때 전체 테이블 데이터에 대한 조회 쿼리가 발생했습니다. def get_context_data(..
주니어 개발자가 말아주는 간식 구매 요청 자동화
·
프로그래밍/파이썬
사용 기술 Slack API Slack API를 사용하여 간단한 명령어, 예를 들어 /간식구매요청 과 같은 것들을 처리합니다. 이는 사용자가 Slack을 통해 쉽게 요청을 할 수 있게 해줍니다. AWS Lambda AWS Lambda는 이러한 Slack 명령어에 대한 반응을 처리하는 서버의 역할을 합니다. 우리는 많은 종류의 요청을 처리할 필요가 없기 때문에, 간단하고 효율적인 AWS Lambda를 선택했습니다. AWS API Gateway AWS ApiGateway는 Lambda와 연결되어, 사용자의 요청을 Lambda로 전달하는 역할을 합니다. 이를 통해 사용자의 요청을 쉽게 처리할 수 있습니다. 추가적으로, 구글 스프레드 시트를 조작하거나 웹에서 정보를 수집하기 위해 파이썬의 gspread 패키지와..
2023년, 나의 한 해를 돌아보며: 성장과 변화의 시간
·
프로그래밍/회고
서론: 2023년을 시작하며 전 직장을 퇴사하고 본격적으로 학습에 집중하기로 마음먹은 시기였습니다. F-LAB 멘토링 과정을 병행하며 백엔드 개발자로서 큰 성장을 이룰 수 있었습니다. (이와 관련한 자세한 내용은 제가 작성한 'F-LAB 후기' 글을 참고해주세요.) 또한 2023년은 성장뿐만 아니라, 인간 관계, 자기 사랑, 운동 등 육체적, 정신적 측면에서 의미 있는 한 해였습니다. 1. F-Lab 자바 백엔드 과정에서 멘토로서의 역할 수행: F-LAB 자바 백엔드 과정을 수료하며 많은 것을 배울 수 있었습니다. 자바 백엔드에 국한된 지식뿐만 아니라, 어떤 언어나 프레임워크에도 적용할 수 있는 폭넓은 지식을 얻었습니다. 현업에서의 다양한 고민도 함께 학습할 수 있었고, 기술적 성장뿐만 아..
HTML 텍스트 처리과정에서 발생하는 공백발생문제해결
·
프로그래밍/파이썬
문제 상황 최근 회사에서 HTML 기반 텍스트 편집기를 사용하던 중, 텍스트에 색상을 적용했을 때 발생하는 불필요한 공백 문제를 경험했습니다. 이는 특히 텍스트 편집기의 특정 플러그인(텍스트 color 등)을 사용할 때 두드러졌습니다. 이러한 문제는 일반적으로 HTML 편집기의 내부 구현이나 CSS 스타일링과 관련이 있을 수 있습니다. 그렇기에 저 또한 처음에는 CSS를 통해 이 문제를 해결하려 했으나, 이 방법은 긴 텍스트에서 레이아웃이 깨지는 새로운 문제를 야기했습니다. 이를 통해 문제의 원인이 HTML이나 CSS 자체가 아니라, 원본 텍스트에 삽입된 불필요한 공백에서 비롯되었음을 파악했습니다. 해결 방법을 찾기 위해 다양한 디버깅 과정을 거쳤고, 특히 문자열 인코딩 함수의 사용 방법에 주목했습니다...
F-Lab 자바 백엔드 코스 멘토링 후기
·
프로그래밍
소개 안녕하세요! 2022년 10월부터 2023년 1월까지 F-Lab 자바 백엔드 멘토링 과정을 수료한 simgee입니다 :) 이번글을 통해 F-Lab 멘토링을 통해 깨달은 점과 공유드리고 싶은 내용에 대해 작성해보려 합니다. 경험과 성장 저는 멘토링 이전에 내가 학습하는 방향이 맞는지 제대로 성장하고 있는지 의문을 가지고 있었습니다. 그러던 와중 에프랩 멘토링 과정을 알게 되었고, 스스로 학습할 수 있는 개발자로 성장할 수 있는 기회라 생각해 신청하게 되었습니다. 그렇다면 어떤 부분에서 성장을 느꼈는가? 라는게 가장 궁금하실 텐데 다른 무엇보다 제가 작성하는 코드와, 아키텍처적 의사결정 사용 기술에 대한 고민 등 여러 부분에서 저의 생각을 녹여낼 수 있는 능력을 기를 수 있었습니다. 예를 들어 인증과 ..
MSW?
·
프로그래밍
개요 프론트엔드와 백엔드를 병렬로 개발할 때, 백엔드 API가 아직 완성되지 않아 프론트엔드 개발이 진행되기 어려운 상황이 발생할 수도 있습니다. 이럴 때 MSW(Mock-Service-Worker)를 활용하면 프론트엔드 개발을 용이하게 할 수 있습니다. MSW란? MSW는 프론트엔드에서 가상의 서버를 생성하여 실제 백엔드와의 통신을 모방하게 해주는 라이브러리입니다. 이를 통해 백엔드가 아직 개발 중일 때도 프론트엔드 개발을 원활하게 진행할 수 있습니다. 프로젝트에서 MSW를 적용한 상황 사용자 회원가입 시, 이메일 중복여부를 체크해야합니다. 이때 기존에 존재하는 이메일인지 체크하기 위해서는 백엔드 서버 API쪽에 요청을 보내 확인을 해야 합니다. MSW를 이용해 이런 상황에서 백엔드쪽 응답을 Mocki..