목록전체 글 (75)
Arthur's Blog
JUnit 테스트는 당연히 스레드를 재사용해야 합니다. 테스트 케이스 하나하나를 실행할 때마다 스레드를 재할당하면 테스트가 하루종일 걸릴 수 있기 때문입니다. 최근 GitHub에서 진행한 프로젝트 leeseojune53/LearnBoot는 Spring Boot의 주요 기능을 학습하기 위해 보안 및 데이터베이스 접근 기능을 직접 구현해보는 실습용 프레임워크입니다.이 프레임워크를 통해 DB Access의 테스트 케이스(TC)를 작성하고 로직을 구현하여 실행하는 중, 아래와 같은 오류가 발생했습니다: java.lang.RuntimeException: java.sql.SQLNonTransientConnectionException: No operations allowed after connection close..
아래 글에서 "실제 서비스"는 개발자가 직접 작성한 서비스의 코드이고, "Proxy객체"는 Spring이 CGLIB 또는 JDK Proxy를 통해 실제 서비스를 감싼 객체이다. Service를 작성하게 되면 실행될 때 Proxy객체가 만들어지며 DI받은 Bean의 method를 실행시키면 Proxy객체를 통해서 실제 Service가 호출된다. public class ProxyUserService { private final UserService userService; private final EntityManager em; public void doTransaction() { EntityTransaction tx = em.getTransaction() try { tx.begin(); userService..
Spotless는 코드의 포멧을 맞춰주는 툴이다. Gradle에 추가해서 build 시 체크할 수 있고, 포멧에 맞게 수정도 할 수 있다. 옵션은 약 30개 이상 있어서, 사용할거라면 아래 깃허브를 참고하면 좋다. 깃허브 : https://github.com/diffplug/spotless 예시 spotless { java { target("src/main/java/github/**/*.java", ...) // Import 정렬 순서 importOrder("lombok", "org", "com", "java", "javax", "io.github") // 사용하지 않는 Import 제거 removeUnusedImports() // Custom Rule도 생성할 수 있다. custom("noWildc..
🎊 시작하기 전에.. Message Queue를 설명하려면 우선 MOM, Message Broker를 알고있어야 합니다. MOM과 Message Broker에 대한 설명은 따로 없는점 양해 바랍니다. 📌 정의 MQ란 메시지 기반의 미들웨어로 메시지를 이용하여 여러 애플리케이션, 시스템, 서비스들을 연결해주는 솔루션이다. MOM를 구현한 솔루션으로 비동기 메시지를 사용하는 서비스들 사이에서 데이터를 교환해주는 역할을 한다. MQ를 사용하여 비동기로 요청을 처리하고 queue에 저장하여 consumer에게 병목을 줄여줄 수 있다. Message Broker에서 Message 값을 저장하는 역할을 한다. MOM은 메시지 전송 보장을 해야하므로 AMQP를 구현한다. AMQP(Advanced Message Que..
📌 정의 Publisher로부터 전달받은 메시지를 Subscriber로 전달해주는 중간 역할 Message Queue는 해당 메시지가 적재되는 공간이다.
📌 정의 독립된 애플리케이션 간에 데이터를 주고받을 수 있도록 하는 시스템 디자인 비동기로 메시지를 교환할 수 있게해서 서비스간 결합성을 낮춘다. 🔀 여러가지 메세지 전달 방식들 📋 Topic 방식 Pub/Sub 구조라고 말한다. 메시지를 발행하는 Publisher(Producer), 메시지를 소비하는 Subscribe(Consumer)로 구성되어있다. Message를 Publish한 후, 해당 Message를 누가 얼마나 사용하는지 신경쓰지 않는다. 많은 Consumer가 붙어서 동시에 해당 데이터를 소비할 수 있다. 🎞 Queue 방식 point-to-point 방식이라고도 말한다. 메시지 큐에 넣어둔 메시지를 한번 consume하면 queue에서 삭제된다.
📌 정의 Topic, Pub-Sub 모델의 MQ이다. 분산환경에 특화되어있는 특징을 가지고 있다. ⭐ 개념 Event Kafka에서 Producer와 Consumer가 데이터를 주고 받는 단위, 메시지이다. Producer Kafka에서 Topic에 이벤트를 Post하는 클라이언트 어플리케이션이다. Consumer Kafka에서 Topic을 구독하고, Topic에서 얻은 이벤트를 처리하는 클라이언트 어플리케이션이다. Topic파일시스템의 폴더와 유사하고, 이벤트는 폴더 안의 파일과 유사하다. Topic에 저장된 이벤트는 필요한 만큼 다시 읽을 수 있다. 이벤트가 쓰이는 곳이다.
인터넷을 통해 최종 사용자에게 IT 인프라를 제공하는 형태의 클라우드 컴퓨팅이다. IaaS는 주로 서버리스 컴퓨팅과 관련이 있다. 📌 정의 Iaas는 고객에게 서버, 네트워크, OS, 스토리지를 가상화하여 제공하고 관리한다. IaaS는 가상화된 물리적인 자산을 UI 형태의 대시보드 또는 API로 제공한다. IaaS의 고객들은 서버와 스토리지를 접근할 수 있지만 사실상 클라우드에 있는 가상 데이터 센터를 통해 리소스를 전달받는 형태이다. IaaS는 기존의 데이터센터에서 제공받던 물리적인 자산을 완벽하게 가상화하여 제공하기 때문에 서버 사용의 변경 등 물리적 자산의 수정이 필요한 경우 기존의 방식에 비해 훨씬 빠른 대응이 가능하다. IaaS의 제공업체는 서버, 하드 드라이브, 네트워킹, 가상화 및 스토리지를..