작은 Nim 마이크로서비스, 세 가지 실제 버그, 그리고 그것들이 나에게 나의 머미 포크에 대해 가르쳐 준 것
저자는 포트폴리오 웹사이트에서 메시지를 처리하기 위해 POST /api/contact 엔드포인트를 구축했습니다.
그들은 OpenAPI 스키마 생성 및 타입 검증을 포함하는 Mummy 포크를 사용했습니다.
이 엔드포인트는 이름, 이메일, 메시지를 받아 존재 여부, 타입, 길이, 이메일 형식에 대한 검증을 수행합니다.
검증 중 오류는 400 응답을 반환하고, 잠재적인 전송 실패는 일반적인 500 응답을 반환합니다.
추가 미들웨어에는 CORS 처리, 인메모리 속도 제한기, 로깅이 포함됩니다.
초기에는 SMTP를 위해 계획되었으나, Render의 아웃바운드 SMTP 포트에 대한 무료 티어 제한으로 인해 Resend의 REST API로 서비스가 전환되었습니다.
세 가지 예상치 못한 버그가 발생했습니다. 별칭으로 지정된 std/httpcore 임포트로 인한 타입 불일치, 논리적으로 불변인 전역 변수에 대한 gcsafe 컴파일러 문제, 그리고 사전 요청에 대한 미들웨어 실행을 방해하는 등록되지 않은 OPTIONS 라우트입니다.
각 버그는 포크의 내부 작동 방식, Nim의 모듈 시스템, 스레드 안전 프로그래밍에 대한 귀중한 통찰력을 제공했습니다.
저자는 이러한 문제가 Nim의 기능과 Mummy 프레임워크의 교차점에서 발생하는 특정 문제임을 강조합니다.
전체 구현 세부 정보 및 배포 스크립트는 프로젝트의 리포지토리에서 확인할 수 있습니다.