본문 바로가기

분류 전체보기

spring boot 에 rabbitmq 적용하기 RabbitMQ 란 open source Message broker 로 알려져 있다 즉 mircro service에서 Producer-Consumer pattern을 이용할 시에 producer 가 message 를 send 하면 consumer가 소비하는 구조이다. 예를 들자면 어느 shop 에서 고객이 주문을 요청하면 producer 가 주문flow를 요청하고 microservice 에서 주문 요청을 처리하는 flow를 소비한다는 개념이다 이때 중간에서 rabbitMQ가 비동기로 이 주문요청의 event message를 queue 형식으로 받고 microservice에 전달하는 역할을 한다고 보면 된다. RabbitMQ 기본개념AMQP(Advanced Message Queuing Protocol) :..
(Spring Boot) @Transactional 이란? / @Transactional에 대하여 @TransactionalStackOverflow 질문중 UserNameNotFoundException 발생시 delete method가 실행되지않는다는 질문에 답을 하였습니다.https://stackoverflow.com/questions/52619924/how-to-execute-transaction-in-hibernate-while-throwing-exception/52620514#52620514 I have the following method in my transactional service layer implemented with Hibernate:@Override public void activateAccount(String username, String activationCode) thro..
AWS DynamoDB - (3) AWS SDK for Java 설정하기 OverviewAWS SDK for Java는 Amazon Web Service를 위한 JAVA APi이다. 즉, Amazon S3, Amazon DyanmoDB의 서비스를 사용하는 Java application을 만들 때 사용하게 된다. 이번 포스팅의 목표는 EC2 Instance에서 실행하는 Spring Boot project가 DyanmoDB service를 사용할 수 있도록 AWS SDK를 설정하는 것이다. 아래의 그림은 해당 설정이 끝났을 때 요약도이다. 1. AWS SDK for JAVA 설치하기build.gradle에 dependency를 추가해주자.// AWS Dynamic DB compile group: 'com.amazonaws', name: 'aws-java-sdk-dynamodb',..
RxJava 적용하기 (0) - RxJava overview 좋은 어플리케이션을 만들기 위해서는 3가지 요소를 고려하여야 한다. Responsiveness, Elasticness, Resilience이다. RxJava 설정하기 io.reactivex.rxjava2 rxjava 2.1.0 RxJava는 어떻게 동작하는가?Dzone에 있는 모든 문서를 가져와주는 어플리케이션을 예시로 살펴보자. public class DzoneDBDao { private static DzoneDBDao service = new DzoneDBDao(); public static DzoneDBDao get() { return service; } DZoneDoc[] getAllDocFromDB() { return produceDocs(); } private DZoneDoc[] produce..
써드파티 라이브러리를 적용하면서 써드파티(3rd-party) 라이브러리우리 회사가 개발하는 어플리케이션에서 외부 거래소의 API를 사용해야 하는 상황이다.당연히 Documentation을 읽고 코드를 짜면 그만이다,스프링 클라우드, 마이크로서비스를 적용한 김에, 어떻게 적용을 해야 좀 더 좋은 설계인지에 대해 고민해봤다. 외부 라이브러리와의 낮은 결합도 - 외부 라이브러리 코드를 직접 어플리캐이션에 넣어버리면 버전의 영향에 직격탄을 맞을 것이다. UI, crypto-service 두개의 프로젝트를 만들어서 UI에서는 crypto-service를 호출하고, crypto-service에서 외부 라이브러리를 사용하는게 좋을 것이다. - 장점 1) UI에서 테스트코드를 작성하기 편함 - 장점 2) 거래소 API가 변경되었을 때 crypto-s..
좌충우돌 스타트업의 CI/CD 적용기 1탄 좌충우돌 스타트업의 CI/CD 적용기 1탄시대가 변하면 개발 문화도 변한다. 내가 다녔던 전 회사는 ERP솔루션 업체로 waterfall 모형으로 개발을 했었는데 개발팀과 운영팀이 분업화 되어 있었다. 운영팀이 현업의 요구사항을 받았고 개발팀과 일정 기간동안 요구사항을 개발서버에 테스트 적용해보고 version을 올려서 모두가 사용하지 않는 시간에 운영server를 일시적으로 중지하고 대규모로 배포 했었다. Waterfall 모형으로 개발되는 프로젝트는 확실히 분리된 업무와 체계적인 개발과정을 거치고 정형화된 문서가 기록에 남지만 현업에서 요구한 요구사항을 통합적으로 처리하기 때문에 서비스 변화에 대한 대응이 느리고 운영 과정에서 발생하는 피드백의 빠른 반영이 힘들었다. ERP 개발에서도 불확실한 요구사..
토비의 스프링 5-4장. 메일 서비스 추상화 메일 서비스 추상화고객으로부터 사용자 레벨 관리에 관한 새로운 요청사항이 들어온 경우라면?User에 email 추가upgradeLevel()에 메일 발송 기능 추가JavaMail이 포함된 코드의 테스트테스트 코드를 돌리면 SMTP host에 연결할 수 없다고 에러가 날 것이다. 그렇다면 아래 처럼 테스트 서버를 구축하는건 어떨까? UserService ---> JavaMail ---> 메일 서버 ---> 테스트용 메일 서버 매번 메일이 발송되는건 바람직하지 못하다. 메일 발송은 부하가 큰 작업일 뿐 아니라, JavaMail은 검증된 라이브러리이다. 따라서 JavaMail API를 통해 요청이 들어간다는 보장만 있다면 굳이 테스트할 때마다 JavaMail을 구동시킬 필요가 없다. UserService --..
(AWS DynamoDB) CRUDRepository 설정하기 - 복합키 Entity AWS DynamoDB CRUDRepository 이전 포스팅에서 AWS SDK for Java 설정과 테이블 설계을 완료 하셨다면 이제 실제로 DynamoDB를 Java를 사용하여 다루어 보겠습니다.AWS SDK for Java : http://dev.overnodes.com/entry/AWS-DynamoDB-3-AWS-SDK-for-Java-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0DynamoDB 테이블 설계 : http://dev.overnodes.com/entry/AWS-DynamoDBNoSQL-%EB%B9%84%EC%A6%88%EB%8B%88%EC%8A%A4%EC%97%90-%EB%A7%9E%EB%8A%94-%EC%8A%A4%ED%82%A4%EB%A7%88-%EC%84%A..