[Kafka] 카프카 클러스터 분산구조 쉽게 알기 feat. 택배 물류센터
·
카프카 Kafka
먼저, 카프카의 "토픽"은 앞서 말한대로 데이터의 논리적인 그룹을 의미하며, 특정한 주제의 메시지를 저장하는 공간입니다.  그 토픽을 여러개의 "파티션"으로 쪼개서 여러 "브로커"에 분산 저장함으로써 더 빠르고 효율적인 처리를 가능하게 합니다. https://some4956.tistory.com/entry/Kafka-%EC%B9%B4%ED%94%84%EC%B9%B4%EB%9E%80-%EA%B0%9C%EB%85%90%EA%B3%BC-%EC%A3%BC%EC%9A%94-%EC%9A%A9%EC%96%B4%EC%A0%95%EB%A6%AC [Kafka] 카프카란? 개념과 주요 용어정리카프카(Kafka) 는 대용량 데이터를 빠르고 안정적으로 처리할 수 있는 고성능 분산 이벤트 스트리밍 플랫폼 입니다.  번외로, 카프..
[Kafka] 카프카란? 개념과 주요 용어정리
·
카프카 Kafka
카프카(Kafka) 는 대용량 데이터를 빠르고 안정적으로 처리할 수 있는 고성능 분산 이벤트 스트리밍 플랫폼 입니다.  번외로, 카프카가 언제부터 이렇게 유명하게 사용되었나 궁금하여 찾아보았습니다. - 2011년: LinkedIn에서 내부용 메시지 큐 시스템으로 자체 개발                LinkedIn이 Kafka를 Apache Software Foundation 에 기부하면서 오픈 소스로 공개됨.- 2012~2014년 : 대규모 데이터 스트리밍 표준으로 자리 잡음.                 Twitter, Netflix, Uber, Airbnb 같은 빅테크 기업들이 Kafka를 도입하면서 유명해짐. - 2017년 이후, 은행, 금융권, 이커머스, 클라우드 서비스 업체들이 대거 도입함. ..
[JAVA] 메서드 체이닝(Method Chaining) 이란? 사용 예시/ 주의사항
·
백엔드 back-end
메서드 체이닝이란 ? .setxxx().setxxx() 같은 코드 패턴은 개발을 하면서 많이 보았지만 정확한 이 개념에 대해서 자세히 알지 못해서 정리하게 되었다.  메서드 체이닝(Method Chaining)이란 객체지향프로그램(OOP) 에서  메서드 호출을 연속적으로 이어서 호출하는 패턴을 말한다.일반적으로 **Setter 메서드나 빌더 패턴(Builder Pattern)**에서 많이 사용된다. 1. 일반 방식 vs. 메서드 체이닝 방식 코드 차이 1) 일반적인 방식 ( 메서드 체이닝을 사용X) class Person { private String name; private int age; public void setName(String name) { this.name =..
[Redis] 트러블 슈팅 : 레디스 외부 연결 설정 후 에러 발생 / Failed to start redis-server.service - Advanced key-value store.
·
레디스 Redis
문제 발생 배경 AWS EC2 서버에 Redis를 설치한 뒤, 외부 접속을 허용하기 위해 /etc/redis/redis.conf 파일을 수정하고 Redis를 재시작(restart)했으나, Redis 서버 실행이 실패하는 문제가 발생했다.   redis-server.service: Failed with result 'exit-code'.Failed to start redis-server.service - Advanced key-value store.** 참고 ** 로그 보기 명령어 sudo journalctl -xeu redis-server.service sudo journalctl -u redis-server.service // 모든 로그 출력  redis 상태 확인 systemctl status..
[Redis] AWS EC2에서 Redis 설치 및 외부 접근 설정 가이드
·
레디스 Redis
목적 프로젝트 구현하면서 토큰(refresh token) 을 저장하기 위해 Redis를 활용하였다. 애플리케이션은 AWS EC2 서버에 배포 되었으므로 EC2 인스턴스에 Redis를 설치하고 외부에서 접근 가능하도록 설정한다.  작업 진행 단계1. EC2 에 Redis 설치하기 1.1 서버 연결  - (ubuntu 이용중)  1.2 Redis 설치 sudo apt updatesudo apt install redis-server 1.3 설치 확인 Redis가 제대로 설치되었는지 버전을 확인한다. sudo redis-server --version ex) 2. Redis 외부 접근 허용 설정 Redis는 기본적으로 외부 접근이 차단되어 있다. 이를 허용하기 위해 설정 파일을 수정한다.  2.1 Redis 설정..
[JAVA] Logger 선언: 정적(static) vs 인스턴스(instance) 방식의 차이, 권장방법?
·
백엔드 back-end
자바 로그 선언에 대해서 찾아보면 2가지 선언방법이 나옵니다. 정적선언LOGGER를 static으로 선언함으로써 클래스에 종속된 상태로 유지private static final Logger logger = LoggerFactory.getLogger(JavaClassName.class);인스턴스 선언 getClass() 를 사용해 현재 인스턴스의 클래스 타입을 기준으로 Logger를 선언 private final Logger log = LoggerFactory.getLogger(getClass());   https://slf4j.org/faq.html#declared_static SLF4J FAQGeneralities What is SLF4J? When should SLF4J be used? Is SLF4..
[Spring] DTO & Entity 차이, 분리이유 ?
·
백엔드 back-end
목차1. DTO2. Entity3. DTO,Entity 클래스가 분리되는 이유DTO, Entity 클래스의 개념과 쓰임을 다시 확실히 알고자 한다.  dto 와 entity class 는 자바(스프링) 에서 데이터 처리를 위해 사용되는 두개의 class 이지만 역할과 목적이 다르다.  dto,entity 가 가지고 있는 필드는 비슷하지만, 꼭 일치할 필요는 없다. entity에 있는 필드중 필요한 데이터만 dto 에 포함해서 전송하면 된다.   DTO - Data Transfer Object - VO(Value Object) 라고도 표현하는데, 계층간 데이터를 교환하기 위한 JAVA Beans 이다. - 데이터베이스 레코드의 데이터를 매핑하기 위한다.   - DTO 는 로직을 가지고 있지않고 getter..
[리팩토링] if-statemets 를 효율적이고 가독성있게 사용하는 방법 3가지
·
백엔드 back-end
if-else 문은 프로그래밍 할때 제일 기초로 배우고 사용하는 분기문 입니다.  혼자 프로그래밍을 할때는 그저 남발하며 사용하다가, 실무 프로젝트에 코드들을 보면 "아 내 코드는 아주 지저분 했구나" 를 알 수 있었습니다. 그러면 if 문을 효율적이고 가독성 있게 사용하는 방법은 무엇일까? 실무 프로젝트에 리팩토링 되어있는 코드를 보고 느낀, 고려하면 좋은 3가지 개념에 대해 기술하겠습니다.  1. Guard clause   if-else 이 중첩(nested)되어있으면 코드가 복잡해 지고, 가독성이 낮아집니다.  code depth가 깊어지는 것을 막기위해 Guard clause를 고려하여 코딩을 하면 좋습니다. == code 가 평탄화 된다. (code flatterd)  1.1 Guard clau..
[Spring] @Value 어노테이션 값에 빨간줄 뜨는 이유? / 인식오류/ 해결방법
·
백엔드 back-end
카카오 소셜 로그인 개발 중,application.yml에 설정된 client-id와 redirect-url 값을 로드하는 과정에서 오류가 발생했습니다.  application.yml 에 제대로 설정되어있는것을 알수 있습니다.  @Value를 인식을 못하는 이유는 무엇인가 ? @Value 어노테이션이 import lombok.Value로 잘못 임포트되어 있기 때문입니다.org.springframework.beans.factory.annotation 으로 임포트해줘야합니다.    제대로 인식된 모습  @Value - import lombok vs import spring  각각 담당하는 게 무엇인가 둘의 역할을 간단하게 소개하자면  import lombok.Value: 이 어노테이션은 불변 객체(Immut..
[JPA] 엔티티 클래스 테이터 타입 int, Integer 차이점/ null 값 오류 해결방법
·
백엔드 back-end
user 테이블을 만들고 SignInDto, controller 추가하여 로그인을 요청하는 기능을 구현하고 있습니다.  TblUser.java @Entity@NoArgsConstructor(access = AccessLevel.PROTECTED)@Getter@Setter@JsonIgnoreProperties(ignoreUnknown = true)public class TblUser implements UserDetails { @Id @Column(name="userid") private Long userid ; @Column(name="username",nullable = false,unique = true) private String username; @Column(na..