전체 글 16

Docker 를 사용하여 Service 분리해보기(2) - 도커 설치 및 서비스 실행

앞서전 게시물에선 도커에 개념에 대해 알아봤다. 이번엔 window에 도커를 사용할 수 있도록 설정 작업을 진행하고, 도커 설치 및 애플리케이션 서비스 띄우는 작업까지 해보도록 하겠다. 시나리오작성자는 두 개의 JAR 파일인 app1.jar와 app2.jar를 각각 다른 컨테이너에서 실행하고 관리하고자 한다. 이를 통해 각 애플리케이션을 독립적으로 운영할 수 있으며, 각 컨테이너의 설정이나 환경을 별도로 구성하여 관리할 수 있다.포트 설정:app1.jar는 컨테이너 내부에선 8080 포트에서 실행되며, 외부에서는 80 포트로 접근app2.jar는 컨테이너 내부에선 8081 포트에서 실행되며, 외부에서는 81 포트로 접근Window 환경에서 docker 설치아래 블로그를 보고 따라하면 된다. https:/..

DevOps/Docker 2024.10.01

Docker 를 사용하여 Service 분리해보기(1) - Docker란?

앞서작성자는 도커를 실제 업무에 사용해본 경험이 없다. 공부하면서 알게된거지만 도커는 생각보다 많은 개발자들이 업무에 활용하고 사용하고 있었다.. (난 왜 항상 뒤쳐지는가..) 물론 이번에 개발하게된 서비스가 도커를 사용하여 서비스가 관리가 되고 있었기에 관심을 가지게 되었다. 도커를 사용하여 서비스를 관리하는 방법에 대하여 알아보자Docker 란?구글에 도커란 이라고 검색만 해도 도커에 대한 개념을 알 수 있지만 내가 보고, 읽은 개념중 재밌고, 또 실무에 적용될만한 개념만 적어보도록 하겠다. 먼저 도커에 어원이 재밌다. 도커는 컨테이너 기반의 가상화 플랫폼이다. 부두에서 컨테이너를 옮기고 관리하는 직업인 docker에서 따 온 이름에 걸맞게 컨테이너를 잘 다룰 수 있게 도와 주는 도구 라고 한다. 나..

DevOps/Docker 2024.09.29

[Springboot] CustomException 처리

앞서API 개발에서 예외 처리는 클라이언트에게 발생한 오류의 원인을 명확히 전달하는 데 중요하다. 이를 통해 클라이언트는 문제를 신속하게 파악하고 해결할 수 있다. 예를 들어, 404 오류는 URI 입력 오류나 API 삭제 등 여러 원인으로 발생할 수 있으며, 이 경우 클라이언트에게 "잘못된 URI" 또는 "API가 삭제되었습니다"와 같은 구체적인 정보를 제공하는 것이 필요하다.이번엔 Custom Exception 처리를 통해 이러한 오류 메시지를 일관되게 제공하는 방법에 대해 알아보자.패키지 및 클래스 추가위와 같이 패키지 및 클래스를 추가하자.CommonDtopackage com.hkhong.study.global.dto;import com.hkhong.study.global.exception.Cus..

Backend/JAVA 2024.09.24

spring-security + JWT 이용 로그인(4) - 토큰 이용 API 호출

앞서토큰을 이용하여 유저정보를 가져오는 API를 만들어보자JwtUtil 수정//클레임 추출public Claims extractClaims(String token){ return Jwts.parser() .setSigningKey(secretKey) //.parseClaimsJwt(token) .parseClaimsJws(token) .getBody();}클레임 추출하는 부분에 parseClaimsJwt -> parseClaimsJws 로 변경, 서명이 포함된 JWT를 사용할 때 parseClaimsJws를 사용해야 합니다코딩중 해당 메서드 사용시 에러나는걸 발견했다.. 수정해주자 UserControllerpackage ..

Backend/JAVA 2024.09.10

spring-security + JWT 이용 로그인(3) - 로그인 구현

앞서spring-security를 활용하여 로그인 기능을 구현해보자. 패키지 및 클래스 추가로그인 API 구현을 위해 각 레이어들을 추가시키도록 하자.controller패키지 -> AuthControoler.classservice패키지 -> AuthServicedto 패키지 -> userDto.classJwtAuthenticationFilter 수정package com.hkhong.study.config;import com.hkhong.study.util.JwtUtil;import jakarta.servlet.FilterChain;import jakarta.servlet.ServletException;import jakarta.servlet.http.HttpServletRequest;import jaka..

Backend/JAVA 2024.09.10

spring-security + JWT 이용 로그인(2) - spring-security 설정

