반응형

개발/Spring 72

[spring] 멀티 모듈 프로젝트 설정

사이드 프로젝트 백엔드 설계를 어떻게 할지 고민 중 박용권님의 우아한 모노리스 세미나를 듣고 멀티 모듈로 변경하였다. 나한테는 개인적으로 도움이 된 부분이 많아서 좋았던 것 같다. 현재 마이크로서비스에서 멀티모듈로 구조를 바꿔가는 중이라 따로 사이드이펙트가 생기거나 그러지는 않은 상황인데 멀티 모듈로 개발하면서 생긴 고민이나 내가 생각 했을 때 문제점? 을 블로그에 작성하려고 한다. 이번 달 최고 잘한 일은 귀찮더라도 세미나를 간 것이 아닐까 싶다. 멀티 모듈로 구성하면서 참고한 깃허브 저장소이다. 세미나를 해주신 박용권님의 깃허브 저장소이다. https://github.com/arawn/building-modular-monoliths-using-spring arawn/building-modular-mo..

개발/Spring 2020.01.30

모놀리틱 서비스에서 마이크로서비스로의 마이그레이션

> 해당 글은 엔터프라이즈 자바 마이크로 서비스 를 보고 작성합니다. 언젠간 모놀리틱 서비스에서 마이크로서비스로 마이그레션 할 일이 있을 것이라 생각을 하며,,,, 모놀리틱 서비스에서 마이크로서비스로 마이그레이션 할 때 여러가지 패턴이 존재한다. - 빅뱅 패턴 (Big Bang) - 스트랭글러 패턴 (Strangler) - 하이브리드 패턴 (Hybrid) 빅뱅 패턴 빅뱅 패턴은 쉽게 말해 기존 모놀리틱 서비스에서 한 번에 바로 마이크로서비스로 변환하는 패턴을 말한다. 급격하게 변하기 때문에 사이드이펙트가 크고 비즈니스에 큰 타격이 갈 가능성이 존재한다. 예를 들면 마이크로서비스로 한 번에 변환했는데 어느 부분에서 갑자기 서비스가 먹통이 돼 CS 폭주 등,, 근데 시스템이 먹통인 상태에서 오류를 고치는데는..

개발/Spring 2020.01.01

[Spring] Spring Security 를 이용한 SNS 로그인 (카카오)

이번에 사이드프로젝트를 진행하면서 카카오 로그인을 붙여야 했다. Spring boot 를 이용하여 카카오 로그인을 연동해야 했기에 카카오에서 제공하는 REST API 를 이용하였다. https://developers.kakao.com/docs/restapi/user-management Kakao Developers_ 더 나은 세상을 꿈꾸고 그것을 현실로 만드는 이를 위하여 카카오에서 앱 개발 플랫폼 서비스를 시작합니다. developers.kakao.com 우선 처음으로 access token 과 refresh token 을 관리하는 것을 구현해보기 때문에 처음에 Spring Security 를 이용하여 어떻게 구현할 것인지, access token 과 refresh token 을 어떻게 관리하고 갱신할..

개발/Spring 2019.12.29

[Spring] Slack Slash Command - 5

이번 글에서는 코드로 살펴보도록 하겠습니다. ■ data payload data payload 를 사용해야 하기 때문에 저는 객체에 매핑이 되도록 해주었습니다. 여기서 놓치지 말아야 할 부분은 slack 에서는 data payload 을 보낼 땐 Content-type header 를 application/x-www-form-urlencoded 로 설정해서 보냅니다. 그렇기 때문에 위 사진처럼 @RequestBody 를 사용하지 않습니다. 자세한 사항은 아래 링크를 참고해주시면 감사하겠습니다. 이렇게 개발을 함으로 써 따로 converter 를 만들지 않아도 쉽고 빠르게 개발을 할 수 있게 됩니다. 그리고 저는 Lombok 을 주로 사용해서 개발을 하는데 이 때 매핑할 클래스에 각 필드에 대한 sette..

개발/Spring 2019.10.07

[Spring] Slack Slash Command - 4

이번 장에서는 슬랙에서 웹 서버로 요청 시에 어떠한 data payload 를 보내는지와 사용자가 Slash Command 에 입력한 text 를 웹 서버에서 얻어보는 코드를 소개하려고 합니다. https://api.slack.com/slash-commands 를 보면 Slash Command 를 호출하면 슬랙에서 data payload 와 어떤 유저가 요청을 했는지에 대한 정보를 제공한다고 나와 있습니다. Slash Commands Learn how to build bot users, send notifications, and interact with workspaces using our APIs. api.slack.com 그리고 어떤 data payload 를 전달하는지에 대한 예도 나와 있습니다. ..

