일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- I'm Sorry
- 인공지능
- 딥러닝
- springboot
- 웹개발
- 프로그래밍언어
- 자료구조
- 빅데이터
- 소프트웨어공학
- 머신러닝
- 클라우드컴퓨팅
- 프로그래밍
- 데이터분석
- 컴퓨터공학
- 데이터베이스
- 사이버보안
- 버전관리
- 자바스크립트
- 컴퓨터과학
- 파이썬
- 디자인패턴
- 보안
- 알고리즘
- 소프트웨어
- 데이터구조
- 네트워크
- 데이터과학
- 컴퓨터비전
- 네트워크보안
- Yes
- Today
- Total
목록springboot (35)
스택큐힙리스트
Mock이냐, E2E냐? 당신의 테스트 전략을 점검하라애플리케이션을 개발할 때, 프론트엔드와 백엔드가 잘 통신하고 있는지 테스트하는 건 아주 중요합니다.그런데 테스트 방식에는 다양한 전략이 존재하죠.그중 가장 대표적인 것이 Mock 기반 테스트와 E2E(End-to-End) 테스트입니다.✅ Mock 테스트: 빠르고 단위별로 확인 가능Mock은 실제 서버를 사용하지 않고, 가짜 데이터를 반환하는 서버나 객체를 통해 테스트하는 방식입니다.장점빠른 속도: 실제 서버 요청 없이 테스트 가능안정성: 백엔드 변경에 영향받지 않음다양한 예외 상황 쉽게 시뮬레이션 가능 (ex. 500 에러, 응답 지연)단점실제 API와의 연동은 보장되지 않음프론트와 백엔드의 계약이 어긋나도 모를 수 있음실제 운영 환경과 다른 환경에서..
클린 코드로 마무리하는 To-Do API 리팩터링드디어 실전 프로젝트 마지막 날입니다.그동안 만들어온 To-Do API를 클린 코드 기준으로 리팩터링하고, Swagger로 문서화까지 마무리해보겠습니다.✅ 모듈 통합 & 코드 리뷰To-Do 프로젝트는 다음과 같은 구조로 구성되어 있었습니다:Controller: 클라이언트 요청을 받음Service: 비즈니스 로직 처리Repository: DB와의 통신 담당DTO: 계층 간 데이터 전달 객체마지막 단계에서는 전체 코드를 정리하며 다음 기준으로 리팩터링을 진행했습니다:메서드 책임 분리: 하나의 메서드는 하나의 일만 하도록네이밍 통일성 확보: 직관적인 이름으로 명확히중복 제거: 반복되는 코드는 유틸리티로 추출예외 처리 일관성: 커스텀 예외 + 전역 핸들러 활용응답..
왜 필요한가?업무 로직이 복잡해질수록 if (status == CREATED) … else if (status == SHIPPED)… 같은 분기문이 폭발한다. 새 상태가 추가될 때마다 코드가 누더기가 되는 건 시간문제다. State 패턴은 객체의 상태를 클래스로 쪼개고, 상태별 동작(행위)을 그 클래스 안에 숨겨 버린다. 그러면 Context(주 객체)는 “지금 내가 어떤 상태인가?”만 알고 있으면 된다. 조건문 대신 상태 객체 교체만으로 행동이 바뀌니, 가독성과 유지보수성이 크게 올라간다.핵심 개념 한 줄 요약“상태를 클래스로 캡슐화해, 객체의 행동을 런타임에 교체한다.”Context ↔ State 인터페이스 ↔ ConcreteState 들이 만드는 삼각 구도가 전부다.Kotlin 예제 — 주문 상태 ..
왜 WebSocket + STOMP인가?채팅·알림처럼 양방향 저지연이 필수인 기능은 HTTP Polling이나 SSE만으로 한계가 있습니다. WebSocket으로 영구 연결을 열고, STOMP 프로토콜로 채널·헤더·구독 개념을 입혀주면 메시지 라우팅이 쉬워집니다. Spring Boot는 spring-websocket 모듈 하나로 이 조합을 깔끔히 지원해 왔고, 2025년 현재 Boot 3.3에서도 설정이 거의 변하지 않았습니다.1️⃣ 의존성 한 줄implementation("org.springframework.boot:spring-boot-starter-websocket")외부 브로커(RabbitMQ, Redis Streams 등)를 쓰려면 대응 스타터를 추가하세요.2️⃣ WebSocket 설정 클래스@..