설계 요구사항→도전 요소→접근→결과 결
소프트웨어 설계에서 가장 도전적이었던 경험은 팀 프로젝트에서 여러 모듈이 공유 상태를 동시에 수정하면서 데이터 불일치가 반복 발생하는 문제를 구조적으로 해결한 것이었습니다. 처음에는 락을 추가하는 방식으로 접근했지만, 교착 상태가 생기는 부분이 다시 나타나 근본 구조 개선이 필요하다고 판단했습니다.
이벤트 기반 아키텍처를 도입해 모듈 간 직접 상태 공유를 없애고, 상태 변경을 이벤트로 발행·구독하는 방식으로 바꿨습니다. 불변 상태 패턴을 적용해 공유 데이터 객체를 직접 수정하는 대신 새 객체를 생성하는 방식으로 수정하면서 부수 효과를 줄였습니다.
설계 변경 범위가 생각보다 넓어져 연관 모듈을 모두 리팩터링해야 했고, 변경 범위를 팀원과 미리 합의하지 않아 작업이 겹쳤습니다. 아키텍처 결정은 초기에 팀 전체가 이해해야 한다는 것을 이 경험에서 배웠고, 설계 문서를 먼저 공유하고 피드백을 받는 방식을 이후 프로젝트부터 적용했습니다.
구조 개선과 팀 공유 선행이 아키텍처 도전 해결의 핵심이라는 결론을 갖고 있습니다.