전체 글

어쩌겠어요? 늘 그렇듯 해내야지
도서/리뷰

[도서 리뷰] 만들면서 배우는 클린 아키텍처

취업 준비 과정에서 아직 필요성을 크게 느끼지 못해 클린 아키텍처를 적용해 본 경험이 없었습니다. 하지만 요즘 신입 채용 공고를 보면 드문 드문 아키텍처에 관한 우대사항도 보이고, 많은 기업들의 블로그,유튜브 영상을 보면 아키텍처에 관한 부분이 많은 부분을 차지하고 있다라고 느꼈습니다. 당장 제가 사용해볼만한 부분은 아니라고 생각하지만, 이번에 '만들면서 배우는 클린 아키텍처'를 읽으며 주로 많이 사용해왔던 레이어드 아키텍처와 책에서 소개하는 클린 아키텍처의 차이를 비교해가며 공부할 수 있었습니다. 책을 통해 서비스 레이어가 클린 아키텍처에서는 유스케이스로 대체되는 등 각 계층의 역할과 규칙을 이해할 수 있었습니다. 정보 저자 : 톰 홈버그 옮긴이 : 박소은 감수 : 조영호 한줄평 : 실제 예제 프로젝..

도서/리뷰

[도서 리뷰] 가상 면접 사례로 배우는 대규모 시스템 설계 기초1

