분류 전체보기 33

SpringBoot에서 유량제어하기(Bucket4j를 활용한 레이트 리밋 구현하기)

롤 해 듀오 프로젝트에서는 라이엇 API와 통신해야 했는데, 라이엇은 API 남용을 방지하고 모든 개발자에게 공정한 사용을 보장하기 위해 엄격한 사용량 제한을 적용하고 있습니다.외부 API와 통합할 때 특히 엄격한 사용량 제한이 있는 경우, 애플리케이션에서 적절한 레이트 리밋(Rate Limit) 구현은 필수적입니다. 이 블로그 포스트에서는 Bucket4j를 사용한 레이트 리밋 구현 과정을 공유하고, Resilience4j와 같은 대안 대신 Bucket4j를 선택한 이유, 그리고 단순한 접근 방식에서 Redis를 활용한 더 정교한 큐 기반 시스템으로 발전한 단계별 구현 과정을 상세히 설명하겠습니다. 레이트 리밋 과제라이엇 API는 다음과 같은 여러 사용량 제한을 적용합니다:초당 20개 요청2분당 100개..

개발/SPRING 2025.05.22

[AWS] EC2로 스프링부트 배포하기 - 1 (AWS EC2 생성하기)

롤 해 듀오라는 프로젝트를 진행하면서 배포를 담당하면서 스프링부트 애플리케이션을 배포하는 전반의 과정을 포스팅하고자 한다.처음 AWS로 배포를 해보는 것이라서 CI/CD 시스템은 구축하는 것이 아닌 것을 먼저 얘기합니다. - 사전에 필요한 것1. AWS 계정 생성 AWS 계정에 로그인 한 후 AWS Console에 들어갑니다.1. 콘솔에 접근 후 검색창에 EC2를 검색하여서 나오는 결과로 들어갑니다. 2. EC2 메인화면에 접속하여 인스턴스를 클릭합니다. 3. Launch instances를 눌러서 인스턴스를 생성합니다. 4. 인스턴스 설정해주기1. EC2의 인스턴스 이름을 지정해 줍니다2. EC2의 OS 선택 : 보편적으로 Ubuntu를 많이 사용한다3. 해당 OS의 버전 선택 - Free tier가 ..

DevOps/AWS 2025.01.20

[JPA] 영속성 컨텍스트(Persistence Context)에 대해서 (1차캐시, 쓰기지연SQL저장소, 변경감지)

현재 개발을 진행하면서 JPA를 계속 쓰고 있는데, Spring Data JPA를 쓰면서 CRUD가 정말 편하지만 워낙 추상화되어있어서 쿼리문을 어떻게 나가는지 보고, 예상도 하려면 JPA에서 중요한 개념 중 하나인 영속성 컨텍스트에 대해서 정리를 해볼 필요가 있어서 포스팅 하게 됐다. 영속성 컨텍스트(Persistence Context)란?- 쉽게 말하자면 Entity 객체를 효율적으로 쉽게 관리하기 위해 만들어진 공간- 엔티티 매니저를 통해 영속성 컨텍스트에 접근ORM은 객체와 데이터베이스 테이블의 매핑을 통해 엔티티 클래스 객체 안에 포함된 정보를 테이블에 저장하는 기술이다.JPA에서는 테이블과 매핑되는 엔티티 객체 정보를 영속성 컨텍스트를 통해 애플리케이션 내에서 오래 지속되도록 보관한다.   엔..

DB/JPA 2024.11.24

팀프로젝트) 배달 서비스 앱 개발 설계

프로젝트소개Spring Data JPA 팀 단위 개발 숙달을 위한 배달 서비스 백엔드 애플리케이션 서버 프로젝트프로젝트 진행 기간: 24.11.01 ~ 24.11.07👨‍👨‍👧‍👧 팀 구성이름역할담당 기능김동주팀원회원가입, 로그인, 회원정보수정, 회원탈퇴, Spring Security JWT이은영팀원사업자 주문 관리(조회, 상태 변경), 메뉴 관리(등록, 수정, 삭제)백현욱팀원사업자 가게 관리(등록, 수정, 삭제, 조회)장재혁팀원고객 Home 화면(가게 검색), 주문하기, 주문 조회박가온누리팀장고객 리뷰 작성, 조회, 삭제, GlobalExceptionTools🖥 language & Server 🖥![](https://img.shields.io/badge/intellij idea-207BEA?..

끄적끄적 2024.11.10

개인프로젝트회고) 스프링부트와 JPA를 활용한 Todo앱 만들기(JWT토큰과 글로벌예외처리를 곁들인..)