앞서전에 spring-security 란 무엇인가 또 로그인 아키텍처 순서에 대해 알아보았다. 이번엔 코드를 작성하여 구현해 보도록 하자. 전에 만들어 놓았던 JWT 생성 코드또한 같이 사용할 예정이다. 의존성 추가dependencies { ... implementation 'org.springframework.boot:spring-boot-starter-security' ...}스프링 시큐리티를 사용하기 위해 위 코드를 추가해 의존성을 추가함패키지 및 클래스 추가 config 패키지 추가JWT필터인 JwtAuthenticationFilter 클래스 추가spring-security 관련설정인 SecurityConfig 클래스 추가 JwtAuthenticationFilter @Componen..

Backend/JAVA 2024.09.09

spring-security + JWT 이용 로그인(1) - spring-security란

앞서JWT토큰을 만드는 서비스를 만들어봤고, 이번엔 spring-security 를 이용해서 토큰로그인을 구현해 보도록 하자. 스프링 시큐리티 사용 이유웹 애플리케이션과 서비스의 사용이 증가하면서 보안 요구사항이 더 중요해짐 또한 데이터의 중요성이 커지면서 고객 데이터의 효율적인 관리 능력 또한 중요해지고 있기에, CSRF 방어, XSS 방어, 세션 관리 등 다양한 보안 요구사항이 필요함스프링 시큐리티 제공 기능인증(Authentication)사용자의 신원을 확인하는 기능입니다.폼 로그인: 기본 로그인 폼을 제공하고, 사용자 인증을 처리합니다.OAuth2 / OIDC: 소셜 로그인, 외부 인증 제공자와의 통합을 지원합니다.Basic Authentication: HTTP 기본 인증을 지원합니다.JWT (J..

Backend/JAVA 2024.09.09

JWT 토큰 만들기(2)

앞서앞서 설명한 내용을 토대로 자바를 통해 토큰을 생성하는 서비스를 만들어 보도록 하자.  프로젝트 생성Spring Boot + Gradle 프로젝트 생성Gradle 추가implementation 'io.jsonwebtoken:jjwt:0.9.1' // JWT 라이브러리JWT 토큰 관련 클래스 생성util 패키지 및 jwt토큰을 관리하는 JwtUtil 클래스를 생성한다.JWT 토큰 생성 소스전체코드는 아래와 같고, 코드별 역할을 알아보도록 하자. package com.hkhong.study.util;import io.jsonwebtoken.Claims;import io.jsonwebtoken.Jwts;import io.jsonwebtoken.SignatureAlgorithm;import lombok.Re..

Backend/JAVA 2024.09.04

JWT 토큰 만들기(1)

앞서웹개발자라면 한번쯤은 꼭 들어봤을 단어다. 첫 회사 입사 후 유지보수를 진행하면 대수롭지 않게 넘겼었지만 동작방식에 큰 역할을 차지하고 있는 친구다.갑자기 머릿속에 떠오른 개념이지만 생각난김에 정리해보도록 한다 알고 있던 개념이지만 정리해보자.JWT 란?JWT 토큰은 JSON Web Token의 줄임말임. 사용자 인증과 정보를 안전하게 전달하기 위해 사용됨.끝JWT 사용이유 및 동작방식 Session 과거 세선 또는 쿠키를 통한 인증의 한계를 해결하기 위해 등장, 전통적인 세션 기반 인증 방식에서는 서버가 각 사용자의 세션을 관리해야 했음. 이 경우, 사용자가 많아지면 서버의 부담이 커지고, 확장성 문제가 발생함 그림과 같이 로그인 정보를 sever 에서 관리 보관함 JWT인증 정보를 담고 있는 토..

Backend/JAVA 2024.08.26

Kotlin, Spring Boot 사용 Restful API 만들기(2)

앞서캡처된 코드들은 10번 항목에서 코드로 확인할 수 있음 DB연결 및 테이블 데이터 생성 및 조회 API 만들기1) API 수정 Kotlin, Spring Boot 사용 Restful API 만들기(1) 에서 만든 API를 일부 수정 data class:  이 키워드는 Kotlin에게 이 클래스가 데이터 저장 용도로 사용되는 클래스임val id: String?: val은 불변변수 (var는 가변변수), String?(물음표) 은 값이 null도 허용이 된다는 뜻으로 val id 는 null 또는 String  타입의 값을 가질 수 있음2) GET 호출애플리케이션 실행시 Messge함수에 따라 list에 값이 들어갔고 list값이 출력된걸 볼 수 있음그런데 이상한점이 있다 난 출력을 하라는 명령을 따로 ..

Backend/Kotlin 2024.08.18