피드로 돌아가기
Dev.toBackend
원문 읽기
TLE 상태 머신과 Orekit 통합을 통한 실시간 위성 추적 백엔드 구현
From TLEs to Real-Time Satellite Tracking: Building an Orbital Backend with Spring Boot and Orekit
AI 요약
Context
기존 위성 추적 도구들의 블랙박스형 API 의존성을 탈피하여 자체 궤도 계산 엔진 구축 필요성 제기. TLE 데이터의 시간 경과에 따른 정밀도 저하와 천체 물리학 라이브러리의 웹 프레임워크 통합 제약이라는 기술적 난제 존재.
Technical Solution
- TLE 데이터 신선도 유지를 위한 5단계 State Machine(PENDING, ACTIVE, STALE, EXPIRED, FETCH_FAILED) 설계
- ConcurrentHashMap 기반의 Distributed Lock을 적용하여 다수 요청 발생 시 중복 리프레시 방지
- Orekit 라이브러리의 외부 데이터 파일 로딩 구조를 Spring Boot @Configuration 및 @PostConstruct로 추상화
- ECI 좌표계를 ITRF 좌표계로 변환하는 Frame Transform 로직을 통해 실시간 위도, 경도 및 고도 산출
- Propagation 연산 비용 절감을 위해 PostgreSQL 기반의 24시간 유효 기간 캐싱 레이어 도입
- CelesTrak API 부하 방지를 위한 5분 Cooldown 전략 및 최대 5회 실패 시 EXPIRED 처리 로직 구현
실천 포인트
- 외부 API 데이터의 유효 기간이 동적으로 변하는 경우, 단순 캐싱 대신 상태 기반 State Machine 도입 검토 - 계산 비용이 높은 물리/수학 연산 적용 시, On-demand 계산과 결과 캐싱의 적절한 Trade-off 설정 - 파일 시스템 의존성이 강한 레거시/학술용 라이브러리를 웹 서비스에 통합할 때 별도의 설정 클래스를 통한 초기화 경로 표준화 - 동시 요청으로 인한 외부 API Rate Limit 방지를 위해 Key 기반의 락 메커니즘 적용