개발/Spring 2019.10.06

[Spring] Slack Slash Command - 3

먼저, Slack workspace 가 생성돼 있다고 가정을 하고 진행을 하도록 하겠습니다. 만약 workspace 가 생성 돼 있지 않으시다면 해당 링크 https://slack.com/intl/en-kr/ 에서 생성을 진행해주세요. Where work happens Slack is where work flows. It's where the people you need, the information you share, and the tools you use come together to get things done. slack.com 이제 Slack 에서 제공하는 Slash Command 앱을 생성하려고 합니다. 다음의 링크에서 생성을 할 수 있습니다. https://api.slack.com/apps ..

개발/Spring 2019.10.06

[Spring] Slack Slash Command - 2

이번 장에서는 사용자가 Slack Slash Command 입력 시 슬랙에서 보내는 요청을 받을 수 있는 웹 서버를 간단하게 만들도록 하겠습니다. Gradle 기반의 Spring Boot 2.1.8 의존성 : org.springframework.boot:spring-boot-starter-web org.projectlombok:lombok 저는 Spring Boot 를 사용하여 개발을 하려고 합니다. 프로젝트를 생성하였다면 다음과 같이 임시로 Controller method 를 추가해줍니다. Http method 로 POST 를 사용한 이유는 slack 에서 POST 로 요청을 하기 때문입니다. 우선 아직까지는 Slash Command 에 대한 테스트를 하기 위해서 추가한 코드들이기 때문에 깃플로우를 이..

개발/Spring 2019.10.06

[Spring] Slack Slash Command - 1

Spring boot 를 이용하여 Slack Slash Commmand 예제를 작성해보려고 합니다. github 나 google 에 검색했을 때 Slack 에서 제공하는 Slash Command 를 간단히 사용하는 프로젝트나 코드는 존재하나, 슬랙의 요청을 검증하는? 그런 보안 관련한 코드는 자세히 없는 것 같아 해당 부분을 예제로 만들어 보려고 합니다. 먼저, Slack 에서 제공하는 Slash Command 는 다음과 같이 사용할 수 있습니다. 이 때, 입력한 Slash Command 로 인해 데이터가 Slack -> App 으로 전송되어 App 에서 원하는 동작을 할 수 있습니다. 회사에서 긴급한 상황 때 Slack 에서 Slash Command 를 이용하여 손쉽게 배포할 수 있도록 하는 서비스를 ..

개발/Spring 2019.10.01

[Spring] Spring security + jwt, 토큰 요청 시 "잘못된 자격증명" 뜰 시

잘못된 자격증명 이 뜨는 경우가 많으나 그 중 한 가지 경우에 대해 이야기를 해보려고 한다. 사진과 같이 토큰을 요청했다. 현재 DB에는 다음과 같은 정보가 들어있다. username : robin.kwon@opensurvey.co.kr password : (passwordEncoder.encode("pasword") 를 한 값) 이 때 사진과 같이 정상적으로 요청을 했을 때도 잘못된 자격증명 이라는 오류를 뱉는다. 생각을 해보니 DB 에 있는 `robin.kwon@opensurvey.co.kr` 이란 데이터의 encoding 된 password 값이 일치하지 않아 발생하는 것 같다고 생각했다. 즉, 토큰 요청 시 다음과 같이 동작되야 토큰 요청이 정상적으로 수행이 될 것이다. passwordEncord..

개발/Spring 2019.01.30

[Spring] eureka discovery 서버에 eureka client 등록이 되지 않을 때

eureka disconvery servcer 에 eureka client 가 등록이 되지 않을 때 방법이다. eureka client 의 application.yml 은 다음과 같다. 참고로 꼭 spring.application.name 은 등록해줘야 한다. spring: application: name: oauth-api eureka: client: serviceUrl: defaultZone: ${EUREKA_SERVICE_URL:http://localhost:8761/eureka} instance: preferIpAddress: true eureka client 서버의 Main 클래스에 @EnableEurekaClient 달아줬는지 확인. 이렇게 @EnableEurekaClient 어노테이션을 달아..

개발/Spring 2019.01.17
반응형