본문 바로가기

전체 글134

멀티 노드 카프카 - 2 💡 이번 포스팅에서는 멀티 노드 카프카 구성 시 토픽 생성에 대해 정리해 보도록 하겠습니다. 멀티 노드 카프카 - 1 💡 이번 포스팅에서는 멀티 노드 카프카 구성 방법에 대해 정리해 보도록 하겠습니다. 단일 노드 카프카는 멀티 노드 카프카에 비해 설정이 간편하기 때문에 사용 측면에서는 좋지만, 성능과 soono-991.tistory.com 이전 포스팅에서 구성한 멀티 노드 카프카에서 토픽을 만들어 파티션들이 어떻게 생성되는지 확인해 보겠습니다. 브로커는 총 3개를 만들었으며 각각 9092, 9093, 9094 포트로 설정했습니다. 9092 브로커 1에 토픽을 생성해 보겠습니다. broker 1 broker 2 broker 3 각 브로커별로 생성한 토픽에 대한 파티션들이 분배된 것을 확인할 수 있습니다. .. 2023. 5. 1.
멀티 노드 카프카 - 1 💡 이번 포스팅에서는 멀티 노드 카프카 구성 방법에 대해 정리해 보도록 하겠습니다. 단일 노드 카프카는 멀티 노드 카프카에 비해 설정이 간편하기 때문에 사용 측면에서는 좋지만, 성능과 가용성 또는 장애 복구와 같은 부분은 고려할 때는 장점 외에는 모든 것이 단점입니다. 필수는 아니지만 많은 글들에서 멀티 노드 카프카 설정에서 추천하는 방식은 브로커 3개, 각 토픽별 파티션 3개로 구성하는 것을 추천하고 있습니다. 위와 같이 멀티 노드 카프카로 구성하게 되면 각 토픽별 파티션이 각 브로커별로 분배되어 있는 것을 확인할 수 있습니다. 이렇게 구성했을 때의 장점은 브로커 1이 장애가 발생하더라도 나머지 브로커 2, 브로커 3에서 이미 복제된 파티션이 있기 때문에 리밸런싱을 통해 문제없이 브로커 2, 브로커 3.. 2023. 5. 1.
라즈베리파이로 NAS 만들어보기 - 2 💡 이번 포스팅에서는 라즈베리파이로 NAS를 만드는 도중 만났던 이슈에 대해 정리해 보도록 하겠습니다. 라즈베리파이로 NAS를 만드는 방법은 아래 포스팅을 참고해주세요. 라즈베리파이로 NAS 만들어보기 - 1 💡 이번 포스팅에서는 라즈베리파이로 NAS를 만드는 방법에 대해 정리해 보도록 하겠습니다. 보통 우리가 파일이나 동영상 또는 이미지등을 저장하는 곳은 컴퓨터에 있는 하드 디스크, 즉 DAS입 soono-991.tistory.com 공유기 포트 포워딩 설정까지 끝나고 간단한 파일 업로드/다운로드 테스트까지 문제없이 마친 후에 본격적으로 파일/동영상/이미지등을 업로드 하려 하는데 자꾸만 외장하드의 마운트가 끊긴다던지, 라즈베리파이가 죽는다던지 하는 현상이 발생했습니다. 관련해서 찾다가 아래 2개의 링크.. 2023. 4. 24.
레거시 코드 활용 전략 레거시 코드 활용 전략 | 마이클 C. 페더스 - 교보문고 레거시 코드 활용 전략 | ▶ 레거시 코드 활용 전략에 관한 내용을 담은 전문서적입니다. product.kyobobook.co.kr 챕터 코드 변경의 메커니즘 소프트웨어 변경 의존 관계 제거 기법 메모 서문 더보기 레거시 코드란 무엇일까? … 엄밀히 말하면, 레거시 코드는 다른 누군가로부터 이어받은 코드라고 정의할 수 있다. 회사 차원에서 다른 회사로부터 구입한 코드일 수도 있고, 부서 이동으로 인해 다른 팀원에게 인계된 코드일 수도 있다. 이처럼 레거시 코드는 다른 누군가의 코드를 의미하지만, 프로그래머들에게 이 단어는 그 이상의 의미를 갖고 있다. … 레거시 코드라는 말을 들으면 여러분은 어떤 생각이 드는가? 나와 비슷한 생각이 든다면, 여기.. 2023. 4. 24.
Redis 설치 💡 이번 포스팅에서는 Redis 설치 방법에 대해 정리해 보도록 하겠습니다. Redis 설치 페이지로 이동합니다. 설치 확인 레디스 설치 경로로 이동합니다. 레디스 설치 경로에 있는 redis-cli.exe 파일을 실행해도 되고, 아래와 같이 명령어로 직접 접속해도 됩니다. redis-cli -h [접속할 호스트] -p [포트 번호] -a [비밀번호] #cd C:\Program Files\Redis // redis 설치 경로 이동 #redis-cli -h localhost -p 6379 // redis 접속 localhost:6379> ping // redis 확인 PONG localhost:6379> 2023. 4. 23.
2023 스프링 캠프 후기 스프링 캠프가 2019년 이후 4년 만에 오프라인 콘퍼런스를 진행한다는 소식을 듣고 그동안 콘퍼런스를 가보지 않았기 때문에 한 번쯤은 가보는 것도 좋지 않을까?라는 생각에 이번 콘퍼런스를 가기로 마음먹었습니다. 하지만 무제한 인원 신청이 아닌 210명으로 한정되어 있었고, 이미 여러 커뮤니티에서 콘퍼런스 소식이 공유되면서 거의 모든 개발자분들이 가고 싶다는 것을 보아 티켓팅이 쉽지 않겠다고 생각했습니다...ㅜ 하지만 티켓팅 당일 너무 쉽게 티켓팅에 성공하여 뭐지..?라는 생각을 하던 도중 커뮤니티에서 티켓팅 오픈 2~3초 만에 매진되었다는 소리를 듣고 운이 좋았다고 생각했습니다. Spring Camp 2023'스프링 캠프'는 애플리케이션 서버 개발자들과 함께 가치있는 기술에 관한 지식과 정보를 '공유'하.. 2023. 4. 23.
라즈베리파이로 NAS 만들어보기 - 1 💡 이번 포스팅에서는 라즈베리파이로 NAS를 만드는 방법에 대해 정리해 보도록 하겠습니다. 보통 우리가 파일이나 동영상 또는 이미지등을 저장하는 곳은 컴퓨터에 있는 하드 디스크, 즉 DAS입니다. DAS란 Direct Attach Storage로 직접 접근할 수 있는 저장장치라는 의미입니다. 그래서 컴퓨터나 노트북에 있는 저장장치들은 모두 DAS라고 볼 수 있는데 그렇다고 우리가 DAS라는 용어를 쓰지는 않죠. 그냥 간단하게 하드, 또는 저장장치라고 부릅니다. 여기서 간단하게 회사, 집에 각각 컴퓨터가 있다고 가정해보겠습니다. 만약 회사에 있는 어떤 파일이나 동영상을 집에서도 확인하고 싶은 경우에는 이를 메일로 보내거나, USB에 담아서 옮겨야 했습니다. USB에 옮겨 담는 과정도 번거로울 뿐더러 사람이.. 2023. 4. 23.
You don't need to put the layout:fragment/data-layout-fragment attribute into the <head> section - the decoration process will automatically copy the <head> section of your content templates into your layout page. 타임리프에서 레이아웃 기능을 사용하던 도중 아래와 같은 warning이 출력된 적이 있습니다. n.n.u.t.l.f.FragmentProcessor [75] - You don't need to put the layout:fragment/data-layout-fragment attribute into the section - the decoration process will automatically copy the section of your content templates into your layout page. warning을 읽어보면 레이아웃에서 태그 안에서 fragment를 사용할 필요가 없다고 합니다. 레이아웃을 사용하려는 페이지에서 태그를 만들고 그 안에 내용을 추가하면 레이아웃이 자동으로 해당.. 2023. 4. 23.
@ControllerAdvice & @RestControllerAdvice 💡 이번 포스팅에서는 @ControllerAdvice & @RestControllerAdvice에 대해 정리해 보도록 하겠습니다. 이전에 @ControllerAdvice, @RestControllerAdvice에 대해 찾아봤던 적이 있는데, 지금 다시 보니 잘 못된 부분이 있어 다시 정리해보고자 합니다. 때는 입사한 지 얼마 안 된 신입 때였는데 @ControllerAdvice, @RestControllerAdvice를 찾을 때 공식 문서나 java docs 대신 블로그 자료를 찾았었습니다. @ControllerAdvice를 설명할 때 ExceptionHandler와 같이 설명하는 블로그들을 쉽게 찾아볼 수 있을 것입니다. 보면 공통적으로 전역 예외 처리를 위해 @ControllerAdvice를 사용한다.. 2023. 4. 23.
소프트 스킬 소프트 스킬 | 존 손메즈 - 교보문고 소프트 스킬 | 흔한 개발자, 존 손메즈 그는 어떻게 33세에 은퇴했을까? “소프트웨어 개발자로 사는 동안 다양한 여정을 거쳤다. 길을 제대로 찾을 때도 있었고 그렇지 못할 때도 있었다. 이 과 product.kyobobook.co.kr 챕터 경력 셀프 마케팅 학습 생산성 재무관리 건강 마인드셋 뭐라도 하는 게 아무것도 하지 않는 것보다 낫다. 특히 당신이 오랫동안 불행했다면 말이다. 실수해도 좋다. 실수를 통해 적어도 무언가 배울 수 있을 것이다. 그리고 배우는 게 있다면 실수는 더 이상 실수가 아니다. 아무것도 하지 않는다면 아무것도 배울 수 없다. - 에크하르트 툴레 『지금 이 순간을 살아라(The Power of Now)』 더보기 경력 목표는 규칙적으로 점검.. 2023. 4. 22.
개발자 원칙 개발자 원칙 | 박성철 - 교보문고 개발자 원칙 | ★ 더 나은 개발자로 성장을 꿈꾼다면★ 먼저 헤쳐온 테크 리더들의 원칙에서 해답을 찾아보세요“나도 테크 리더가 될 수 있을까? 어떻게 선배 개발자들처럼 성장할 수 있을까? 3 product.kyobobook.co.kr 챕터 덕업일치를 넘어서 오류를 만날 때가 가장 성장하기 좋을 때다 소프트웨어 디자인 원칙 나의 메이저 버전을 업그레이드하는 마이너 원칙들 이직, 분명한 이유가 필요해 목표를 달성하는 나만의 기준, GPAM 프로덕트 중심주의 제어할 수 없는 것에 의존하지 않기 달리는 기차의 바퀴를 갈아 끼우기 메모 더보기 덕업일치를 넘어서 많은 회사가 단위 조직을 팀이라고 부르지만 사실 팀워크가 올바로 동작하는 팀은 많지 않습니다. 흔히 좋은 팀워크는 좋은.. 2023. 4. 21.
개발자의 글쓰기 개발자의 글쓰기 | 김철수 - 교보문고 개발자의 글쓰기 | 오직 개발자를 위한 글쓰기의 모든 것을 담았습니다!이 책은 개발자의 글쓰기 능력을 종합적으로 향상하기 위한 책이다. 코드 안에서는 함수와 변수 이름을 짓는 것부터 주석 product.kyobobook.co.kr 챕터 개발자의 글쓰기는 달라야 한다 개발자가 알아야 할 글쓰기 기본 개발 시간을 줄여주는 이름 짓기와 주석 쓰기 사용자와 소통하는 에러 메시지 쓰기 독자 관점에서 릴리스 문서와 장애 보고서 쓰기 설명, 묘사, 논증, 서사로 개발 가이드 쓰기 수주를 돕는 SI 제안서 쓰기 기술 블로그 쉽게 쓰고 운영하기 메모 더보기 개발자의 글쓰기는 달라야 한다 기획자나 관리자의 글쓰기에 논리력, 설득력, 실행력이 중요하다면, 개발자의 글쓰기에는 정확성, .. 2023. 4. 21.
KafkaConsumer 💡 이번 포스팅에서는 KafkaConsumer에 대해 정리해 보도록 하겠습니다. 이전에 KafkaProducer 객체를 통해 카프카 토픽에 메시지를 전송해 보았습니다. 이번에는 KafkaConsumer 객체를 통해 프로듀서가 전송한 메시지를 읽어오도록 하겠습니다. public static void main(String[] args) { String topicName = "simple-topic"; Properties props = new Properties(); props.setProperty(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "192.168.111.133:9092"); props.setProperty(ConsumerConfig.KEY_DESERIALIZER_CLA.. 2023. 4. 17.
Consumer - 3 💡 이번 포스팅에서는 Consumer -1, Consumer - 2에 이어서 Consumer에 대해 정리해 보도록 하겠습니다. auto.offset.reset 컨슈머가 토픽에 처음 접속하여 메시지를 가져올 때 가장 오래된 처음 오프셋(earliest)부터 가져올 것인지 가장 최근인 마지막 오프셋(latest) 이후부터 가져올 것인지를 설정하는 파라미터이며, earliest와 latest가 있습니다. earliest: 처음 오프셋부터 읽음 latest: 마지막 오프셋부터 읽음 하지만 주의할 점은 컨슈머가 토픽에 처음 접속할 때 __consumer_offsets에 있는 오프셋 정보를 기반으로 메시지를 가져오기 때문에 earliest로 설정한다 해도 무조건 0번 오프셋부터 읽어 들이지는 않습니다. 그리고 컨슈.. 2023. 4. 17.
Consumer - 2 💡 이번 포스팅에서는 Consumer -1에 이어서 Consumer에 대해 정리해 보도록 하겠습니다. 컨슈머는 위와 같이 ConsumerCoordinator, ConsumerNetworkClient, Fetcher, SubscriptionState 등의 주요 내부 객체와 별도의 HeartBeat Thread를 생성합니다. 이전 포스팅에서 정리하지 않은 Fetcher, ConsumerNetworkClient, SubscriptionState에 대해서 정리해 보도록 하겠습니다. Fetcher, ConsumerClientNetwork Fetcher, ConsumerClientNetwork 객체는 브로커의 토픽 파티션에서 메시지를 Fetch 및 Poll을 수행하는 객체입니다. 위 그림들과 같이 컨슈머는 poll.. 2023. 4. 17.