목록전체 글 (410)
민프
개념 정리GEO(생성형 엔진 최적화)를 조사하다 보니, 유행어는 많은데 근거는 생각보다 얇았다.2026 · 기타 › [개발]#GEO#생성형엔진최적화#SEO#AI Overviews#ChatGPT#엔티티SEO#Wikidata#llms.txt웹사이트를 노코드 빌더에서 직접 호스팅으로 옮기고 나서 SEO/GEO 작업을 맡았다.그동안은 최적화 툴이 "고쳐라" 하는 것만 고쳤는데, 이번엔 원리부터 보고 싶었다.정리해 보니 결론은 단순했다.GEO의 바닥은 SEO이고, 그 위에 얹는 GEO 기법 대부분은 아직 검증 중이다.01SEO와 GEO, 뭐가 다른가한 줄로 말하면 이렇다.SEO는 검색 결과에서 순위를 올리는 일이다.GEO(Generative Engine Optimization)는 AI가 쓴 답변 안에 언급·인..
공부 노트Flutter로 iOS · Android 앱을, Next.js로 웹을 혼자 운영하다가 문득 생각이 났다."안드로이드만 핫픽스하면 iOS 버전도 같이 올려야 하나?" — 공식 문서와 기업 엔지니어링 블로그를 뒤져 버전 번호 · 출시 주기 · 강제 업데이트 · 핫픽스 · CI까지 정리했다.2026 · Frontend › [Flutter]#Flutter#플러터#앱 버전 관리#versionCode#build number#강제 업데이트#force update#핫픽스#릴리스 트레인#CI-CDFlutter 앱의 버전 관리는 결국 pubspec.yaml의 숫자 한 줄이다.하지만 웹과 앱은 '버전'의 의미부터 다르고, 앱은 사람이 보는 버전 + 정수 build 번호 두 개로 움직인다.이 글은 공식 문서(Ap..
빌드 경고 해부실기기에 release 빌드를 올렸더니 터미널이 경고로 가득 찼다. 다섯 갈래로 나누면 우리 몫은 하나였고, 플러그인 13개를 열어 보니 진짜 막힌 것은 넷이었다.2026 · Frontend › [Flutter]#Flutter#Android#KotlinGradlePlugin#BuiltInKotlin#AGP9#javacFlutter 앱을 Android 실기기에 flutter run --release로 올리면 빌드 로그에 경고가 수십 줄 찍힌다.전부 읽어 보면 출처가 셋이다. Flutter 도구, Java 컴파일러, 그리고 우리 스크립트.이 글은 그 경고를 한 줄씩 공식 문서에 대어 보고, 지금 고칠 것과 미뤄도 되는 것을 가른 기록이다.01배경 — 실기기 한 번 올렸을 뿐인데Android..
테스트 자동화 삽질기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를 실제 트래픽 기준으로 다시 설계하고, 부하는 여러 대에서 나..