쿠폰함 서버 개발 및 Go 디자인 패턴 적용 (Day 138)

Source

  • Field Notes/ReturnZero/Daily Notes/Day 138. 2021-11-15.md

Summary

이 노트는 ‘쿠폰함’ 서버 개발 과정에서 겪은 기술적 난관과 해결 과정을 기록한 일기 형식의 개발 노트입니다. 핵심 주제는 Go 언어로 구현된 쿠폰 시스템에 팩토리 메소드 및 브릿지 패턴을 적용하여 비즈니스 로직을 분리하는 작업과, MySQL 데이터베이스 스키마 변경(특히 good_properties 필드의 직렬화 및 가상 컬럼 문제)으로 인한 디버깅 과정입니다. 또한 고랭(Golang) 컨퍼런스 자료를 참고한 디자인 패턴 학습과 데드락 재현 테스트 계획도 포함되어 있습니다.

Key Points

  • 쿠폰 생성 로직(ActivateCoupon)에서 팩토리 메소드 패턴을 적용하여 생성 책임을 분리하고, 브릿지 패턴을 통해 쿠폰별 행동을 유연하게 처리하려 함
  • MySQL에서 good_properties 필드의 직렬화(serialize) 저장 시 발생하는 에러(Field doesn't have a default value)와 가상 컬럼(virtual column) 활용 시도
  • ActiveRecord::Store 방식을 고려하며 DB 스키마 변경(키 이름의 gp_ 접두사 제거 등)을 통한 호환성 문제 해결 시도
  • Go 언어의 인터페이스, 구조체 임베딩, 명령 패턴(Command Pattern) 등 디자인 패턴 학습을 위한 참고 자료 수집
  • 클라우드 업로드 시 발생할 수 있는 데드락 상황을 재현하기 위한 테스트 시나리오(슬립 추가, VPN 환경 등) 수립