본문 바로가기

분류 전체보기20

"docker run" requires at least 1 argument. docker run -d --name engdabot -p 8081:8081 -e BOT_TOKEN=${{ secrets.BOT_TOKEN }} -e API_KEY=${{ secrets.API_KEY }} -e DATABASE_URL=${{ secrets.DATABASE_URL }} -e DATABASE_USERNAME=${{ secrets.DATABASE_USERNAME }} -e DATABASE_PASSWORD=${{ secrets.DATABASE_PASSWORD }} -e TZ=Asia/Seoul ${{ secrets.DOCKER_ID }}/engdabot 내 secret 변수중에서 '&'문자가 들어간게 있었는데,&앞에 escape 문자를 붙여주어야 함.\& https://stackoverflow... 2024. 5. 7.
테스트코드? 그게 뭔데 (1) 테스트코드의 중요성에 대해서는 많이 들어봤을 것이다. 그런데 이게 꽤나 개념도 많고 작성하는 방법도 쉽지 않단 말이지.. 테스트코드 그거 왜씀? 도서관리 프로그램의 백엔드 개발자를 담당하고 있는 A씨. 프로젝트 초기 단계여서 API를 새로 만들고 있다. 도서 등록 API 를 개발하였다. 이게 제대로 동작하는지 확인하기 위해 postman을 켜서 확인해보았다. RequestBody를 잘 입력하고... Run! 요청한 도서가 잘 등록된걸 데이터베이스에서 확인했다! 좋았쒀!! 다음으로는 도서 수정 API를 개발하였다. 이걸 확인하려면 도서 등록을 먼저 해야 하네? 앞서 만든 도서 등록 API를 호출한 후 도서 수정 API를 테스트했다. 이번에도 성공! 그런데 도서 수정 API에 수정 요청사항이 들어왔다. 수정.. 2024. 4. 5.
AWS Lambda로 API 만들기 What? 무슨 문제야? 최종 프로젝트 서버는 데브코스 규칙에 따라 일괄적으로 켜지고, 꺼지는 시간이 정해져있다. 평일에는 오전 9시에 서버가 켜지고, 오후 6시에 자동 종료되는데, 자동 종료된 이후 작업을 하고 싶을 때 '서버 켜주세요~' 라는 요청을 해야 하는 불편함이 있었다. 백엔드 팀원들만이 aws ec2를 켤 수 있는데, 팀원들이 부재중이거나 aws에 접속하기 어려운 상황일 경우 서버를 즉각적으로 켜주기가 어려웠다. How? 어떻게 해결했어? 이런 문제를 해결하고자 프론트 팀원들도 원하는 시간에 aws에 접속하지 않고도 서버를 켤 수 있는 API를 만들기로 했다. AWS Lambda 를 사용했다. 1. AWS Lambda 서비스에 접속해서 함수를 생성한다. 이때 IAM role도 같이 생성된다... 2024. 4. 1.
부팅할 때마다 스크립트 자동 실행하기(Ubuntu) Ubuntu crontab -e @reboot /home/ubuntu/restart.sh restart.sh sleep 30 docker restart redis docker restart myimage 2024. 3. 21.
모니터링 시스템 구축하기 - Node Exporter, Prometheus, Grafana, EC2, Docker (1) Why 서비스를 배포했다. 그런데 제대로 돌아가는걸까? - api별로 호출 시간은 어느 정도인지, 병목은 없는지 - 런타임에서 예상치 못한 예외가 발생했는지 - 서버의 CPU, 메모리 사용량이 위험하지는 않은지 - SQL 쿼리가 데이터베이스에 부담을 주지는 않는지 - 사용자가 부적절한 호출을 하지는 않는지(보안 위협) 등등.. 추적 관리해야 할 것 들이 매우 많다. 이런 문제들을 관리하기 위해 모니터링 시스템을 구축하기로 했다. What 먼저 추적하고자 하는 내용을 간추려 보자. 1. 서버의 시스템 메트릭 정보 2. Springboot 애플리케이션의 메트릭 정보 3. 애플리케이션에서 발생한 error 로그 4. RDS에서 발생한 슬로우 쿼리, N+1 쿼리 How AWS의 CloudWatch라는걸 이용할 .. 2024. 3. 19.
Long polling vs Webhook Long Polling vs Webhook 챗봇이 텔레그램 서버로부터 메세지를 읽어오기 위한 방법으로는 롱 폴링, 웹훅 방식이 있다. 롱 폴링 방식은 챗봇 서버가 텔레그램 서버로부터 메세지를 가져오는 방식이고, 웹훅 방식은 텔레그램 서버가 챗봇 서버로 메세지를 보내주는 방식이다. Long Polling 새로운 메세지가 있는지 텔레그램 서버를 지속적으로 호출하여 확인하는 방식을 Polling 이라 한다. 하지만, 실시간에 가깝게 새 메세지를 확인하기 위해 매우 짧은 주기로 텔레그램 서버를 계속 호출하는건 비효율적이다. Long Polling 방식은, 메세지가 있는지 확인하는 request 를 보낸 뒤, response를 받을 때까지 기다리는 방식이다. 새 메세지가 없다면 request를 보낸 커넥션이 열린.. 2024. 2. 11.