* 인터널 개발 : 대상이 외부가 아닌 내부인 서비스를 개발
😫 문제
- 인지는 하고 있었지만, 우선순위가 밀렸던 중요한 기능들
- 새로운 기능을 빠르게 개발하고 싶었던 욕심때문에 모래성을 쌓았다 🥲
❌ 재발 방지 대책
- 개발환경과 운영환경의 완전한 격리
- 문제 예방
- 오늘 발생했던 문제도 운영환경과 개발환경이, 적어도 DB 라도 분리되어있었다면 발생하지 않았다.
- DB, NGINX, ETC.
- 문제 예방
- DB 백업
- 이슈 발생 시 복구
- 오늘 발생했던 문제도 백업이라도 되어있었으면, 바로 복구할 수 있었다.
- 아무리 테스트를 해도 완벽하게 할 수 없기 때문에(코너케이스...), 백업은 필수적이다.
- 이슈 발생 시 복구
- SOFT DELETE
- 테크닉
- Hard delete vs. Soft delete
Soft delete | Hard delete | |
데이터 보존 여부 | 데이터를 시스템에서 비활성 상태로만 표시 | 데이터를 완전히 제거 |
삭제 표시 방법 | 플래그 또는 상태 열을 사용하여 표시 | 직접적으로 데이터베이스에서 행을 제거 |
데이터 복구 가능성 | 삭제된 데이터를 복구할 수 있음 | 복구가 어려울 수 있음 |
이력 추적 용이성 | 삭제 이전의 데이터 상태를 추적할 수 있음 | 데이터의 이력을 추적하기 어려움 |
성능 및 최적화 | 데이터는 여전히 데이터베이스에 남아있음 | 데이터베이스 공간 최적화 가능 |
일반적 사용 사례 | 잘못된 삭제를 방지하고 데이터 보존이 중요한 경우 | 영구적인 데이터 소거가 필요한 경우 |
✅ 체크리스트
1. 테스트 전 체크 리스트
- 환경 설정 및 의존성:
- 환경 변수, 구성 파일 등의 설정이 올바로 되어 있는지 확인.
- 필요한 라이브러리, 패키지, 모듈 등이 설치되어 있는지 확인.
- 데이터베이스 및 스키마:
- 테스트를 위한 데이터베이스가 존재하고, 스키마가 올바르게 설정되어 있는지 확인.
- 테스트 데이터가 초기화되어 적절한 상태인지 확인.
- 코드 품질 및 린팅:
- 코드 린팅 도구를 사용하여 코드의 품질을 점검.
- 코딩 규칙 및 스타일 가이드를 준수하는지 확인.
- 테스트 데이터 및 시나리오:
- 테스트에 필요한 데이터가 생성되었는지 확인.
- 테스트 시나리오와 예상 결과를 검토하고, 예외 상황을 고려.
- 보안 및 권한:
- 보안 측면에서 특히 중요한 부분에 대한 검토 및 테스트.
- 액세스 권한이 올바로 설정되었는지 확인.
- 성능 테스트 환경:
- 성능 테스트를 위한 환경이 적절히 구성되어 있는지 확인.
- 부하 테스트 및 성능 측정을 위한 도구들이 설치되어 있는지 확인.
- 로그 및 모니터링:
- 적절한 로깅이 설정되어 있는지 확인.
- 모니터링 도구를 통해 시스템 상태 및 성능을 확인.
- 이전 테스트 결과 검토:
- 이전 테스트에서 발견된 결함 및 이슈들이 해결되었는지 확인.
- 이전 테스트에서의 학습을 바탕으로 추가로 검토할 사항이 있는지 확인.
- 백업 및 롤백 전략:
- 테스트 중 문제가 발생했을 때를 대비한 백업 및 롤백 전략을 확인.
- 운영 환경에 미치는 영향 검토:
- 테스트가 운영 환경에 미칠 영향을 사전에 고려하고, 필요한 조치를 취해야 함.
2. 풀 리퀘 전 체크 리스트
- 코드 리뷰:
- 다른 개발자 또는 팀 멤버들에게 코드 리뷰를 요청하고 피드백을 수용.
- 코드의 가독성, 모듈화, 코딩 스타일, 주석 등을 검토.
- 테스트:
- 변경된 코드에 대한 테스트를 작성하거나, 기존 테스트가 올바르게 실행되는지 확인.
- 테스트 커버리지를 고려하며, 모든 케이스를 검증.
- 빌드 및 린팅:
- 코드가 빌드되는지 확인.
- 코드 린팅 도구를 사용하여 코드의 품질을 검사.
- 의존성 및 라이브러리:
- 새로운 의존성이나 라이브러리가 추가되었다면, 해당 버전이나 설정이 올바른지 확인.
- 보안 검토:
- 코드에 보안 취약점이나 잠재적인 보안 문제가 있는지 확인.
- 보안 취약점 검색 도구를 사용하거나 수동으로 보안 측면을 검토.
- 문서화:
- 코드 변경에 대한 충분한 문서화가 되어 있는지 확인.
- README 파일이나 주석 등을 통해 사용 방법이나 변경 내용을 명확히 설명.
- 통합 테스트:
- 풀 리퀘스트의 변경 내용이 전체 시스템에 미치는 영향을 확인하기 위해 필요한 통합 테스트를 수행.
- 코드 충돌 해결:
- 만약 다른 풀 리퀘스트나 브랜치와 충돌이 발생한 경우, 충돌을 해결하고 충돌이 없는 상태로 머지 가능한지 확인.
- 머지 가능성 확인:
- 풀 리퀘스트를 머지하기 전에 충분한 검토가 이루어졌는지 확인하고, 머지 가능한 상태인지 확인.
🌟 작업 우선 순위
1. DB 백업
2. 개발환경과 운영환경 완전한 격리
..etc.
'회고 > 회사' 카테고리의 다른 글
이직 6개월차 느낀점(부제: 달라진 업무제도 적응기) (0) | 2023.06.18 |
---|---|
IT서비스기업 현장실습 회고 (0) | 2021.03.08 |
스타트업 인턴 회고 (0) | 2020.07.01 |