전체 글

전체 글

    시스템 로그 페이지 조회 성능 최적화

    개발 과정에서 성능 최적화는 매우 중요한 과제 중 하나입니다. 특히, 대용량 데이터 처리 시, 데이터 조회 성능은 사용자 경험에 직접적인 영향을 미칩니다. 본 포스트에서는 시스템 로그 페이지 조회 성능을 개선한 사례를 공유하고자 합니다. 문제 상황 라이브 환경에서 시스템 로그 페이지 조회 시, 약 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..

    무중단 배포

    무중단 배포 왜 해야할까? 현재 운영중인, 서비스의 신 기능 추가로 인해 버전이 업그레이드 되고 새로운 파일을 배포해야할 때, 다운 타임이 발생하게 됩니다 다운타임이 발생하는 배포 방식을 중단 배포라고 하며, 이 시간동안은 유저가 서비스를 이용할 수 없기에 유저에게 지속적으로 서비스를 제공하기 위해 무중단 배포 방식을 고려해봐야 합니다 무중단 배포 무중단 배포는 서비스가 중단되지 않은 상태(zero-downtime)로, 새로운 버전을 사용자들에게 배포하는 것을 의미합니다 무중단 배포를 하기 위해서는 최소 서버가 2대 이상 확보되어야 합니다. 무중단 배포의 종류 롤링(Rolling) 배포 현재 운영중인 서비스의 트래픽을 점진적으로 구버전에서 새로운 버전으로 옮기는 방식 입니다. 점진적으로 트래픽을 옮기는 ..

    데이터베이스 선택에 대한 고민

    데이터베이스를 선택할 때, 주로 나오는 내용은 RDBMS 와 NoSQL 둘 중 어느것을 선택할지에 대한 고민이 자주 나옵니다. NoSQL과 RDBMS 각각의 장단점에 대해 알아보고, 언제 사용하는게 적합할지에 대해 알아보겠습니다. Releational DataBase Order id product_id count ordered_at user_id ... ... ... ... ... ... .. ... .. ... 위와 같이 주문에 대한 정보를 담고 있는 Order라는 테이블이 있다고 가정하겠습니다. 만약 Order라는 테이블에서 주문 상태를 저장하는 order_status 컬럼이 추가되었다고 가정하겠습니다. id product_id count ordered_at user_id order_status ....