All

프로젝트

[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을 적용한 사례를 살펴보려고 한다. 사이드 프로젝트를 진행하고 있다. 주요 서비스는 내 아티클(링크,글귀,이미지)을 태그를 통해 분류하고 관리하는 것이다. 또한 공개여부를 통해 내 아티클을 공유할 수 있고, 등록된 나의 태그를 기반으로 다른 사용자들이 올려놓은 아티클들을 볼 수 있다. 여기서 특징적인 기능이 있다. 링크 타입의 아티클을 등록 및 조회가 될 경우에는 사용자가 링크 주소만을 보여주는 것이 어색하다고 판단했다. 보통 우리가 링크를 공유하거나 했을 땐 이렇게 썸네일, 해당..

인프라

[AWS 무중단 배포] 4. 리눅스 명령어 find || 표준 입출력

들어가기 앞서 이번에는 리눅스 명령어인 find에 대하여 알아보려고 한다. 리눅스의 find 명령어는 리눅스 파일 시스템에서 파일을 검색하는데 사용되는 명령어이다. 다양한 표현식을 사용하여 원하는 파일의 목록을 추출할 수 있다. ex1 : find {옵션}{경로} {표현식} ex2 : 현재 위치에서 log가 들어가는 파일 모두 찾기 -> find .-name "/log" 1. tail tail 명령어는 파일의 마지막 행을 기준으로 지정한 행까지의 파일 내용 일부를 출력해주는 명령어이다. 기본값으로는 마지막 10줄을 출력한다. 주로 tail은 리눅스에서 오류나 로그 파일을 실시간으로 확인할 때 매우 유용하게 사용된다. -f 옵션은 실시간으로 계속 추적한다는 뜻이다. sudo tail -f log.out 2..

인프라

[AWS 무중단 배포] 3. 리눅스 명령어 프로세스 실습

들어가기 앞서 apt 명령어를 사용하면 실행 파일을 직접 찾아서 실행할 필요가 없다. 현재 등록된 서비스들을 확인하기 위해서는 service --status-all 해당 명령어를 실행하면 등록된 서비스 리스트가 나온다. + : 실행중 - : 실행중이지 않음 이 두가지를 의미한다. Tomcat 종료하기 sudo service tomcat9 stop 하지만, Service 명령어보다는 systemctl 명령어를 사용하는게 좋다. systemctl 명령어 sudo systemctl list-unit-files : 서비스 전부 확인 sudo systemctl status '특정 서비스' : 특정 서비스 실행 상태 확인 sudo systemctl start '특정 서비스' : 특정 서비스 실행 sudo syste..

맹수호빵
'분류 전체보기' 카테고리의 글 목록 (2 Page)