Next.js 프리페치와 fail2ban: 앱이 자기 IP를 차단시키는 경로
오후에 사내에서 서비스가 통째로 안 열린다는 이야기를 들었습니다. 한 곳이 아니라 여러 곳이었습니다. 업무 시스템 데모도, 웹 데스크톱도, 파일 전송망도 전부 응답이 없었습니다. 그런데 같은 주소가 바깥에서는 멀쩡히 열렸습니다.
오후에 사내에서 서비스가 통째로 안 열린다는 이야기를 들었습니다. 한 곳이 아니라 여러 곳이었습니다. 업무 시스템 데모도, 웹 데스크톱도, 파일 전송망도 전부 응답이 없었습니다. 그런데 같은 주소가 바깥에서는 멀쩡히 열렸습니다.
백업 현황 페이지에 칸을 하나 더 그려 올렸는데, 새 탭에서는 새 화면이 뜨고 랜딩 페이지의 데모 모달 안에서는 전날 화면이 떴습니다. 같은 주소, 같은 서버, 같은 파일인데 화면이 둘이었습니다. 원인은 응답 헤더 하나가 처음부터 빠져 있던 데 있었고, 그 헤더를 찾다가 같은 자리에서 빠져 있던 보안 헤더들도 같이 찾았…
매일 밤 서버에서 이런 명령이 돈다고 해 보겠습니다.
Better Stack 첫 화면에는 표가 하나 있습니다. 한 달에 트레이스·로그·지표를 각각 1TB씩 보낼 때 Datadog은 약 $55,574, Better Stack은 $687이라고 적혀 있습니다. 표 아래 각주는 이 숫자가 추정치이며 연 결제, 유럽 데이터 위치, 응답자 1명, Tera 번들, 평균 이벤트 크기 1…
글을 두 편 발행하고 사이트맵을 열어 봤습니다. 둘 다 없었습니다.
회선을 두 배로 넓혀도 TTFB 는 거의 그대로입니다. 서버를 한 대 더 붙여도 마찬가지입니다. 그런데 같은 서버를 사용자와 가까운 리전으로 옮기면 절반으로 떨어집니다.
역방향 SSH 터널로 오리진을 내보내는 구성에서, 터널 너머의 서비스들이 한꺼번에 「응답 없음」이 된 날의 기록입니다. 프로세스도 소켓도 살아 있다고 말하는데 서비스만 죽어 있었고, 원인은 제가 「죽은 연결은 90초 안에 정리된다」고 믿고 있던 설정에 있었습니다.
운영에 올릴 새 커밋은 없었습니다. main 과 develop 이 같은 커밋이었고, 마지막 운영 배포는 그 커밋이 올라간 지 4분 뒤에 만들어져 있었습니다. 그래도 한 번 다시 올려 두자고 해서 vercel redeploy 로 같은 배포를 다시 만들었습니다. 2분 만에 Ready 가 떴고 도메인에 붙었습니다.
이미지가 하나도 안 나온다는 말을 듣고 열어 봤습니다. 이미지 원본을 서빙하는 호스트 세 개가 DNS 에서 통째로 사라져 있었습니다. dig 가 아무것도 돌려주지 않았습니다.
하루에 관리형 Postgres 두 개를 배포에 붙였습니다. 하나는 비밀번호를 재설정하고 연결 문자열을 손으로 옮겨 적었고, 다른 하나는 비밀번호를 끝내 보지 않았습니다. 후자가 더 빨랐고, 무엇보다 틀릴 자리가 없었습니다.
한 서비스의 개발 배포를 다른 호스트로 옮기는 중이었습니다. 러너를 새로 붙이고, 환경변수 출처를 바꾸고, 이제 워크플로를 켜기만 하면 되는 참이었습니다. 그런데 배포 스크립트 마지막에 있는 한 줄에서 멈췄습니다.
새 맥에 개발 환경을 세우면서 brew install node 를 쳤습니다. 그때 깔린 것이 26 이었습니다. Next 앱 두 개는 잘 떴고, 세 번째 프로젝트에서 npm install 이 이렇게 멈췄습니다.
블로그 목록에는 글 297편이 그대로 나왔습니다. 그중 하나를 누르면 500이었습니다. 문서 사이트도 똑같이 목록은 정상이고 문서 본문만 죽었습니다. 두 서비스 모두 마지막 커밋이 일주일 전이었고, 그 사이 코드를 건드린 사람은 없었습니다.
값을 바꿔도 화면에 반영되지 않았습니다. 새로고침하면 보였습니다.
Fedora 41부터 배포판 저장소에서 Redis 자리를 Valkey가 대신합니다.
응답 시간을 재려고 헤더를 열었더니 이런 줄이 보였습니다.
Workers 설정 파일에는 정적 자산 디렉터리를 가리키는 항목이 있습니다.
단축 URL 서비스를 하나 만들면서 Cloudflare 배포를 처음 써봤습니다. 평소 쓰던 구성은 Next.js 16 App Router에 Prisma와 PostgreSQL을 붙이고, 오리진 서버에서 Docker Compose로 컨테이너를 띄워 nginx 뒤에 두는 형태입니다. 같은 프레임워크로 비슷한 앱을 Worker…
앞 글에서 Fargate + RDS + ALB + NAT로 짠 교과서 구성을 뜯어봤습니다. ALB와 NAT Gateway를 빼면 요금이 절반 아래로 떨어진다는 것까지 봤습니다.
AWS 비용 대시보드를 열었는데 NAT Gateway가 Fargate보다 비싼 경우가 있습니다. 앱을 돌리는 값보다 앱이 인터넷으로 나가는 통로 값이 더 나가는 겁니다. 트래픽이 거의 없는 서비스에서도 그렇습니다.