로컬 AWS 에뮬레이터 fakecloud 공개, 105개 서비스와 Smithy 테스트 248,557개 전부 통과 주장
- fakecloud는 105개 AWS 서비스와 7,508개 오퍼레이션을 지원하는 로컬 에뮬레이터이고, 커밋마다 Smithy 모델 기반 테스트 변형 248,557개를 전부 통과한다고 주장함(구현된 API 오퍼레이션은 3,932개)
- LocalStack Community와 달리 계정과 토큰이 필요 없고 AGPL-3.0 라이선스에 Docker 없이 단일 바이너리로 실행됨. 시작 시간 약 300ms, 유휴 메모리 약 10MiB, 설치 크기 약 19MB로 LocalStack의 약 3초, 150MiB, 1GB와 대비됨
- TypeScript, Python, Go, PHP, Java, Rust용 테스트 SDK를 제공하고 /_fakecloud/* 엔드포인트로 상태 초기화, 이벤트 검증, 비동기 처리기 수동 실행을 지원함
- 댓글에서 DynamoDB 구현이 전체 API와 거리가 멀다는 지적이 나옴. 1,279개 테스트 중 583개가 실패했고, ADD m.a.c :inc가 중첩 숫자를 바꾸지 않고 리터럴 속성을 만드는 버그가 보고됨
- 본문은 105개 서비스를 내세우지만 비교표에는 100% conformance 서비스가 46개로 적혀 있어 수치가 어긋남
Hacker News opinions
floci랑 비교하면 어떤지 궁금함. localstack이 비운 자리를 floci가 이어받았다고 들었는데, 어제도 floci 글에 댓글 47개 달렸음.
큰 시스템에 붙이려면 스캐폴딩 작업이 너무 많음. terraform 인프라를 던져주면 도구가 알아서 만들게 하는 기능이 있으면 좋겠음. 아직 아무도 안 한 것 같음.
난 floci랑 floci-gcp로 terraform 매주 씀.
왜 이런 건 전부 AWS만 노리나. GCP나 Azure용은 없나.
AWS가 클라우드 사용량에서 앞서니까 그렇겠지. floci에는 GCP, Azure 버전도 있는데 성숙도는 모르겠음. 이번 주에 그 분야로 뭔가 런칭하는 사람도 있더라.
이런 프로젝트는 커뮤니티가 받쳐주지 않으면 회사 세우고 투자 받고 유용한 기능은 유료화함. localstack처럼. AWS, Azure, GCP가 직접 제공해야 하는 거 아닌가.
Azure는 CosmosDB나 Storage 로컬 에뮬레이터를 제공함. S3 테스트 버킷 비용이 $0.03 수준인데 그걸 아끼는 회사면 다른 문제가 있는 거임.
MiniStack은 localstack이 개발 워크플로를 깨기 시작한 뒤 포크된 것. 근데 fakecloud는 사이트도 대충 바이브코딩 같고 작성자가 익명이라 신뢰하기 어려움. curl 파이프 설치는 좀 그럼.
작성자 익명 아니던데. 글은 전부 Lucas Vieira 이름으로 올라와 있고 faisca.dev 소속임. LinkedIn에도 샌프란시스코에서 일하는 실제 인물로 나옴. cargo install fakecloud도 됨.
Moto로 만족하며 살고 있음.
로컬 스텁은 1인 개발자가 매일 아침 클라우드 크레딧 태우지 않고 웹훅 테스트하기엔 최고임.
'46개가 100% conformance'라는 건 사실이 아님. DynamoDB를 뜯어봤는데 전체 API 구현과는 거리가 멂. 내 conformance 스위트에서 1,279개 중 583개 실패했고, ADD m.a.c :inc가 중첩 숫자를 안 바꾸고 리터럴 속성을 만드는 버그도 있음.
통합 테스트의 요점을 놓친 것 같음. 통합 테스트는 목을 피하려고 하는 건데 진짜를 가짜로 바꾸면 진짜에 대해 배우는 게 없음. AWS SDK로 실제 인프라 띄우는 게 낫다. SQS는 10ms, 버킷은 100ms, DynamoDB GSI는 30초에서 1분 걸리지만 그 정도 세금은 쌈.
통합 테스트랑 E2E 테스트를 헷갈리는 듯.
별도 프로세스 시뮬레이터보다 테스트 안에서 인라인으로 목킹하는 게 나음. 그래야 테스트가 자기완결적이고, 버킷이 처음엔 차 있다가 다음 요청엔 비는 시나리오도 그 자리에서 볼 수 있음.
DI 쓰고 페이크 쓰는 게 더 낫지.
SES 지원은 localstack보다 훨씬 좋아 보임.