728x90
반응형
📌 TIL (Today I Learned) - 2024.02.14
오늘은 API 설계 및 데이터베이스 관련 개념을 정리하면서, 여러 고민을 해결했다.
🚀 오늘의 배움
- SUT/DoC 개념을 명확히 이해하고, 테스트에서 검증하는 범위를 고민해볼 필요가 있다.
- 추적 코드(Tracking Code) 설계 시, TSID와
project_id
암호화 방식의 장단점을 비교해야 한다. - AES-GCM을 사용하면 Base64 인코딩 후 약 55바이트가 필요하므로
VARCHAR(64)
로 설정하는 것이 적절하다. created_at
과updated_at
필드는 MySQL에서 자동 처리되지만,INSERT
시updated_at
을 명시적으로 설정하는 것이 좋다.- API 명세서를 작성할 때는 Markdown을 기본으로 하고, 자동화가 필요하면 Swagger를 활용하는 것이 효과적이다.
🔹 1. SUT & DoC 개념 정리
- SUT (System Under Test): 테스트 대상 시스템(클래스, 함수, 모듈 등)
- DoC (Depended-on Component): SUT가 의존하는 외부 컴포넌트 (예: Repository, Service)
- SUT가 내원객 전체 조회 논리만 검증한다는 의미
- 특정 기능만 검증하고, 추가적인 권한 체크나 필터링은 고려하지 않는다는 뜻
🔹 2. 추적 코드(Tracking Code) 설계 고민
- TSID vs
project_id
암호화 방식- TSID 사용: 전역적으로 고유한 ID, 순차 정렬 가능, 하지만
project_id
와 직접 연결되지 않음 project_id
암호화: 보안성 높음, 직접 매핑 가능하지만 정렬 불가, 복호화 오버헤드 발생
- TSID 사용: 전역적으로 고유한 ID, 순차 정렬 가능, 하지만
✔ 결론: tracking_code
로 TSID를 사용하고, 내부적으로 project_id
를 매핑하는 방식이 적절
🔹 3. project_id
암호화 후 필드 크기 설정
- AES-GCM 암호화 후 Base64 인코딩 시, 약 55바이트 필요
- 최적의 필드 크기:
VARCHAR(64)
✔tracking_code
는VARCHAR(64)
로 설정하면 안전하게 저장 가능
🔹 4. SQL 문법 정리 (DDL vs DML)
- DDL (Data Definition Language) →
CREATE
,ALTER
,DROP
(데이터베이스 구조 정의) - DML (Data Manipulation Language) →
INSERT
,UPDATE
,DELETE
(데이터 조작)
✔ 즉,CREATE TABLE
은 DDL,INSERT
와UPDATE
는 DML
🔹 5. created_at
, updated_at
자동 설정 여부
✔ created_at
→ INSERT
시 CURRENT_TIMESTAMP
자동 설정
✔ updated_at
→ UPDATE
시 자동 변경 (ON UPDATE CURRENT_TIMESTAMP
사용)
⚠ INSERT
시 updated_at
도 초기값 설정하려면 DEFAULT CURRENT_TIMESTAMP
추가 필요
🔹 6. API 명세서 작성 방법
✔ API 명세서 작성 시 필수 요소
- 개요, 엔드포인트, 요청/응답 데이터, 상태 코드, 예제 요청
✔ Markdown vs Swagger/OpenAPI
- Markdown: 간단한 문서화
- Swagger: Spring Boot 프로젝트에서 자동 문서화
✔ API 명세 예제 (Markdown)
프로젝트 조회 API
- Method:
GET
- Endpoint:
/api/v1/project/{project_id}
- Headers:
Authorization: Bearer {token}
✔ Swagger 설정을 통해 API 명세를 자동화하는 것도 가능!
💡 오늘 배운 개념들을 실제 프로젝트에 적용하면서 더 깊이 이해해야겠다! 🚀
728x90
반응형
'Blog > TIL' 카테고리의 다른 글
2025-02-18 (화) (0) | 2025.02.18 |
---|---|
2025-02-17 (월) (0) | 2025.02.17 |
2025-02-13 (목) (2) | 2025.02.13 |
2025-02-12 (수) (2) | 2025.02.12 |
2025-02-11 (화) (0) | 2025.02.11 |
댓글