💻 개발 (14) 썸네일형 리스트형 Mac에서 카프카 설치하고 메시지 발행, 컨슘 해보기 카프카 공식 사이트에서 제공하는 Kafka Quickstart 문서(https://kafka.apache.org/quickstart)를 따라하면 로컬 환경에 간편하게 카프카를 설치하여 메시지를 발행하고 소비하는 등 테스트를 해볼 수 있다. 따라서 실습 한 내용을 정리해보았다. Apache Kafka Apache Kafka: A Distributed Streaming Platform. kafka.apache.org 사전 준비사항 카프카는 JVM 언어 중 하나인 스칼라(Scala)로 구현되어 있기 때문에 사전에 Java가 설치되어 있어야 한다. 카프카 다운로드 및 설치 카프카 설치는 비교적 간단하다. https://kafka.apache.org/downloads 페이지에 접속하여 바이너리 압축 파일을 원하는.. MySQL의 격리수준 트랜잭션 격리 수준이란? 트랜잭션의 격리 수준(Isolation level)이란 DB에 동시에 여러개의 트랜잭션이 처리될 때 특정 트랜잭션에서 변경 또는 조회하고 있는 데이터를 다른 트랜잭션이 어느 정도까지 조회할 수 있는지를 결정하는 것을 말한다. 말 그대로 서로 다른 트랜잭션들이 서로 어느 정도까지 격리가 되어야 하는지를 나타낸 것이다. 격리 수준은 크게 아래의 4가지로 나뉜다. Read Uncoommitted Read Committed Repeatable Read Serializable 위에서 아래로 갈 수록 트랜잭션간 격리 수준이 높아지며, 일반적으로 격리 수준이 높아질수록 동시성은 떨어지게 된다. Read Uncommitted 격리 수준이 Read Uncommitted 일 때는 각 트랜잭션서의 .. MySQL에서의 트랜잭션 MySQL에서의 트랜잭션 MyISAM은 트랜잭션을 지원하지 않음 InnoDB는 트랜잭션을 지원함 InnoDB 엔진은 쿼리 중 일부라도 오류가 발생하면 전체를 원상태로 만들어 두는 트랜잭션의 원칙을 따른다. MyISAM은 일부 오류가 발생하는 경우 부분 업데이트(Partial Update) 현상이 발생한다. 부분 업데이트 현상은 데이터의 정합성을 맞추는 작업을 어렵게 만든다. 트랜잭션이란 애플리케이션 개발에서 고민해야할 문제를 줄여 주는 아주 필수적인 DBMS의 기능이다. 트랜잭션 구현시 주의사항 트랜잭션은 DBMS 커넥션과 마찬가지로 꼭 필요한 최소의 코드에만 적용해야 한다. (프로그램 코드에서 트랜잭션의 범위를 최소화) 외부 네트워크 작업(메일, 큐 발송 등)은 반드시 트랜잭션에서 배제해야 한다. (롱.. Ubuntu에 Nginx 설치하고 실행 해보기(feat. Docker) 회사에서 nginx 설정을 볼 일이 생겼는데 직접 설정 해본 경험이 없어서 설정파일이 어디 있는지도 몰랐다. (..) 집에 있는 맥북에 nginx를 설치해서 설정을 이것 저것 해 보면서 공부를 하고 싶었으나, 맥에 직접 설치하면 괜히 지저분해 질 것 같아서 Docker를 이용해 설치를 해보았다. 도커 이미지 받기(pull) 도커 허브(https://hub.docker.com)에 가면 도커에서 제공하는 여러 이미지를 볼 수 있다. nginx 공식 이미지도 있긴한데, 나는 직접 설치하는 것 까지 해보고 싶어서 ubuntu 이미지를 받았다. 커맨드에서 아래 명령어를 입력해 ubuntu 이미지를 받는다. ➜ ~ docker pull ubuntu 다운 받은 이미지 목록을 아래 명령어로 확인한다. ➜ ~ docke.. Mockito : Mock 리스트를 주입하고 테스트 하기 상황 스프링을 사용하여 빈을 주입 받을때, 같은 타입(interface)을 구현한 빈들을 아래와 같이 컬렉션으로 주입 받아 사용하는 경우가 있다. public interface Validator { void validate(Order order); } @Service public class OrderValidationService { @Autowired private List validatorList; public void validate(Order order) { for (Validator component : validatorList) { component.validate(order); } } } 단위 테스트 프레임워크로 JUnit을 사용하고 Mockito 라이브러리를 사용할 때, OrderValid.. Java Stream에서 allMatch() 사용시 주의할 점 Stream.allMatch() Java 8에 포함된 Stream 클래스에는 모든 요소들이 주어진 조건에 만족하는지 여부를 검사하는 allMatch()메서드를 제공한다. 예를 들어, 모든 회원의 나이가 5살 이상인지 검사하는 테스트 코드를 다음과 같이 작성할 수 있다. @Test public void allMatchTest1()) { List members = new ArrayList(); members.add(Member.withAge(10)); members.add(Member.withAge(20)); members.add(Member.withAge(30)); boolean result = members.stream().allMatch(member -> member.getAge() > 5); asse.. 이전 1 2 다음