이번 개인 프로젝트는 간단한 Todo 앱이다.크게 Todo, Comment, Member 3가지 모듈로 구성되어 있다.Todo와 Comment는 이미 CRUD를 해둔 상황이라, 이번 기간엔 목표를 조금 다르게 잡았다. 프로젝트 기간24.10.25~24.10.31 프로젝트 목표Member CRUD, JWT 토큰을 활용한 인증/인가, GlobalExceptionHandler(+커스텀 예외처리)+ 기존 코드 리팩토링(반환타입 ResponseEntity사용하기, requstDto 상세구분) Member CRUD멤버 생성 (/api/members)기능은 아직 토큰,회원가입 구현 전이라 임시로 기능은 만들어 두었다.이전엔 항상 EntityRequestDto, EntityResponseDto 이렇게 두가지로만 사용을..

끄적끄적 2024.11.01

프로젝트회고) 뉴스피드기반 앱 - JPA 팔로우기능(Feat.코뮤니티)

https://github.com/hubaek/co-mu-nity GitHub - hubaek/co-mu-nityContribute to hubaek/co-mu-nity development by creating an account on GitHub.github.com Spring Data JPA를 활용하여 뉴스피드라는 주제로 백엔드 애플리케이션 팀 프로젝트를 진행하기로 하였습니다. 저희 팀은 뉴스피드, 커뮤니티 등 컨셉을 생각했을 때 팀원들의 공통 취미인 음악 듣기에서 영감을 얻어 코딩하는 사람들의 플레이리스트를 공유하는 커뮤니티로 컨셉을 잡았고 프로젝트 이름을 생각하다가제가 코딩 뮤직 커뮤니티를 줄인 코뮤니티를 제안해서 팀원들의 만장일치를 동의를 얻어서 코뮤니티>가 되었습니다! 프로젝트 기간2024...

끄적끄적 2024.10.28

[GitHub] 깃허브 organization 초대받고 개인 로컬까지 세팅 과정(2)

2024.10.19 - [형상관리/git] - [GitHub] 깃허브 organization 초대받고 개인 로컬까지 세팅 과정(1)이전에 쓰던 글을 이어서 프로젝트를 연 다음 해야할 작업에 대해서 다루고자 합니다. 1.  원본 변경사항 추적하기, 기능작업 후 push 1-1. 원본 변경 사항을 추적하기 위해 upstream 추가git remote add upstream https://github.com/{organizationName}/{repositoryName}.gitgit clone할때와는 다르게 organization 초대된 레포지토리의 URL을 넣어주면 된다 (개인계정의 레포지토리 아님!)+ 명령어는 한줄로 enter 띄우는거 아니고, upstream 하고 한칸 띄우면 된다.   1-2. 내가 ..

형상관리/git 2024.10.19

[GitHub] 깃허브 organization 초대받고 개인 로컬까지 세팅 과정(1)

이번에 미니 팀 프로젝트를 하면서 organization에 초대받고 Fork하고 Clone후 브랜치까지 파는 일련의 과정을 적어보려고 한다.자주 했던게 아니다보니, 이번에 꼼꼼하게 기록을 해보려고 한다. 1.  깃허브 계정과 연결되 메일에서 organization 초대 메일 확인 후 Join @{organizationName} 2. organization 레포지토리를 Fork하기Create fork를 하면 자신의 GitHub계정 리포지토리에 원본 리포지로티의 복사본이 생성이 된다.  3. Fork한 레포지토리 클론하기  3-1. Fork를 한 개인 GitHub 레포지토리를 누른다.   3-2. Code를 클릭한다. 3-3. 레포지토리 URL을 클릭해서 복사한다. 3-4. 터미널을 켜고, 프로젝트 경로를 ..

형상관리/git 2024.10.19

인프런) 판교 퇴근길 밋업 - 가을특집 with 개발바닥 후기!

인프런에서 강의를 보다가 개발 유튜브로 한때 즐겨보던 개발바닥팀이 진행을 한다고 해서 일단 신청!! 해봤는데초심자의 행운인지 당첨이 되었다. (실제 경쟁률이 713:100이었다고,,) 18:10부터 입장가능이라 1시간 10분정도 걸린다고 나와서 초행길이라 넉넉잡아 16시 40분정도에 출발하였다,,   입구와 입구에서 본 밋업 장소 분위기! 판교 퇴근길 밋업 에코백과 구독과 맞바꾼(?) 인프런 스티커!   9월 25일 18:30~21시까지 진행된 판교 퇴근길 밋업 with 개발바닥진행 순서 : 개비스콘(토크콘서트), 네트워킹&피맥 파티 속이 뻥 뚫리는 개비스콘 (향로 & 호돌맨) :개발바닥과 함께 하는 비밀스러운 토크 콘서트사전신청할때, 참가자의 고민내용도 적어서 713명 중 10명의 고민을 선정해서 답변..

끄적끄적 2024.09.26

알고리즘) 자연수 뒤집어 배열로 만들기(프로그래머스)

문제설명자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다. 제한조건n은 10,000,000,000이하인 자연수입니다입출력 예nreturn12345[5,4,3,2,1]  정답 코드import java.util.ArrayList;class Solution { public int[] solution(long n) { ArrayList answer = new ArrayList(); while (n != 0){ answer.add(n % 10); n /= 10; } return answer.stream().mapToInt(Long:..

알고리즘 2024.09.26