전체 글 63

Locust로 부하 테스트 해보기

팀프로젝트에서는 Artillery로 부하 테스트를 진행했는데, Flask로 백엔드 서버를 만들었으니, Locust로 부하테스트를 해봐야겠다는 생각이 들었다. 아틸러리는 하나의 시나리오를 짜두고 실행하고나서 결과를 봤다면, 로커스트는 유저의 클래스를 만들고 테스트는 locust 대쉬보드에서 유연하게, 그리고 실시간으로 지켜볼 수 있는 차이가 있어 보인다. 아틸러리도 비슷한 기능을 제공할지 모르겠으나... 부하테스트는 할때마다 재밌다. 시험을 치는 느낌? 아마 리스크가 없는 서버니까 그런 거겠지만, 시뮬레이션 게임을 하는 재미와 비슷한 듯. 지난 글에서 만든 Synology Nas에 올린 백엔드 서버에 부하테스트를 진행했다. 시나리오는, 로그인 후 전체 thumbnail 요청을 1, 개별 사이트의 사진과 영..

Flask 백엔드 서버 Synology NAS 배포기

간단한 웹서비스 백엔드 서버를 만들일이 있는데 한동안 자바스크립트로만 코딩하다보니 이번에는 Flask로 가볍고 빠르게 만들고 싶었다. 주요 기능은 주기적인 이미지 thumbnail 변환과 디렉토리의 파일 수 및 txt 파일 값 읽고 처리하기 이미지 파일과 짧은 영상 파일을 client 호출에 따라 전달 로그인, 회원가입, 가입승인, 사용자 권한 설정 및 사용자 삭제 등과 같은 기본적인 CRUD 1번 기능은 APScheduler 라이브러리를 사용해서 cron job을 만들고, PIL을 사용해서 thumbnail 만드는 작업이다. cron은 os에서 세팅하는 것이 더 안정적이고 서버 상태와 독립적으로 실행되는 장점이 있겠지만, Synology NAS의 os에서 실행하는 것은 가급적 배제하는 것이 NAS 안정..

Python/Flask 2023.08.23

NestJS에서 TypeORM Repository layer 사용하기

NestJS를 인프런 무료 강의를 보면서 공부하고 있는데... TypeORM 버전이 달라 안되는 이슈가 발생했다. EntityRepository 데코레이터가 TypeORM 0.3.0 부터 deprecate 된 것. 해결하는 방법은 여기에서 찾을 수 있었다. 자세한 원리까지 나름 친절하게 되어있으니, 괜찮아 보이는데, 파일 경로나 자세한 내용이 보기 어려워 실제로는 여기를 참조했다. TypeORM 깃헙 레포에서 왜 없앴냐는 이유를 찾고 싶었으나, 답변이 달리진 않아보였다. 글타래를 보니, NestJS 깃헙 레포에 관련 이슈가 클로즈드 된 글을 연결할 수 있었고, 위 글을 통해 해결했다는 글을 찾았다. 그런데 다 적용해보고 나서 생각해보니... TypeORM 0.2.x 를 0.3.x로 업그레이드 하는게 아니..

23, 23주차

