25년 KSUG에서 주니어 및 취준생 분들과 함께한 스터디 진행 기록입니다.스프링 프레임워크 혹은 데이터베이스에 대한 스터디를 진행 했고, 저는 스프링 프레임워크를 선택했습니다.*스프링 프레임워크 가이드 책: 스프링 부트3 핵심 가이드*데이터 베이스 가이드 책: 새로 쓴 대용량 데이터베이스 솔루션 1기여해주시는 멘토 분들께 항상 감사드립니다. 이번 시간에는 Spring Boot - 제2장: 개발에 앞서 알면 좋은 지식데이터 베이스 - 1.3장: SQL의 실행 계획부분을 정리해오기로 했다.오늘은 스터디 시작 전에 발표를 자원해주신 분들이 계셔서, 비교적 원활하게 진행할 수 있었다. 오늘은 특별히 게스트로 '김근수'님께서 참석해 주셨는데, 발표 내용이 특히 인상 깊었다. Spring Camp에서도 연사로 ..
25년 KSUG에서 주니어 및 취준생 분들과 함께한 스터디 진행 기록입니다.스프링 프레임워크 혹은 데이터베이스에 대한 스터디를 진행 했고, 저는 스프링 프레임워크를 선택했습니다.기여해주시는 멘토님들께 항상 감사드립니다. 2회차 스터디에서 메인으로 사용하는 책은 '스프링 부트 3 핵심 가이드'라는 책이다. 2회차에는 2장부터 정리를 하면 되고, 3장은 개발 환경 구성 하는 챕터여서 생략했다.원래는 이번 시간에 2장만 하면 되는 것이었는데 읽는 김에 금방 읽을 수 있을 것 같아 5장까지 읽고 정리해보았다. 이번에는 책을 읽으면서 필요한 전공 지식을 질문 형태로 정리하고, 그에 대한 답을 찾아보는 방식으로 공부해보기로 했다. 기도님께서 참고하라고 공유해주신 리포지토리가 있었는데, 그 방식처럼 나도 질문지를..
25년 KSUG에서 주니어 및 취준생 분들과 함께한 스터디 진행 기록입니다.스프링 프레임워크 혹은 데이터베이스에 대한 스터디를 진행 했고, 저는 스프링 프레임워크를 선택했습니다.기여해주시는 멘토 분들께 항상 감사드립니다. 이번 시간에는Spring Boot - 제1장 스프링 부트란?Database - 제1장 데이터 저장구조와 특징부분을 정리해오기로 했다. 그런데 Spring Boot 발표자 2번으로 내가 선정됨 ... 발표 하는 건 항상 긴장된다. 그래도 2번째 발표자이길 다행이지 🥹 1번 분께서 대부분을 말씀 해주시고 겹치지 않는 부분만 따로 발표했다.이렇게 해서 어떻게 면접도 보고 공개 장소에서도 발표를 할지... 항상 걱정이 많다.스터디 참여자가 6명인데 그 중 2명이 발표인 거면 항상 발표할 확..
25년 KSUG에서 주니어 및 취준생 분들과 함께한 스터디 진행 기록입니다.스프링 프레임워크 혹은 데이터베이스에 대한 스터디를 진행 했고, 저는 스프링 프레임워크를 선택했습니다.기여해주시는 멘토님들께 항상 감사드립니다. 스프링 프레임워크는 자바에서 가장 많이 사용하는 프레임워크이다.프레임워크와 라이브러리구분프레임워크라이브러리제어 흐름프레임워크가 제어(IoC)개발자가 제어역할애플리케이션 뼈대 제공특정 기능을 쉽게 사용할 수 있게 만든 도구 제공호출 주체프레임워크가 내 코드를 호출내가 라이브러리를 호출유연성상대적으로 낮음상대적으로 높음IoC(Inversion of Control): 제어의 역전일반적인 코드 작성이라면 개발자가 직접 객체를 만들고 사용한다.public class UserController { ..
제가 소속된 동아리인 클라우드 클럽 7기에서 각자 책을 읽고, 짧게 발표 하는 시간을 가졌습니다. 그 과정에서 발표를 준비하며 만든 발표 자료를 공유합니다. 책을 읽으며 중요하다고 생각하거나 흥미로웠던 부분 3가지를 중심으로 정리했고,필요하다고 느낀 부분은 책에 없는 내용도 일부 보완하여 함께 담아 보았습니다. DB의 단편화와 최적화B+트리는 Root > Branch > Leaf의 트리 구조를 가지며, 균형(Balance)을 유지하는 것이 중요합니다.데이터 삭제 시에도 이 균형을 유지하기 위해 노드의 재정렬이 필요합니다. 삭제된 데이터는 실제로 즉시 제거되지 않고, 해당 공간에 ‘삭제됨’이라는 마크만 남겨 사용이 불가능한 상태로 유지됩니다. 이러한 마킹된 공간이 많아질수록 저장 공간의 단편화가 심해..
동생이 우리 집에 자주 놀러 오는데, 그때마다 "언제 놀러 오는 거야?", "언제 와서 언제 나가?"라는 질문을 계속 해야 했다. 이 과정을 반복하는 것이 너무 불편해서 사이드 프로젝트로 '우리집 예약 시스템'을 만들기로 했다. 사용한 테크 스택DB: MySQLBE: Java 17, Spring, jOOQFE: Next.js (v0.dev의 도움을 받았다)사내에서 JPA도 물론 사용하지만, jOOQ도 사용해보게 되었는데, jOOQ만의 매력이 있는 것 같아 사이드 프로젝트를 하면 꼭 사용해보고 싶었다. 카카오톡 알람으로 서로에게 알람 메시지를 보내려고 했는데, 이 부분은 회원가입이 이미 되어있는 유저들만 가능 해서 개발 하는 시간 내에 구현을 다 하지 못할 것 같아 빠르게 구현하기 위해 나에게 채팅 보내기..
1. Aerospike vs Redis 간단 비교둘 다 NoSQL 데이터베이스지만, 아키텍처와 확장성에서 차이가 있다.특징AerospikeRedis아키텍처대규모 데이터 셋을 처리하도록 설계됨하이브리드 메모리 아키텍처(RAM & SSD 효율적 사용)단일 코어에서 실행되는 인메모리 데이터 구조 저장소주로 RAM에 데이터를 저장하도록 설계됨확장성자동 샤딩과 데이터 재분배를 통해 수평 확장에 최적화됨Redis Cluster를 통해 최대 1000개의 노드로 확장 가능수직 확장에 더 적합데이터 모델키-값 저장소와 문서 모델을 지원키-값 저장소이면서 다양한 데이터 구조를 지원 과거에는 Aerospike를 사용했지만, 최근에는 Redis 사용이 증가하고 레퍼런스가 적어지면서 Aerospike 서버를 Redis로 마이그..
API 요청을 제어하려면 Rate Limiting(속도 제한) 이 필요합니다.이 글에서는 API를 "1분 이내 30번 요청 가능하지만, 24시간 동안 최대 30번만 허용"하는 Bucket4j의 정책을 설정하는 방법을 다룹니다.*Bucket4j을 도입하는 방법을 설명하는 것은 아닙니다.Rate Limiting이란?Rate Limiting(속도 제한)은 특정 시간 동안 허용할 요청 수를 제한하는 기술입니다.예를 들어:"1분에 60개의 요청 가능" (API 남용 방지)"24시간 동안 100개의 요청 가능" (과도한 사용 제한)이러한 제한을 적용하면 서버 부하를 방지하고, 공정한 API 사용을 보장할 수 있습니다.Bucket4j로 정책 설정하기Bucket4j는 토큰 버킷(Token Bucket) 알고리즘을 기반..