개요 본 포스트는 본인이 Azure DevOps를 이용하여 구축한 CI/CD 파이프라인의 성능을 개선한 내용을 정리한 것이다. 이슈 발생 우리는 Azure DevOps를 이용하여 CI/CD 파이프라인을 구축하고 있었다. 그러나, 최근 Azure DevOps 의 장애가 잦아지면서 기본 제공되는 Microsoft 호스팅 에이전트으로 구동되는 CI/CD 파이프라인이 실행되지 않거나, 기본으로 제공되는 스크립트 task 가 실행되지 않는 이슈가 발생했다. 또한 기본 제공되는 에이전트의 I/O 성능이 좋지 않아서인지, 테스트 수행 이후 …
개요 요구사항 시퀀스 다이어그램 구현 내용 이슈와 대응 속도 이슈 메세지 중복 발송 이슈 기타 이슈 결론 개요 본 포스트는 본인이 RCS 메시징 서비스 프로젝트를 진행하면서 구현한 내용을 정리한 것이다. 요구사항 RCS 챗봇 서버에서 사용자로부터 받은 메세지를 가공해서 응답을 보내는 서비스를 구현한다. 캠페인 메세지 대량 발송을 위해 비동기 메시지 전송 서비스를 구현한다. 발송량을 고려한 확장성 있는 서비스를 구현한다. 시퀀스 다이어그램 오더홉 = 테이블오더 구현 내용 서버 구성과 흐름은 위 다이어그램에서 설명한 것과 같다. …
개요 본론 초기 접근: 기본적인 검색 방법의 한계 임베딩 서치로의 전환 하이브리드 서치의 발견 외부 서비스 사용 고민 구현 과정의 어려움 성능 개선을 위한 노력 메타데이터 활용 최종 구현 예상치 못한 발견 결론 개요 나는 studiofy 라는 앱을 개발하고 있다. 이 앱은 음악 연습실을 찾는 사람들과 음악 연습실을 제공하는 사람들을 연결해주는 플랫폼이다. 이 앱에는 검색 기능이 필수적이었는데, 검색 기능을 구현하는 것은 생각보다 복잡한 과정이었다. 특히 한국어 검색에서 발생하는 문제들을 해결하기 위해 다양한 방법을 시도했고,…
개요 기존의 방식 gpt api 를 이용한 방식 개발 과정 결론 개요 우리 회사에는 비밀리에 사용되고있는 사내 챗봇이 있다. (사실 아직 개발중이라 공개하지 않았음) 최근 한가지 gpt api 로 개발된 기능이 있는데 그것은 회의실 현황을 확인하는 기능이다. 이 기능을 만들기까지의 과정을 간단하게 정리해보려고 한다. 기존의 방식 최근 LLM 이 급부상하기 전까지는 채팅으로 회의실 현황을 확인하는 기능을 만들기 위해서 자연어로 인풋을 받는다는것은 너무 복잡한 기능을 야기했기 때문에 정확한 인풋을 요구하는 방식으로 만들었어야 했다. …
개요 우리의 상황에 맞는 대처 electron nw.js 브라우저를 품은 프레임워크 자동 업데이터 결론 개요 우리는 매장에서 사용되는 POS 용 프로그램을 제작했다. 항상 그랬지만 우리는 스타트업에서 처음 시장의 반응을 확인하기 위해 빠르게 만들 필요가 있었다. 요구사항은 간단했다. windows xp 부터 windows 10 까지 모든 운영체제를 지원할 것. 시리얼 포트를 통해 영수증 출력이 가능할 것. 새로운 기능이 출시되면 각 영업점에서 알아서 업데이트가 가능하도록 할 것. 우리의 상황에 맞는 대처 요구사항을 충족하면서 가장…
개요 프로비저닝된 동시성 프로비저닝 오토스케일 프로비저닝 되지 않은 동시성 높이기 zappa keep warm 꼼수 마무리 개요 나는 요즘 zappa, serverless 등 wsgi 를 지원하는 프레임워크를 사용해서 api 서버를 자주 구성한다. 그 이유는 상대적으로 저렴한 비용때문인데 사용량에 따라 비용이 책정되기때문에 왠만큼 사용자가 들어오지 않는 서비스는 그야말로 무료에 가까운 비용을 내고 서비스하고있다. 그런데 aws 에서 제공하는 lambda 와 api gateway 를 사용해서 serverless 스택으로 서버를 구성…
개요 여러 환경이라는게 뭐에요? 왜 tox 를 사용하나요? 따라하기 전제 조건 tox 환경설정 github action 설정 마무리 개요 오늘은 이전 글에서 언급했던 여러 버전을 커버하는 라이브러리를 위한 테스팅 환경을 구성해보는 글을 쓰려고 합니다. tox 를 사용해서 여러 환경을 테스팅을 하고 github action 을 통해 커버리지를 보여주는 방법까지 소개하겠습니다. 이 글은 django-dynamodb-cache 에서 사용한 방법을 기준으로 합니다. 여러 환경이라는게 뭐에요? 예를 들면 이런겁니다. 는 현재 글 작성 시…
개요 여러 버전을 커버하는 라이브러리는 달랐다 그럼 어떻게 테스트하지? 하나의 환경, 동시에 도는 테스트 django cache framework 와의 호환성 마무리 개요 나는 오픈소스 생태계를 좋아하는데 그 이유는 투명하게 공개되기 때문에 누구나 쉽게(?) 참여할 수 있고 모두 함께 퀄리티를 높여나가는데 기여할 수 있기 때문이다. 그리고 내가 오픈소스 라이브러리들을 무료로 사용할 수 있는데에는 많은 개발자들의 헌신이 있었기 때문이라고 생각해서 받은 만큼 돌려주고자 노력하는 편이다. 작게는 오타 수정부터 문서, 기능 개발, 버그 …
개요 왜 SES 인가요? SES 사전 구성하기 from 도메인 설정하기 메일 전송 테스트하기 ses 운영 모드로 변경하기 이메일 인증 구현하기 1. 인증 코드 생성 2. 인증 코드 저장 3. 인증 코드 발송 4. 인증 코드 확인 마무리 개요 최근 사이드 프로젝트에서 회원가입용 이메일 인증을 구현할 일이 있어서 SES 로 구현한 경험을 공유합니다. 코드 설명은 기준으로 작성하였습니다. 왜 SES 인가요? 이메일을 발송하기 위한 솔루션들이 여러가지 존재합니다. 가장 원초적인 방법은 smtp 서버를 구축하는것입니다. 하지만 우리는 항…
개요 문제 확인 문제 발생 원인 찾기 잘못된 코드 배포? 문제 발생 재연 해결 방안 교훈 개요 이번 글은 운영중인 POS 클라이언트에서 발생했던 에러와 해결 방법을 기록하기 위한 글입니다. 문제 확인 우리는 아직도 높은 비중을 차지하고있는 windows xp 를 사용하는 매장의 pc 를 지원하는 POS 클라이언트를 만들기 위해서 + 의 조합을 사용하고 있었습니다. 어느 순간 부터 의 객체를 사용하는 부분이 작동하지 않는 문제를 확인했습니다. 문제 발생 원인 찾기 잘못된 코드 배포? 우선 우리는 문제의 원인을 찾기 위해 마지막…