22~23주차 이번에도 두 주 간 프론트엔드와 백엔드 몇명이 모여 클론 프로젝트를 진행했다. 클론 프로젝트라고 해서 서비스 되고 있는 것을 완전히 따라하는 것은 아니지만 거의 비슷하게 구현하는 것을 목표로... 1. ChapGPT(짭GPT) ChatGPT 다른조는 유투브, 블라인드, 익스피디아 등 여러 사이트를 클론했고 우리는 ChatGPT를 클론하기로 했다. 이름하야 ChapGPT(짭GPT). ㅎㅎ 간단하게 생긴 투박한 공대감성 너낌의 ChatGPT도 알고보면 자잘한 기능이 많다. 지금와서 100% 똑같게 구현하려면 해야할 일이 한두가지가 아니지만 기획 당시에는 별거 없겠지 했던 것도 사실이다. (사실 쉬워보여서 제안했고, 다른 사이트보다는 거의 완성도있고 대부분의 기능을 구현한 것은 사실이지만, 쉬운..

daily 2023.06.08

Dockerization [3] - Synology NAS에 docker로 웹페이지 배포하기

docker이미지를 만들었으니 다양한 환경에 배포해서 docker의 편리함을 누려보자는 차원으로, 이번에는 집에서 놀고 있는 Synology NAS에 docker로 API 서버를 올려봤다. Synology NAS는 여러 기능을 제공하는데, 그 자체로 리눅스 웹서버, 웹스토리지 등 다양한 방식으로 활용이 가능한 장점이 있다. 사실 다른 NAS보다 비싼 가격을 가진 이유를 생각하면 그런 편리한 기능들이 있기 때문이 아닐까 싶다. 우선 내가 진행한 환경은, 모델: DS220+, DSM: 7.1.1 이다. 1. Synology NAS에서 패키지 설치 패키지 센터에서 Docker와 Web Station을 설치하고 Docker 이미지 파일을 NAS에 넣어주면 준비는 완료되는데, 2. Docker 이미지 파일 넣기 ..

daily 2023.06.06

Dockerization [2] - awsebcli로 deploy할 때 알아야 할 세 가지

이번에는 awsebcli 를 통해서 배포해봤다. 사실 압축파일을 올리는것과 다른 것이 없지만 몇가지 차이가 있어서 잠시 삽질한 것을 기록한다. 앞의 글에서 Dockerfile과 .dockerignore를 만들어서 프로젝트 폴더에 갖고 있다고 하면, eb init 을 통해 AWS EB에 연결하고, eb deploy 를 통해 배포할 수 있다. 이때 Dockerfile이 있으면 Docker환경인걸 식별하고 물어보니 따라가면된다. 이때, 1. git commit 한 것만 deploy awsebcli를 이용해서 배포할 때 잠깐잠깐 수정을 했으나 배포에서 변화가 없어서 찾아보니, git으로 관리할 때, commit한 것만 배포에 반영된다고 한다. 해결은 아래 2번과 한번에 할 수 있어서 우선 다음 문제를 보면, 2..

daily 2023.06.03

23.05.27. SSE(Server-Sent-Event) 구현해보기

ChatGPT 사이트를 클론 코딩하기로 했을 때 가장 궁금한 건 두가지였다. 1. node.js환경에서 openAI API연결하는 것 (두 글에 걸쳐 구현 완료 했다. [0], [1]) 2. 실제 타이핑 치듯 글자가 나오는 인터페이스 2.는 어떻게 구현하나 했더니, 우선 openAI API에서 stream 옵션을 true로 해서 조각내어 받고, SSE(Server-Sent-Event)라는 기능으로 구현하는 것이었다. 처음엔 소켓으로 하는가 싶었는데, 그것보다 간단하고, 일방향으로 전송하는 방식의 기능으로 쉽게 구현할 수 있었다. 1. 서버 서버에서는 아래와 같이 헤더에 text/event-stream이라는 content-type으로 설정하고, cache는 없게 설정해주고, 데이터를 setInterval을..

daily 2023.05.27

23, 21주차

20~21주차 두 주간 프론트엔드와 백엔드 몇명이 모여 미니 프로젝트를 진행했다. 간단한 웹사이트를 만드는 것으로 기획하고, 컨텐츠는 "이어쓰는 동화". 기본적인 CRUD를 구현하는 많은 예제에서 사용하는 게시판, 블로그와 동일한 형식이라 새로운 건 없지만, 그간 배운것을 실제 배포하고, FE와 같이 협업해본다는 점에서 새롭고 많은 것을 배울 수 있었다. 1. github 사용 팀원과 함께 쓰는 github은 처음이었고, 의외로 별다른 문제 없이 쉽게 흘러갔다. 다만 사용하며 아쉬운 것은 main 브랜치에 서로 푸시를 한 점이다. 서로 어떤 부분을 작성하는지에 대한 논의가 잘 되어서 다행이었으나, 꼬이기 시작하면 한도 끝도 없었을 듯. 그래도 API 명세서가 자세했고, 역할분담이 명확했기 때문에 문제가 ..

daily 2023.05.27

23.05.27. openAI API + node.js, express로 연결해보기[1]

2023.05.27 - [daily] - 23.05.26. openAI API + node.js, express로 연결해보기[0] 23.05.26. openAI API + node.js, express로 연결해보기[0] openAI에서 제공하는 API를 연결하는 것은 openAI에서 제공하는 기술문서에 친절하게 설명되어 있어서 파이썬으로는 기술문서를 따라 쉽게 연결했었는데 node.js로는 어떻게 하는지 기술문서를 보며 dailydevelop.tistory.com 지난번에 이어, 대화를 이어가려면 앞의 정보를 openAI API에 같이 보내야한다. 웹이나 앱의 서비스라면 사용자별로 데이터베이스에 대화를 저장해야겠지만, 간단하게 구현해보기 위해 json으로 저장하는 방식으로 대강 구현해 봤다. json으로..

daily 2023.05.27

23.05.26. openAI API + node.js, express로 연결해보기[0]

openAI에서 제공하는 API를 연결하는 것은 openAI에서 제공하는 기술문서에 친절하게 설명되어 있어서 파이썬으로는 기술문서를 따라 쉽게 연결했었는데 node.js로는 어떻게 하는지 기술문서를 보며 따라해봤다. 1. 라이브러리 설치 openai 기술문서를 보면, node.js에서 어떻게 구현하는지 예제코드가 친절하게 나와있다. 코드 예제 우측 상단에 curl, node.js, python 세가지 예시를 제공해주고 있다. requir('openai')를 보니, 패키지를 설치해야 하는 것 같아서 찾아보니, 여기에서 openai npm 라이브러리를 확인할 수 있다. 그리고, API키는 .env 파일로 저장하는것이 안전하니.. dotenv도 설치해주고, 편리한 express도 같이 설치해주자. npm i ..

daily 2023.05.27
728x90