본문 바로가기

Matrix

(66)
Spring에서의 API 예외 처리 전략 1. 왜 예외 처리 전략이 중요한가?백엔드에서 예외(400~500)가 발생하면 사용자에게 정확하고 일관된 응답을 전달해야 함예외 응답이 일관되지 않으면:프론트는 어떤 에러인지 해석 불가디버깅도 어려움클린 아키텍처에선 도메인 → 컨트롤러 계층까지 예외가 잘 캡슐화되어야 함 2. 기본 예외 처리 방식의 문제점@GetMapping("/user/{id}")public UserDto getUser(@PathVariable Long id) { return userService.findById(id); // 존재하지 않으면 예외 발생}만약 id에 해당하는 유저가 없다면 NoSuchElementException 발생Spring이 알아서 500 에러를 내보냄 (내가 컨트롤 불가)메시지도 무의미함 → 사용자/프론트엔..
로코 프로젝트 로그인 방식 트러블슈팅 기존 로그인·인증 로직의 문제점https://github.com/Morgan-EE/loco_project1. JWT를 localStorage에 저장일반 로그인 처리 후 토큰을 localStorage에 저장합니다.해당 부분은 frontend/src/app/login/page.tsx 38~40행에서 확인할 수 있습니다:localStorage는 자바스크립트로 접근 가능하기 때문에 XSS 공격 시 토큰이 쉽게 탈취될 수 있습니다.const data = await res.json();localStorage.setItem('token', data.token);localStorage.setItem('username', data.username);OAuth 로그인 성공 시에도 URL 파라미터로 받은 토큰을 그대로 lo..
Spring Security Filter Chain Spring Security : 웹 애플리케이션에 보안 기능을 쉽게 붙일 수 있도록 해주는 프레임워크제공하는 기능:로그인/로그아웃권한(Role) 기반 접근 제어CSRF 방지세션 관리비밀번호 암호화JWT 인증 등1. Security Filter Chain이란? – 요청을 지키는 보안 게이트Spring Security는 요청이 컨트롤러에 도달하기 전, 여러 보안 필터들을 차례대로 통과시키면서“이 요청이 안전한가?”, “누구인가?”, “권한이 있는가?”를 체크하는 시스템입니다.(HTTP 요청을 필터로 감싸 처리함)주요 구조:DelegatingFilterProxy : Spring Security 필터로 진입하는 입구톰캣(또는 서블릿 컨테이너)에 등록된 서블릿 필터진짜 필터 로직은 Spring 안에 있음Filte..
TDD와 테스트 전략 1. TDD란 무엇인가?Test-Driven Development (테스트 주도 개발)테스트 코드를 먼저 작성하고, 실제 구현 코드를 작성하는 개발 방식 💡 TDD 3단계 사이클 (Red → Green → Refactor)Red: 실패하는 테스트 작성Green: 테스트 통과하는 최소한의 코드 작성Refactor: 중복 제거, 리팩토링2. TDD의 이점요구사항에 맞춘 정확한 구현리팩토링 시 기존 기능 깨짐 방지개발자 입장에서 문서 역할도 가능테스트 가능한 구조로 개발하게 됨 → 유지보수성 증가3. 테스트의 종류분류설명예시단위 테스트메서드/클래스 단위서비스 메서드 로직 테스트통합 테스트여러 컴포넌트 연동 확인컨트롤러 + 서비스 + DB인수 테스트실제 사용자 흐름 테스트회원가입 시 전체 플로우UI 테스트프론..
OAuth2 OAuth2(Open Authorization)제3자 애플리케이션이 사용자 비밀번호를 직접 알지 않고도, 사용자의 권한을 위임받아 자원에 접근할 수 있도록 설계된 인증 및 권한 부여 프레임워크. 주로 소셜 로그인이나 API 접근 권한 관리에 사용된다.어플리케이션을 이용할 때 사용자가 해당 어플리케이션에 ID, PW등의 정보를 제공하지 않고, 신뢰할 수 있는 외부 어플리케이션(Naver, Google, Kakao, Facebook 등)이 제공하는 Open API에 ID, PW를 입력하여 해당 어플리케이션이 인증 과정을 처리해주는 방식.'2'는 버전 번호를 뜻함(2는 보안은 자체 암호화가 아니라 HTTPS에 위임함(간단 버전)) 핵심 개념 요약용어설명Resource Owner (리소스 소유자)일반적으로 사용..
JWT JWT란?JWT (JSON Web Token) 는 JSON 포맷을 이용해 정보를 안전하게 전달하기 위한 토큰 기반 인증 방식입니다. 주로 사용자의 인증 상태를 유지하거나 권한 검증을 위해 사용됩니다. JWT는 총 3개의 파트로 구성되며, . 으로 구분됩니다. (헤더(header), 페이로드(payload), 서명(signature) 세 파트)ex) xxxxx.yyyyy.zzzzz Header (헤더){ "alg": "HS256", "typ": "JWT"} Payload (페이로드){ "sub": "1234567890", "name": "John Doe", "iat": 1516239022} Signature (서명)HMACSHA256( base64UrlEncode(header) + "." + b..
기본 웹 아키텍처 개념 최신 웹 애플리케이션 아키텍처 개요https://www.storyblocks.com/ 웹사이트(영상, 오디오, 이미지 등 다양한 스톡 미디어를 제공하는 구독 기반 플랫폼)의 아키텍쳐 표현 사용자가 "숲 속의 강렬하고 아름다운 안개와 햇살"을 검색하여 Storyblocks의 이미지 상세 페이지에 접속하면 다음과 같은 일련의 과정이 빠르게 진행됩니다.(1) DNS: 사용자가 브라우저에 Storyblocks 주소를 입력하면, 가장 먼저 (1) DNS 서버에 요청하여 해당 주소의 실제 IP 주소를 찾습니다. 이는 Storyblocks 서버로 연결하기 위한 첫 번째 단계입니다.(사용자 브라우저) → (2) Load Balancer: IP 주소를 얻은 브라우저는 Storyblocks 서버로 접속을 시도합니다. 이때..
김동규_포트폴리오 입니다. About Me이름: 김동규(92년생)지원 직무: 백엔드 개발자 (Java & Spring Boot)목표: 사용자에게 가치 있는 서비스를 만드는 백엔드 개발자학력 : 대졸/학사2018 | Embry-Riddle Aeronautical University (미국, 캘리포니아)Aircraft Maintenance(항공정비) 전공 / Management(경영,관리) 부전공, 2016.01(편입) ~ 2018.12City College of San Francisco (미국, 캘리포니아)Aircraft Maintenance(항공정비) 전공, 2013.01 ~ 2015.05광양제철고등학교 졸업, 2008.03 ~ 2011.02개발 교육 이력 2022.08 ~ 2023.02 | 산대특 자바 기반 국비과정 수료2023..
RabbitMQ란 RabbitMQ와 Kafka등장 배경RabbitMQ가 등장한 이유 (2007년)동기: 애플리케이션 간 통신을 안정적이고 유연하게 하자1. 배경:2000년대 초반, 웹 서비스 간 동기 호출(REST, SOAP 등)이 많았음서비스 간 API 호출은 느리고, 실패하면 전체 시스템이 멈춤 (tight coupling)"느려도 되니까 메시지로 보내고 비동기로 처리하자"는 니즈가 생김="중요하지 않거나, 지금 당장 처리하지 않아도 되는 일을 나중에 천천히 처리하자."2. RabbitMQ의 목적:서비스 간 메시지를 안정적으로 중계 (메시지 브로커)비동기 처리, 재시도, 메시지 우선순위 등 다양한 큐 기능 지원AMQP 프로토콜 기반으로 신뢰성과 범용성을 추구3. RabbitMQ는 이런 문제 해결에 초점:주문 완료 후 ..
CI/CD 개념 정리 CI/CD는 소프트웨어 개발에서 코드 작성(개발)부터 배포까지의 과정을 자동화해주는 방법론.CI와 CD는 각각 다른 의미지만, 실제로는 하나의 파이프라인처럼 이어져 있음. 1. CI/CD란 무엇인가?CI (지속적 통합): 코드 커밋 시 자동 테스트 & 빌드CD (지속적 배포): 빌드된 결과물을 자동으로 배포왜 필요한가? (협업 효율, 버그 감소, 속도 향상) CI: Continuous Integration (지속적 통합)"모든 개발자가 자주, 매일같이 코드를 공유 저장소에 자주 통합한다."● 핵심 개념머지(merge), 빌드, 테스트의 자동화여러 명이 개발할 때, 코드 병합(merge) 전에 자주 코드를 통합해서 충돌 가능성을 줄임자동 테스트를 돌려서, 올바른 코드인지 검증● 예시누군가 main 브랜치에..