| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 |
- amqplib
- OpenCV.js
- Metro
- gradle
- react-native-dotenv
- 공부기록
- 16KB페이지
- 권한처리
- Android
- RabbitMQ
- 상태동기화
- 트러블슈팅
- React
- react-native-ble-plx
- SQL
- mqtt
- React Native
- webview
- PostgreSQL
- 프로토콜분석
- TypeScript
- 설계
- python
- 동시성
- Node.js
- edge-to-edge
- ReactNative
- GraphQL
- java
- sql-formatter
- Today
- Total
목록전체 글 (9)
돌핀코딩
현장에서 차량을 추적하는 엔진이 RabbitMQ로 추적 메시지를 보내면, 백엔드 워커가 받아서 차량 위치와 상태를 갱신한다. 같은 메시지를 원격 개발 서버에서도 받아 테스트하고 있었는데, 거기서만 이상한 일이 생겼다. 차량 ID가 자꾸 바뀌고, 붙어 있던 번호판이 사라졌다. 처음엔 추적 로직을 의심했다. 그런데 로직을 보기 전에 받은 메시지 수부터 세어 보니 답이 나왔다. 현장 서버가 받은 프레임의 20% 정도만 원격 서버에 도착하고 있었다. 나머지 80%는 큐에서 그냥 사라지고 있었다.큐가 메시지를 버리고 있었다워커가 쓰는 큐에는 x-message-ttl이 1초로 걸려 있다. 추적 프레임은 1초만 지나도 쓸모가 없어서 오래된 건 버리게 해 둔 거다. 그러니 1초 안에 못 가져간 메시지는 조용히 만료된다..
관제 화면에서 화재나 연기가 감지되면 상단에 경고 알림이 뜬다. 관리자는 알림을 눌러 판정 팝업을 열고, 실제 상황이면 [상황 발생], 아니면 [오탐]을 누른다. 문제는 이 화면을 여러 사람이 동시에 보고 있다는 거였다. A가 먼저 오탐 처리를 해도 B 화면에는 판정 팝업이 그대로 떠 있다. B가 그걸 모르고 버튼을 누르면 에러가 돌아온다. 그때 받은 응답은 이랬다.{ "data": { "confirmSmokeFireEmergency": { "message": "데이터가 존재하지 않습니다.", "extensions": { "code": "30000001" } } }} 원래는 "이미 판정되었다"는 응답이 와야 하는데 이 코드가 온 건 서버 구성 쪽 문제였고, 그건 백엔드에서..
아침에 API를 호출하는데 502가 났다. 개발 서버에 들어가 보니 Node.js로 만든 API 서버와 워커가 PM2 목록에서 stopped로 떠 있었고, PM2 데몬은 1분 전에 새로 뜬 상태였다. 처음엔 당연히 코드 어딘가에서 죽는 줄 알고 에러 로그부터 뒤졌다. 결론부터 말하면 코드 문제가 아니었다. systemd가 PM2를 90초마다 통째로 죽이고 있었고, 그 뒤에는 SELinux가 있었다.앱이 스스로 죽은 적이 없었다PM2 로그에서 그날 API 서버와 워커가 종료된 기록을 모아 보니 109건이었는데, 전부 시그널에 의한 종료였다. 종료 코드는 0, 130(SIGINT), 143(SIGTERM) 셋뿐이었고 uncaughtException이나 process.exit, 메모리 부족 같은 앱 쪽 에러는..
팀 프로젝트 배포를 GitHub Actions로 자동화했다. develop이나 main 브랜치에 푸시하면 서버에 바로 배포되고, 성공했는지 실패했는지는 슬랙 채널로 알림이 온다. 설정한 순서대로 적어 둔다.Slack Webhook URL 발급GitHub Actions가 Slack으로 메시지를 보내려면, Slack Webhook URL을 먼저 발급받아야 한다.1. Slack에 Webhook 앱 설치슬랙 웹에서 Incoming Webhooks 앱 열기[앱 추가] 또는 Add to Slack 클릭알림을 받을 채널 선택 → Allow 클릭 2. Webhook URL 발급앱을 설치하면 Webhook URL이 바로 만들어진다. 이런 모양이다.https://hooks.slack.com/services/T0000000..
