목록전체 글 (407)
민프
테스트 자동화 삽질기Flutter 통합 테스트를 Android 에뮬레이터로 옮기고 나서 든 당연한 질문. "터미널 두 개 켜서 같이 돌리면 되는 거 아냐?" 안 됐다. 그 이유와, 그래서 업계가 디바이스 팜이라는 걸 만든 이야기.2026 · Frontend › [Flutter]#Flutter#integration_test#디바이스팜#FirebaseTestLab#Appium#스모크테스트iOS 시뮬레이터에서 돌던 스모크 테스트를 Android 에뮬레이터에서도 같은 시나리오로 돌리게 만들었다.둘을 합치면 30분이 넘어서 동시에 돌리고 싶었는데, 한 작업 폴더에서는 그게 안 된다.이 글은 그 이유에서 출발해 디바이스 팜이 무엇인지, Flutter 공식 문서가 권하는 방법이 무엇인지, 국내외 회사들은 어떻게 ..
개념 정리테스트 스위트·테스트 케이스·스모크 테스트·통합 테스트부터 플레이키 테스트, soft delete와 hard delete까지, 실제로 써 본 맥락과 함께 한 번에 정리했다.2026 · Frontend › [Flutter]#테스트용어#test suite#스모크테스트#integration_test#Flutter#flaky test#hard delete서버를 배포할 때마다 실제 앱을 시뮬레이터에 띄워 핵심 흐름을 확인하는 스모크 테스트를 만들었다.만드는 내내 "스위트가 뭐지?", "왜 단계를 나누지?", "테스트 데이터는 왜 다 지워야 하지?" 같은 질문이 계속 나왔다.그때마다 설명했던 용어들을 테스트를 담는 그릇 → 범위 → 실행 환경 → 테스트 데이터 → 지우기 → 흔들림 순서로 묶었다.한 줄..
공부 노트ECS만 써 본 사람이 온프레미스 GPU 서버 한 대에 서비스를 올리려다 막혔다. "쿠버네티스 쓰면 되는 거 아냐?" — 답은 생각보다 단순하지 않았고, 정직하게 말하면 둘 다 된다. 그래서 무엇이 결정을 가르는지를 공식 문서와 실제 사례로 정리했다.2026 · Backend › [Docker]#Docker Swarm#도커스웜#Kubernetes#쿠버네티스#k3s#컨테이너 오케스트레이션#온프레미스#ECS#Docker#DevOpsDocker Swarm은 Docker Engine에 내장된 오케스트레이터고, Kubernetes는 사실상의 업계 표준이다.서버 한 대에서는 둘 다 단일 장애점이고, 쿠버네티스의 큰 장점(여러 노드 · 자동 확장 · 생태계) 중 일부만 쓸 수 있다.이 글은 두 도구의 구..
개발 노트웹(Next.js)과 Flutter 앱(iOS · Android)이 같은 서버를 쓴다. 서버가 바뀔 때마다 모든 클라이언트가 안 깨졌는지 확인하고 싶었다. 도구도 언어도 출시 속도도 다른 플랫폼들을 공통 명세 하나와 버전 고정(lock)으로 묶은 과정을 정리했다.2026 · SRE#멀티 플랫폼 테스트#cross-platform testing#스모크 테스트#E2E 테스트#Flutter#Playwright#Pact#Cucumber#버전 호환성서버를 배포할 때마다 불안했다.웹은 괜찮을까? 앱은? 앱 중에서도 아직 업데이트 안 한 사용자의 옛 앱은?“스모크 테스트 하나를 웹과 앱에서 같이 쓰면 되지 않나”로 시작했다.그런데 답은 “테스트 하나”가 아니라 “시험지 하나”였다.시험지(명세)는 하나, 답..
개발 노트Flutter 앱의 자동화 테스트(integration_test, Patrol, 골든 테스트)를 어떻게 구성할지 정하려고, 해외 · 국내 · 스타트업 20여 곳의 공개 자료와 네 플랫폼의 공식 문서를 비교했다.2026 · Frontend › [Flutter]#Flutter 테스트#integration_test#Patrol#골든 테스트#E2E 테스트#모바일 테스트 자동화#Firebase Test Lab#Detox#XCUITest#스모크 테스트“스모크 테스트는 서버가 아니라 앱 쪽 CI/CD에서 자동으로 돌면 좋겠다.”팀 회의에서 나온 말이다.그런데 막상 찾아보니 Flutter 앱을 출시 전에 자동 테스트하는 방법이 정리된 자료가 거의 없었다.그래서 범위를 넓혔다 — Flutter, 네이티브 A..
개발 노트Flutter integration_test로 앱 스모크 테스트를 만들기 전에, 누가 에뮬레이터를 띄우고, 테스트가 앱을 어떻게 움직이고, 성공과 실패는 어떻게 판정되는지 공식 문서와 Flutter SDK 소스를 한 줄씩 확인했다.2026 · Frontend › [Flutter]#Flutter#integration_test#통합 테스트#E2E 테스트#pumpAndSettle#iOS Simulator#Android Emulator#simctl#스모크 테스트앱 출시 전에 스모크 테스트를 돌리기로 했다.로그인 → 피드 → 채팅 1턴 → 코인 잔액까지, 핵심 흐름 하나를 실제 개발 서버에 붙여 확인하는 테스트다.그런데 막상 설계하려니 기본적인 질문에 답을 못 했다.에뮬레이터는 누가 띄우지? 테스트는..
부하 테스트 후기부하 테스트, 노트북 한 대로 하면 안 되나?— WAF에 두 번 막히고 알게 된 분산 부하 발생기부하 발생기 한 대는 사용자 한 명으로 보인다. 다른 회사들은 이걸 어떻게 푸는지 조사하고, 스타트업 규모에 맞는 방법을 골랐다.2026 · SRE#부하테스트#load testing#AWS WAF#rate limit#분산 부하#Gatling#CloudFront#용량 계획출시 전 용량을 재려고 노트북에서 부하 테스트를 돌렸다.5명짜리 smoke는 잘 됐는데, 테스트 계정을 만드는 준비 단계에서 WAF에 두 번 막혔다.원인은 서버가 아니라 부하 발생기가 IP 하나라는 점이었다.다른 회사들이 이걸 어떻게 푸는지 조사했고, 결국 WAF를 실제 트래픽 기준으로 다시 설계하고, 부하는 여러 대에서 나..
개발 노트단위 테스트(Unit Test)와 계약 테스트(Contract Test)는 겉모습이 거의 같다. 둘 다 가짜 데이터를 넣고, 둘 다 네트워크를 안 쓴다. 그런데 잡아내는 버그는 완전히 다르다.2026 · SRE#단위 테스트#unit test#계약 테스트#contract testing#mock#테스트 더블#Jest#마이크로서비스 테스트테스트 전략을 짜다가 이런 질문을 받았다.“단위 테스트도 mock 데이터로 API를 잘 받는지 체크하는 거 아니야? 계약 테스트도 마찬가지잖아.”맞는 말이었다. 코드만 보면 구분이 안 된다.그래서 차이를 끝까지 파 봤다.결론은 한 줄이다 — 그 가짜 데이터를 누가 정하고, 누가 같이 검사하느냐.01겉모습은 똑같다두 테스트를 나란히 놓아 보면 헷갈리는 게 당연하다...
개발 노트2026 · SRE#계약 테스트#contract testing#Consumer-Driven Contracts#Pact#JSON Schema#마이크로서비스 테스트#API 호환성#SRE백엔드가 AI 엔진에 요청을 보낸다. 응답은 200이고, 답변도 잘 나온다.그런데 사용자는 “캐릭터 이름이 영어로 나와요”라고 한다.요청에서 선택 필드 하나가 빠져 있었다.에러는 어디에도 없었다.이런 문제를 잡는 게 계약 테스트다.이 글은 구현 후기가 아니라, 왜 필요했고 어떻게 설계했는지에 대한 기록이다.01200 OK인데 뭔가 이상하다우리 서비스는 백엔드가 가운데에 있고, 양옆에 서비스가 붙어 있다.채팅할 때는 AI 엔진에 JSON-RPC로 요청하고, 코인을 쓸 때는 결제 서비스와 HTTP로 주고받는다.AI 엔..
개발 노트SRE(Site Reliability Engineering)의 정의와 DevOps와의 차이, 그리고 구글 · 아마존 · 넷플릭스 · 메타와 카카오 · 라인 · 우아한형제들 · 토스가 신뢰성을 실제로 어떻게 다루는지 공개 자료로 정리했다.2026 · SRE#SRE#Site Reliability Engineering#사이트 신뢰성 엔지니어링#DevOps#SLO#에러 버짓#장애 대응#포스트모템#온콜부하 테스트를 준비하다가 “배포할 때마다 스모크 테스트를 돌리면 좋겠다”는 생각이 들었다.알아보니 이건 테스트 하나의 문제가 아니었다.배포 안전장치, 알림, 장애 대응, 서비스 간 계약까지 —전부 SRE라는 한 분야 안에 있었다.SRE가 뭔지부터 정리하고, 해외 4곳 · 국내 5곳이 실제로 어떻게 하는지..
