@Servicepublic class ReservationService { public int calculateFinalPrice(int originalPrice, String discountType) { int finalPrice = originalPrice; // 문제 1: 문자열로 타입 구분 → 오타 위험, 타입 안전성 없음 // 문제 2: 모든 할인 로직이 한 곳에 뭉쳐있음 // 문제 3: 매직 넘버(1000, 0.1) 직접 사용 // 문제 4: 정책 추가될 때마다 if문 계속 추가해야 함 (OCP 위반) if (discountType.equals("AMOUNT")) { ..
1. 개요이번에 개발하는 프로젝트 요구사항에 실시간으로 기기의 정보를 받아와 관리자 화면에 보여줘야하는 요구사항이 있어 실시간성 기술이 필요한 기술을 사용하게 되었습니다. 제미나이와 토론하며 얻은 지식과 기술적 결정의 배경을 정리해, 비슷한 고민을 하는 분들과 나누고자 합니다.2. 기존에 웹 소켓을 사용했던 배경AWS 웹소켓은 수만 개의 커넥션을 직접 관리해 줍니다. 애플리케이션 서버는 연결 시 커넥션 정보만 저장하면, 이벤트 기반으로 쉽게 데이터를 전달할 수 있어요. 커넥션 리소스도 AWS가 처리하므로 서버 부담과 유지보수 비용이 모두 줄어듭니다. 이런 장점 덕분에 기존 애플리케이션은 소켓으로 실시간 조회를 제공했습니다. 하지만 IDC 환경에서는 상황이 다릅니다. AWS가 제공하던 기능을 직접 만들고..