전체 글
-
카프카의 내부 동작 원리와 구현Backend/kafka 2023. 8. 9. 01:21
이번 글은 카프카의 내부 동작 원리에 대한 챕터에 대한 정리입니다. 1. 카프카 리플리케이션 카프카는 안정성을 확보하기 위해 카프카 내부에서 리플리케이션이라는 동작을 하게 됩니다. 카프카는 브로커의 장애에도 불구하고 연속적으로 안정적인 서비스를 제공함으로써 데이터 유실을 방지하며 유연성을 제공합니다. 카프카의 리더 파티션에 메시지를 보내게 되면 해당 메시지를 모든 리플리케이션 팩터 수만큼의 브로커에서 가질 수 있게 됩니다. 즉, 리플리케이션이 있는 경우 N개의 브로커 중에 N-1 까지의 브로커 장애가 발생해도 메시지 손실 없이 안정적으로 메시지를 주고받을 수 있습니다. [ 리더와 팔로워 ] 카프카는 내부적으로 모두 동일한 리플리케이션들을 리더와 팔로워로 구분하고, 각자의 역할을 분담시킵니다. 리더는 리플..
-
AWS S3 이미지 저장 및 삭제와 DB로직 트랜잭션 분리Project 2023. 7. 27. 03:11
트랜잭션 분리 최근에 Real MySQL 이라는 책을 읽으면서 트랜잭션에 대한 내용을 읽었는데, 많은 지식들을 얻을 수 있었지만 그중 가장 크게 와닿았던 내용이 바로 트랜잭션의 범위를 최소로 해야 한다는 내용이었습니다. 특히 외부 API를 호출하거나 이메일을 보내는 등의 서비스를 하나의 트랜잭션으로 묶게 된다면 해당 트랜잭션을 수행하는 커넥션을 오래 갖게되고 이로 인해 데드락 등의 문제가 발생할 가능성이 올라가기 때문에 가능하면 트랜잭션의 범위를 좁히는 것이 좋다고 읽었고, 마침 프로젝트에 AWS S3에 이미지를 업로드 하거나 삭제하는 기능이 존재했었기 때문에 이번 기회에 트랜잭션 범위를 줄이도록 코드를 변경했습니다. 수정해야 하는 코드는 이미지를 업로드 하는 코드와 이미지를 삭제하는 코드였습니다. 해당..
-
카프카 기본 개념과 구조Backend/kafka 2023. 7. 26. 02:42
이번 글은 카프카 관련 책 내용의 일부를 정리한 글입니다. 이후에도 주기적으로 정리해서 업로드할 예정입니다. 카프카를 구성하는 주요 요소 주키퍼 : 아파치 프로젝트 어플리케이션 이름입니다. 카프카의 메타데이터 관리 및 브로커의 정상상태 점검을 담당합니다. 카프카 : 아파치 프로젝트 애플리케이션 이름입니다. 여러 대의 브로커를 구성한 클러스터를 의미합니다. 브로커 : 카프카 애플리케이션이 설치된 서버 또는 노드를 의미합니다. 프로듀서 : 카프카로 메시지를 보내는 역할을 하는 클라이언트를 총칭합니다. 컨슈머 : 카프카에서 메시지를 꺼내가는 역할을 하는 클라이언트를 총칭합니다. 토픽 : 카프카는 메시지 피드들을 토픽으로 구분하고, 각 토픽의 이름은 카프카 내에서 고유합니다. 파티션 : 병령 처리 및 고성능을 ..
-
인프런, 실용적인 테스트 가이드 강의 정리Backend/TEST 2023. 7. 16. 00:41
이번 글은 강의를 보고 내용을 정리한 것인데, 한 3주 전에 강의를 다 듣고 이제야 블로그에 정리를 올리게 되었습니다... 인프런에서 Spring Boot 관련된 테스트 강의는 처음 본것 같은데, 개인적으로 업무에서 테스트 코드를 작성하는 분위기가 아니다 보니 따로 물어볼 사람은 없었고 블로그 등을 통해 알게 된 지식으로 테스트 코드를 작성했었는데, 이번 강의를 계기로 평소에 궁금했던 부분 뿐만 아니라 새로 알게된 내용들도 좀 있어서 저처럼 테스트 코드에 대한 궁금증이나 갈증이 있으신 분들이라면 한번 들어보면 좋을 것 같습니다. Practical Testing: 실용적인 테스트 가이드 - 인프런 | 강의 이 강의를 통해 실무에서 개발하는 방식 그대로, 깔끔하고 명료한 테스트 코드를 작성할 수 있게 됩니다..
-
Spring Boot 자동 구성Backend/spring 2023. 7. 6. 01:22
이번 글은 인프런 김영한님 강의 중 스프링 부트 - 핵심 원리와 활용 강의를 듣고 스프링에서 제공해주는 자동 구성에 관해 정리한 글입니다. 스프링 부트 - 핵심 원리와 활용 - 인프런 | 강의 실무에 필요한 스프링 부트는 이 강의 하나로 모두 정리해드립니다., 백엔드 개발자를 위한 스프링 부트 끝판왕! 실무에 필요한 내용을 모두 담았습니다. [임베딩 영상] 김영한의 스프링 완전 www.inflearn.com @Conditional 어떤 bean configuration 클래스가 특정 조건일 때만 해당 기능이 활성화 되도록 할 수 있습니다. 예를 들어 개발 서버에서 확인 용도로만 해당 기능을 사용하고, 운영 서버에서는 해당 기능을 사용하지 않는 것입니다. 이때 사용하는 기능이 @Conditional 어노테..
-
2023년 반기 회고기타/기타 회고 2023. 7. 4. 02:58
벌써 2023년도 절반이 지나갔다... 6월 한달동안 물론 꾸준히 공부는 했지만 뭔가 집중을 엄청 한 기분은 아닌것 같다 최근 팀 상황도 그렇고 여러가지 생각을 많이 하며 이번 기회에 반기 회고를 진행하며 앞으로의 다짐을 다지는 글을 써보려 한다. 회사 업무, 공부한 내용 등의 회고를 해보겠다. 1. 회사 작년에는 사실 입사하고 spring boot 학습이 주가 된 것 같다. 사실 회사에서 가장 많이 한게 강의 학습이었으니 지금까지 한번도 spring 을 사용하지 않던 나에게는 생각보다 좋은 기회가 아니었나 싶다. 이후 뚜렷하게 임팩트 있는 개발 업무를 하지 못하다 올해 새로 입사하신 분과 같이 kafka를 이용해 data pipeline 구축하는 업무를 맡으며 많은 것을 배우게 된 것 같다. 새로 오신..
-
클린 코드를 마무리 하며...Backend/책 정리 2023. 5. 18. 02:54
클린 코드 책을 드디어 모두 읽었다. 물론 부록 내용은 조금 남긴 했지만 그래도 기본적인 내용은 다 읽었다는 점에서 결국 어떤 일을 마무리 지었다고 생각하기 때문에 다행이라는 느낌을 받고 있다 책 자체는 읽는데 엄청 어려운 느낌은 아니었다. 하지만 좀 더 빨리 읽어야 하지 않았을까 라는 생각은 많이 든다... 책을 읽으며 정말 많은 생각을 하게 되었는데 가장 중요하게 가져야 할 마음이 결국 좋은 코드란 끝없는 리팩터링 끝에 나온다는 것이다. 저자도 얘기하듯이 단 한번에 깨끗하고 구조가 잘 잡힌 코드를 작성하는 것은 불가능하다. 중간에 저자가 리팩터링 하는 과정에 대한 내용이 있는데 처음 코드는 굉장히 아쉬운 부분이 많지만 이를 꾸준한 리팩터링을 통해 좋은 코드로 발전시켜가는 것을 확인하며 많은 것을 느낀..
-
객체 참조를 해제하라Backend/책 정리 2023. 5. 17. 23:25
이번주부터 이펙티브 자바 스터디를 진행하며 정리한 내용을 적어보려 합니다. 클린코드 책의 경우는 매 챕터마다 정리를 진행했는데 이펙티브 자바는 그보다는 내가 맡은 아이템을 좀 더 집중해서 읽으며 괜찮은 내용이 있으면 정리하는 식으로 앞으로 글을 작성하도록 하겠습니다. 이번 글에서는 아이템 7번 다 쓴 객체 참조를 해제하라는 파트입니다. 지금까지 개발하면서 메모리까지 생각하며 개발을 한 경험이 없다보니 이번 아이템을 읽으며 좀 더 신중하게 개발을 해야겠다는 생각을 많이 했습니다. 즉, C, C++이 아닌 가비지 컬렉터를 갖춘 언어라 할지라도 메모리 관리에 신경쓰도록 하는 습관을 갖는것이 좋아보입니다. 아래 예제를 살펴보겠습니다. 아래 코드는 Stack 자료구조를 간단하게 구현한 클래스 입니다. 이 코드에는..