부동산 공부 AI 스터디봇 만들기 (3) - 엘리스 클라우드에 배포
·
Homeprotector
서론부동산 질문에 답을 해주는 스터디 챗봇을 LangChain, FastAPI, Azure OpenAI를 사용해 구현해보았다. 이를 외부에서 사용하기 위해서는 배포하여 공용 URL을 통해 접근 가능하게 구성해야 한다. 배포 방법에는 AWS EC2에 도커 이미지로 만들어 도커 컨테이너로 직접 배포하거나 서버리스로 구축하는 방법도 있지만, 나는 엘리스 클라우드에 띄워보려고 한다. 엘리스 클라우드는 인스턴스 실행 환경을 VSCode로 설정할 수 있기 때문에 로컬에서 VSCode로 구현한 코드를 쉽게 사용할 수 있기 때문에 간편하다. https://elice.io/ko/products/cloud?gad_source=1&gad_campaignid=22534904810&gbraid=0AAAAAoizgMdLGZAwr..
Apache jmeter로 부하 테스트 해보기 (3) - Aggregate Report 응답 시간 소수점으로 확인하는 방법
·
Homeprotector
서론Apache jmeter로 부하 테스트를 진행하는데, Response Times가 계속 정수로만 값이 나와 정확한 시간을 알 수 없었다. 그래서 이를 해결하기 위해 여러 방법을 검색해서 해결하려고 노력하였으나 결국 실패하였다. 그 이유는 바로 GUI 환경에서는 소수점으로 나타내는 것이 불가능하였기 때문이다. 그러면 이 문제를 어떻게 해결하였을까? 해결 방법jmeter 실행 시 Non-GUI 환경으로 실행시키면서 결과값이 소수점으로 보이도록 html 대시보드를 생성하면 된다.jmeter -n -Jjmeter.save.saveservice.print_field_names=true -Jjmeter.save.saveservice.output_format=csv -Jjmeter.save.saveservice...
부동산 공부 AI 스터디봇 만들기 (3) - 가드레일 설정
·
Homeprotector
서론앞서 부동산 공부를 스스로 할 수 있는 스터디 챗봇을 LangChain + FastAPI + Azure OpenAI 를 통해 구현해보았다. 하지만 누군가가 와서 부동산 관련 질문이 아닌 개인적인 질문을 물어보게 된다면 토큰을 낭비하게 되는 것이다. 따라서 나는 이번 포스트를 통해 부동산 관련 질문에만 응답을 하도록 가드레일 설정을 진행해볼 것이다. 그렇다면 가드레일이란 무엇일까??가드레일이란?가드레일은 사용자 입력 혹은 모델 호출 단계에서 허용할 질문인지 / 허용할 응답인지를 사전에 검증하거나, 위험 · 비용이 큰 호출을 차단·제한하는 일련의 로직을 말한다.목적- 비용 절감: 불필요한 토큰 소모를 막아 예상치 못한 과금 폭증을 방지한다.- 품질 보증: 모델이 비의도적인 주제(부동산 외 일반 잡담 등)..
Apache jmeter로 부하 테스트 해보기 (1)
·
Homeprotector
서론 나는 개발을 할 때 단순 API 구현에서 끝나는 것이 아닌, 성능 테스트를 통해 병목 현상을 발견하고 이를 해결해 성능을 개선하려고 노력한다. 이를 통해 성능 개선을 많이 이뤄냈기 때문에 다른 개발자분들께도 공유해보면 좋을 것 같아 블로그에 정리하게 되었다. 이 성능 테스트에는 Apache jmeter, Grafana Labs에서 만든 k6 등이 있지만 나는 주로 jmeter를 사용한다. 그렇다면 jmeter를 사용하는 이유가 뭘까?Apache jmeter를 선택한 이유- jmeter는 설치와 사용이 간단하며 GUI 기반 인터페이스로 테스트 케이스를 쉽게 작성하고 실행할 수 있도록 지원한다.- 오랜 기간 유지보수되고 풍부한 커뮤니티와 레퍼런스를 보유하여 사용자가 문제 해결을 위해 다양한 경험을 공유..
프로젝트에서 어떤 DB를 사용할까? (3) : MongoDB, Elasticsearch - CDC Pipeline
·
Homeprotector
서론이번 프로젝트에는 DB를 1개만 쓰는 것이 아닌, SourceDB와 TargetDB로 데이터베이스를 나누고, CDC 파이프라인을 구성하였다. 그렇다면 왜 굳이 DB를 나누는 것일까? 그 이유는 바로 고가용성 때문이다. 이에 대해서 더 자세하게 알아보자사용 이유위에서 말했듯이, SourceDB와 TargetDB를 분리하는 것은 고가용성(High Availability) 확보가 핵심 목적이다.고가용성만약 단일 데이터베이스를 사용한다면 분석 쿼리나 대용량 리포팅 작업이 운영 서비스의 성능을 저하시키거나 심지어 다운타임을 유발할 수 있지만, CDC 파이프라인을 통해 분리하면 운영 시스템은 24시간 안정적으로 서비스하면서 별도 시스템에서는 실시간으로 동기화된 데이터를 활용할 수 있어 전체 시스템의 고가용성을 ..
프로젝트에서 어떤 DB를 사용할까? (2)
·
Homeprotector
서론이전 포스트에서 여러 데이터베이스들의 차이점과 각 DB의 장단점에 대해서 알아보았다. 각 DB의 특성을 고려하여 이번 프로젝트에서 사용하기로 한 DB는 MongoDB와 Elasticsearch이다. 왜 이 두 데이터베이스를 선택했는지 알아보도록 하자.선택 이유MongoDBMongoDB는 저번 글에서도 알아봤듯이, 문서 지향적 특성과 스키마 유연성을 통해 빠른 개발과 효율적인 데이터 처리를 가능하게 한다.특히 문서 특성상 유연한 스키마 구조를 가질 수 있기 때문에 커뮤니티, 퀴즈, 챗봇 로그와 같이 구조가 다양하고 변화 가능성이 높은 데이터를 다루는 현재 프로젝트에서 RDB 대비 명확한 장점을 가진다. 배열, 중첩 구조 저장이 용이하며, 향후 기능 확장 시 스키마 변경 없이 새로운 필드를 추가할 수 있..