최근 취업 준비를 하며 면접도 보러오는 등, 더디지만 조금의 발전을 하고 있다고 스스로 느끼고 있습니다.개인 프로젝트를 프론트부터 배포까지 A to Z 진행을 해보는 것은 저에게 큰 도움이 되었고, 하나의 서비스를 혼자서 진행해보니 시스템 설계에 관해서도 관심이 많이 갔습니다.그러던 중 꼭 읽고 싶어서 샀지만 아직 와닿지가 않아 묵혀 두었던 '가상 면접 사례로 배우는 대규모 시스템 설계 기초1' 을 다시 꺼내 읽었습니다. 정보 저자 : 알렉스 쉬 옮긴이 : 이병준 한줄평 : 여러가지 시스템 설계 디자인을 가볍게 알아볼 수 있는 책 읽으면 좋을 독자 : 프로젝트를 몇번 해봤고, 단순히 API만 짜본 것이 아니라 시스템 설계에 대해서 고민을 해본 독자들 (반대로 기본적인 API 구성만 해본 독자는 당장 와..

프로젝트

[SpringBoot] Bucket4j를 이용하여 간편하게 특정 API 트래픽 제한해보기

최근 '모띠클' 이라는 아카이빙 서비스를 개인 프로젝트로 진행을 하고 있습니다. 더불어 아침마다 책을 두 권씩 읽고 있는데, 그중 '가상 면접 사례로 배우는 대규모 시스템 설계 기초' 책을 읽고 있습니다. 어제도 여느날과 마찬가지로 책을 읽다가 '4장. 처리율 제한 장치의 설계' 부분을 읽게 되었습니다. 해당 파트에서는 챕터명 그대로 미들웨어를 활용해서 처리율을 제한을 두어 시스템에 부하를 덜어주는 것에 대하여 알려줍니다. 해당 파트를 읽다가 내 프로젝트에도 접목을 시켜볼 수 있을 것 같았습니다. 그래서 해당 부분을 공부 해보고 프로젝트에 접목시켜 본 것을 남겨보려고 합니다. 들어가기 앞서 서론에서 보았듯이 개인 프로젝트의 특정 API 호출에 트래픽을 제한해보려고 한다. 내 프로젝트에서 트래픽 제한을 걸..

도서/리뷰

[도서 리뷰] 이것이 취업을 위한 백엔드 개발이다 with 자바

최근 취업 준비에 박차를 가하고 있다. 공부를 하며 이런 저런 기술도 써보았습니다. 쉬운 기술, 어려운 기술, 트렌디한 기술등등 여러 기술을 접하고 적용해보는 경험을 했다. 하지만 취업을 앞두고 면접또한 준비를 해야하는 상황이었는데, 자바와 웹 기술에 대한 전반적인 기본기를 한 번더 빠르게 다지고 싶은 마음이 있었다. 그러다 한빛 미디어의 '이것이 취업을 위한 백엔드 개발이다' 라는 책을 알게 되었고 구성과 내용이 너무 알차서 개발자로 취업을 희망하는 취준생에게 소개하고자 한다. 정보 출판사 : 한빛 미디어 저자 : 이준형 한줄평 : 제목 그대로 취업을 앞둔 백엔드 개발자. 특히 자바 개발자들이 보면 이 한 권(?)으로 개념을 다시 잡을 수 있는 책 전반적인 구성 책의 전체적인 목차등은 도서 사이트에서도..

DB

DB Connection Pool (커넥션 풀) 개념부터 적절한 설정 방법까지 (feat. HikariCP & MySQL)

개인 프로젝트 및 팀프로젝트를 하던 중 백엔드 서버와 DB 서버가 연결이 끊기거나 타임 아웃이 나는 경우가 종종 생겼다. 머리 한편으로는 커넥션풀의 문제겠거니하고 설정들에서 풀을 늘려주거나 시간을 늘리거나 하는등 임시방편으로 해결을 하였는데, 이번 기회로 커넥션풀의 개념과 설정 방법까지 정리해 보려고 한다. 해당 게시물을 유튜브 쉬운코드 님의 영상을 보고 정리한 글입니다. 들어가기 앞서 백엔드 서버와 DB의 통신은 네트워크를 공부해본 개발자라면 알고있는 TCP 연결을 기반으로 하고있다. 커넥션 open(연결)시에는 3-way handshaking이 일어나고, close(끊음)시엔 4-way handshaking을 한다. 즉 커넥션을 맺고, 끊는 과정에서 복잡한 일이 일어나고 비용도 크다는 의미이다. 이말..

네트워크

네트워크에서 처리량/지연시간에 대하여 알아보자.

개인 프로젝트, 팀프로젝트등을 진행하며 성능 테스트를 진행한 적이 있다. 처리량/지연시간에 대해서 두루뭉술하게 알고 있었어서 대충 빠르면 좋겠지~ 라는 단순한 생각만 했었던 것 같다. 그래서 이번 시간에는 모호한 기억과 개념을 한번 가볍게 정리해보고 가려고 한다. 그리고 앞으로 백엔드 개발자로서 성능/부하 테스트를 할 때 적절한 용어와 개념을 사용하여 진행할 수 있도록 해야겠다. 정의 노드(node)와 링크(link)가 서로 연결되어 있거나 연결되어 있지 않은 집합체를 의미 여기서 노드란 서버,라우터,스위치 등 네트워크 장치를 의미하고, 링크는 유무선 형태의 연결 수단을 의미 처리량과 지연 시간 네트워크를 구축할 때는 당연하게도 '좋은' 네트워크로 만드는 것이 중요하다 좋은 네트워크란 많은 처리량을 처리..

프로젝트

[성능 개선기] 2. 스프링 부트에서 Caffeine Cache를 이용하여 95.08%의 Latency 개선해보기

0. 들어가기 앞서 이전글에서 링크의 HTML 메타 데이터 파싱시에 Stream부터 ParallelStream, CompletableFuture까지 성능을 개선시켜 보았다. 이번엔 간단하게 Caffeine Cache를 도입하여 성능을 개선시킨 후기를 적어볼까 한다. 이전글을 꼭 읽어보고 오는걸 추천한다! Caffeine Cache 도입 CompletableFuture까지 적용시켜 성능을 개선했지만, 그냥 단순하게 생각해보니 캐싱 전략 같은건 우선 제외하고 링크의 주소들을 캐싱해두고 불러오면 일단 Latency를 줄어들지 않을까? 하는 생각이 들었다. 또한 보통 사용자가 아티클을 등록/수정을 하게되면 당연히 DB에 영향이 가게 된다. 하지만 내가 개선 시키려는 Latency는 DB와는 큰 연관이 없고, 캐..

프로젝트

[성능 개선기] 1. 스프링 부트에서 HTML 메타 데이터 파싱시 ParallelStream vs CompletableFuture

0. 들어가기 앞서 평소 백엔드 성능 개선에 관심을 가지고 해당 프로젝트의 성능을 향상시키기 위해 다양한 방법을 시도하고 있다. 이번 글에서는 데이터 처리 속도를 개선하기 위해 몇가지 여정을 지나 CompletableFuture을 적용한 사례를 살펴보려고 한다. 사이드 프로젝트를 진행하고 있다. 주요 서비스는 내 아티클(링크,글귀,이미지)을 태그를 통해 분류하고 관리하는 것이다. 또한 공개여부를 통해 내 아티클을 공유할 수 있고, 등록된 나의 태그를 기반으로 다른 사용자들이 올려놓은 아티클들을 볼 수 있다. 여기서 특징적인 기능이 있다. 링크 타입의 아티클을 등록 및 조회가 될 경우에는 사용자가 링크 주소만을 보여주는 것이 어색하다고 판단했다. 보통 우리가 링크를 공유하거나 했을 땐 이렇게 썸네일, 해당..

맹수호빵
Be Water, My Friend