본문 바로가기
Blog/TIL

2025-02-14 (금)

by 코젼 2025. 2. 14.
728x90
반응형

📌 TIL (Today I Learned) - 2024.02.14

오늘은 API 설계 및 데이터베이스 관련 개념을 정리하면서, 여러 고민을 해결했다.

🚀 오늘의 배움

  • SUT/DoC 개념을 명확히 이해하고, 테스트에서 검증하는 범위를 고민해볼 필요가 있다.
  • 추적 코드(Tracking Code) 설계 시, TSID와 project_id 암호화 방식의 장단점을 비교해야 한다.
  • AES-GCM을 사용하면 Base64 인코딩 후 약 55바이트가 필요하므로 VARCHAR(64)로 설정하는 것이 적절하다.
  • created_atupdated_at 필드는 MySQL에서 자동 처리되지만, INSERTupdated_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 암호화: 보안성 높음, 직접 매핑 가능하지만 정렬 불가, 복호화 오버헤드 발생

결론: tracking_code로 TSID를 사용하고, 내부적으로 project_id를 매핑하는 방식이 적절


🔹 3. project_id 암호화 후 필드 크기 설정

  • AES-GCM 암호화 후 Base64 인코딩 시, 약 55바이트 필요
  • 최적의 필드 크기: VARCHAR(64)
    tracking_codeVARCHAR(64)로 설정하면 안전하게 저장 가능

🔹 4. SQL 문법 정리 (DDL vs DML)

  • DDL (Data Definition Language)CREATE, ALTER, DROP (데이터베이스 구조 정의)
  • DML (Data Manipulation Language)INSERT, UPDATE, DELETE (데이터 조작)
    즉, CREATE TABLE은 DDL, INSERTUPDATE는 DML

🔹 5. created_at, updated_at 자동 설정 여부

created_atINSERTCURRENT_TIMESTAMP 자동 설정
updated_atUPDATE 시 자동 변경 (ON UPDATE CURRENT_TIMESTAMP 사용)
INSERTupdated_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

댓글