인기 글
최신 글
[요즘 개발자를 위한 시스템 설계 수업] 실무·면접을 모두 잡는 균형 잡힌 입문서
나는 리뷰어다 📚2025.11.23 11:38[요즘 개발자를 위한 시스템 설계 수업] 실무·면접을 모두 잡는 균형 잡힌 입문서

시스템 설계를 깊이 있게 공부해 보려는 개발자의 입장에서 이 책을 읽고 느낀 점을 정리해보았습니다!책이 어떻게 구성돼 있는지, 각 파트에서 어떤 실질적인 도움을 얻을 수 있는지, 실무나 면접에서 어떻게 써먹을 수 있는지를 중심으로 이야기해 볼게요.그리고 이 책이 어떤 분들에게 특히 잘 맞을지도 함께 소개하겠습니다. 책의 전체 구성: 넓게 보고, 깊게 파고드는 단계적 구조이 책은 총 세 부분으로 구성되어 있고, 흐름도 꽤 자연스럽게 이어집니다.1부 – 기본 개념과 분산 시스템 이론: 시스템 설계를 이해하기 위한 기초 프레임을 잡아줍니다.2부 – 핵심 구성 요소: DNS, 로드 밸런서, 데이터베이스, 캐싱, 메시지 큐처럼 시스템을 이루는 중요한 블록들을 설명합니다.3부 – 실전 서비스 설계 사례: 트위터·인..

[MySQL] 문자열 데이터를 저장하는 방법
Data 📊2025.03.24 23:43[MySQL] 문자열 데이터를 저장하는 방법

개발을 하다 보면 가장 많이 다루게 되는 데이터는 역시 문자열 데이터입니다.백엔드 개발자로서 저는 평소 "문자열 데이터를 어떻게 하면 효율적으로 저장하고 불러올 수 있을까?"라는 고민을 가장 많이 하는 것 같습니다.특히 데이터 저장을 위해서는 반드시 테이블이 필요한데요. 문자열 데이터를 저장하기 위한 테이블을 설계하다 보면 자연스럽게 한 가지 고민에 부딪히게 됩니다.바로, 문자열 데이터를 저장할 때 어떤 컬럼 타입을 선택해야 할지에 대한 고민이죠. (CHAR와 VARCHAR, 과연 무엇을 선택해야 할까요?) CHAR VS VARCHAR CHAR 타입과 VARCHAR 타입은 모두 문자열을 저장하기 위해 고안된 컬럼 타입이에요.두 타입 모두 다양한 문자 인코딩 방식(ASCII, UTF-8 등)을 지원하며, ..

[부트캠프 QA편] 더 탄탄한 소프트웨어를 만들기 위한 테스트 방법
나는 리뷰어다 📚2024.07.28 22:59[부트캠프 QA편] 더 탄탄한 소프트웨어를 만들기 위한 테스트 방법

한빛미디어 활동을 위해서 책을 제공받아 작성된 서평입니다 안녕하세요! 오늘은 이라는 책을 리뷰해보겠습니다! 이 책은 어떤 책인가요?' 이 책은 말그대로 QA 엔지니어가 만든 소프트웨어 테스트를 학습을 위한 책입니다. 이 책의 특징은 4주간의 커리큘럼 안에 QA 직무를 넘어 소프트웨어를 만들어가는 모든 조직원들이 알면 좋을 더 탄탄한 소프트웨어를 만드는 방법을 전수합니다. 소프트웨어 테스트란 무엇인가?저는 백엔드 개발자로서 만든 어플리케이션을 테스트 코드를 통해 테스트 함으로써 소프트웨어 테스트를 경험해보았는데요. 이 책은 그러한 코드레벨에서의 단위 테스트를 넘어 통합 테스트 / 기능 비기능 테스트 / 결함 및 리스크 관리 등기존의 시야에서 벗어나 더 넓은 의미에서의 테스트와 그를 통해 더욱 신뢰도 높..

코틀린과 JPA 같이 쓰지 말자
Kotlin 🤖2024.07.25 17:11코틀린과 JPA 같이 쓰지 말자

안녕하세요! 최근 지인들과 코틀린 스터디를 시작하게 되어서 코틀린에 대해서 학습을 해보고 있었습니다. 아직 깊이있게 이해했다라기 보다는 학습해나가는 중인데요. 자바에서 단점이라고 느꼈던 여러 문제들을 해결하기 위해 젯브레인사에서 얼마나 공들였는지 조금은 이해가 된달까요... 뭔가 Java + TS 느낌도 나구요.. ㅎㅎ 아무튼 코틀린의 매력에 빠져서 재미있게 시간을 보내고 있습니다. 스터디 과제가 자바와의 비교를 통해 코틀린에서 중요한 점을 정리해보는 것이여서 이를 정리할 겸 제가 느낀 코틀린의 첫인상과 자바와의 비교를 통한 가치를 글로써 남겨보고자 합니다. 코틀린에 대해 잘 모르는 자바 개발자가 쓴 글이니 지적은 언제나 환영입니다! 코틀린은 JPA랑 왜 같이 쓰면 안될까?기존에 자바 + 스프링 + JP..

AWS EC2 정복하기
AWS 🛒2024.06.18 19:50AWS EC2 정복하기

안녕하세요! 지난 번 글에서 IAM으로 계정을 관리해보았으니 이번에는 직접 인스턴스를 생성하고 공부해보도록 하겠습니다! AWS 예산 설정 하기실제로 AWS 서비스를 본격적으로 이용하기 전에 예기치 못한 과금이 발생하는 것을 막기 위해 예산을 설정하는 것이 좋습니다.계정명 클릭 후 결제 및 비용 관리 메뉴로 들어갑니다. (혹시 IAM 계정으로 결제 정보에 접근이 안되는 분은 루트 계정으로 들어간 후 해당화면에서 따로 권한을 주어야합니다!) 접속을 성공적으로 하게되면 이렇게 과금 정보를 볼 수 있습니다. 저같은 경우는 슬랙 봇 프로젝트 진행을 위해 프리티어 EC2 인스턴스를 사용중이어서 0$가 과금되는 모습을 볼 수 있습니다! 실제 서비스에서 이 메뉴를 통해 비용을 분석하고 예상할 수 있기 때문에 자주 사용..

AWS IAM으로 안전하게 협업하기
AWS 🛒2024.06.18 13:39AWS IAM으로 안전하게 협업하기

안녕하세요! 프로젝트를 진행하다보면 보통 AWS를 활용하기 마련인데요.AWS를 잘 모르고 사용했을 때는 AWS 계정 주인의 root 계정을 돌려서 사용하고 하다보니 보안적인 이슈나 협업 효율성에서 많이 손해를 보곤 하였습니다 😂 오늘은 안전하게 팀원들과 협업을 할 수 있도록 AWS IAM에 대해서 알아보는 시간을 갖겠습니다!IAM은 무엇인가? AWS Identity and Access Management(IAM)은 AWS 리소스에 대한 접근을 관리하는 글로벌 서비스입니다. 글로벌 서비스란? 리전(지역)에 구애받지 않고 AWS 인프라에 전역적으로 설정 가능한 서비스! AWS를 사용하기 위해선 회원가입을 하는데요, 그 과정에서 사용자의 정보와 직접 결제가 이루어지는 계좌 정보를 입력하는 등 직접 AWS와 ..

Backend
ServiceImpl 쓰지 말까?
ServiceImpl 쓰지 말까?
Spring 🌱
2024.06.14 12:04
안녕하세요! 오늘 글을 쓰게된 계기는 하나의 유튜브 영상을 보고나서입니다! 아래는 그 영상입니다!! (두둥)ServiceImpl 쓰지 말자 - 제미니의 개발실무 해당 영상은 개인적으로 존경하는 개발자인 김재민님의 유튜브 영상인데요. 해당 영상을 보고 와닿은 점이 많이 있어 글로써 기록하고자 합니다. 개인적인 생각이 담긴 글에 가까우니 다들 가벼운 맘으로 읽어주세요 😉 (영상을 보고 오시면 더욱 좋습니다!) ServiceImpl이 무엇인가요?먼저 스프링 기반의 프로젝트를 진행할 때 대부분 국룰로써 이러한 구조를 사용하게 됩니다.사용자의 입력을 담당하는 Controller, 비즈니스 로직을 담당하는 Service, 데이터베이스와의 상호작용을 담당하는 Repository의 구조입니다. 여기서 Service계..
스프링 빈과 컨테이너
스프링 빈과 컨테이너
Spring 🌱
2024.03.12 19:10
안녕하세요! 지난 번 의존성 주입에 대한 글을 작성했는데 혹시 보신 분 있으신가요?! Dependency Injection이란? 지난 번 작성된 글 제어의 역전(IOC) 이란? 에서 간단히 알아본 의존성 주입(Dependency Injection)이란 무엇인지 함께 알아보는 시간을 가지도록 하겠습니다! Dependency Injection이란? 의존성 주입(Dependency stonehee99.tistory.com 오늘은 이 글에 이어서, 스프링 프레임워크에서는 의존성 주입이 어떻게 일어나는지를 살펴보려고 합니다! 이를 알기 위해선 먼저 Spring Bean과 Spring Container의 개념에 대해 알아야 합니다! 스프링 컨테이너란? 스프링 컨테이너는 스프링 프레임워크의 핵심입니다. 어플리케이션 ..
HandlerMapping과 HandlerAdapter는 왜 나뉘었나요?
HandlerMapping과 HandlerAdapter는 왜 나뉘었나요?
Spring 🌱
2024.02.07 22:15
오늘은 제가 참여하고 있는 부트캠프 과정인 Kernel360 에서 유명 자바 강사이신 박은종 디렉터님과 함께 스터디를 진행하였습니다. 스터디의 주제는 Spring Web MVC Framework 이었고 그 중 해당 프레임워크의 구조에 대해서 이야기를 나누고 있었습니다. Spring Web MVC 프레임워크의 요청 처리 흐름 해당 이미지를 보고 처리 흐름을 알아보겠습니다. 클라이언트로부터의 요청이 서버에 도착합니다. 서버의 요청은 Dispatcher Servlet에 먼저 도달합니다. 이것은 스프링 프레임워크가 프론트 컨트롤러 패턴으로 구성되어있기 때문인데요, 모든 요청을 적절한 처리기에 전달하는 역할을 합니다. 요청이 도착했으면 Dispatcher Servlet은 HandlerMapping을 통해 요청을 ..
스프링부트 프로젝트 시작하는 법
스프링부트 프로젝트 시작하는 법
Spring 🌱
2024.02.02 19:32
처음 스프링 부트를 배우려 하면 이런 생각이 들죠. “도대체 어떻게 프로젝트를 만들지?”“무엇을 설치해야 하지?” 걱정하지 마세요. 이 글에서는 스프링 부트 프로젝트를 가장 빠르고 정확하게 시작하는 두 가지 방법을 소개합니다. Spring Initializr — 웹 사이트에서 템플릿을 생성IntelliJ IDEA — IDE에서 바로 프로젝트 생성이제 함께 여러분의 첫 번째 스프링 부트 프로젝트를 만들어봅시다! 💪 스프링 부트란? 스프링 부트(Spring Boot)는 스프링(Spring) 프레임워크를 더 쉽게 사용할 수 있도록 만든 도구입니다.복잡한 설정 없이도 간단히 웹 서버를 실행하고,API나 웹 서비스를 빠르게 개발할 수 있도록 도와줍니다. 즉, 스프링 부트는 “설정의 복잡함을 줄이고, 바로 실행..
Programming
코틀린과 JPA 같이 쓰지 말자
코틀린과 JPA 같이 쓰지 말자
Kotlin 🤖
2024.07.25 17:11
안녕하세요! 최근 지인들과 코틀린 스터디를 시작하게 되어서 코틀린에 대해서 학습을 해보고 있었습니다. 아직 깊이있게 이해했다라기 보다는 학습해나가는 중인데요. 자바에서 단점이라고 느꼈던 여러 문제들을 해결하기 위해 젯브레인사에서 얼마나 공들였는지 조금은 이해가 된달까요... 뭔가 Java + TS 느낌도 나구요.. ㅎㅎ 아무튼 코틀린의 매력에 빠져서 재미있게 시간을 보내고 있습니다. 스터디 과제가 자바와의 비교를 통해 코틀린에서 중요한 점을 정리해보는 것이여서 이를 정리할 겸 제가 느낀 코틀린의 첫인상과 자바와의 비교를 통한 가치를 글로써 남겨보고자 합니다. 코틀린에 대해 잘 모르는 자바 개발자가 쓴 글이니 지적은 언제나 환영입니다! 코틀린은 JPA랑 왜 같이 쓰면 안될까?기존에 자바 + 스프링 + JP..
자바의 static
자바의 static
Java ☕️
2024.05.22 17:58
자바를 사용해 코딩을 하다보면 static 이라는 키워드를 보게 됩니다!대표적으로 public static void main() 과 같은 구문에서도 볼 수 있죠! 오늘은 이 static 키워드가 무엇을 의미하고 어떻게 동작하는지 알아보겠습니다! 자바의 static자바에서 static 키워드는 클래스 수준에서 변수를 선언하거나 혹은 메서드를 정의할 때 사용합니다.static의 사용을 통해 클래스의 인스턴스에 속하는 것이 아닌 클래스 자체에 속하는 멤버를 만들 수 있습니다.예를 들어볼까요?static 변수static 변수는 정적 변수 혹은 클래스 변수라고도 합니다. 클래스의 모든 인스턴스가 공유하는 변수 입니다.public class Counter { private static int count = 0..
자바의 메모리 구조
자바의 메모리 구조
Java ☕️
2024.05.22 14:49
자바 어플리케이션의 성능을 확인하고 개선하기 위해선, 자바 메모리 구조에 대한 이해가 필요합니다.자바의 메모리 관리를 잘 하기만 하더라도 어플리케이션이 더욱 효율적으로 실행 될 수 있죠! 자바의 메모리 구조 자바의 메모리 구조는 크게 3가지로 나눌 수 있습니다.메서드 영역: 이 영역은 모든 스레드가 공유하는 메모리 영역으로, 클래스 수준의 정보(클래스 로더에 의해 로드된 클래스와 인터페이스의 메타데이터), 정적 변수를 저장하는 static 영역, 상수를 저장하는 Constant Pool 로 이루어져 있습니다. 이 영역은 어플리케이션이 실행되는 동안 잘 변하지 않는 정보를 저장하는데 사용합니다.스택 영역: 자바 어플리케이션 실행 시, 어플리케이션 내의 스레드마다 각 스레드의 스택이 존재하게 되는데, 해당 ..
자바의 가비지 컬렉션(GC) 한 번에 이해하기
자바의 가비지 컬렉션(GC) 한 번에 이해하기
Java ☕️
2024.02.02 21:46
가비지 컬렉션(GC)이란? 자바를 배우다 보면 한 번쯤 들어봤을 용어, 바로 가비지 컬렉션(Garbage Collection, GC)입니다. 간단히 말해, GC는 더 이상 접근할 수 없는 객체(=가비지)를 찾아내서 자동으로 메모리를 정리해주는 기능이에요.개발자가 직접 free()나 delete 같은 명령으로 메모리를 해제하지 않아도 된다는 점이죠. 이 덕분에 자바는 “메모리 안전성과 개발 생산성” 두 가지를 모두 잡을 수 있었습니다.GC가 없었다면 매번 메모리를 신경 써야 했을 테니, 개발 속도는 훨씬 느려졌겠죠. 조금 더 깊이 들어가 보면, GC는 JVM의 힙(Heap) 구조에서 작동하며수집기(Collector)의 종류나 동작 방식에 따라 성능이 달라집니다.이 부분을 이해하면 실무에서 메모리 누수나 성..
String vs StringBuffer vs StringBuilder — 자바 문자열 클래스의 차이 완전 정리
String vs StringBuffer vs StringBuilder — 자바 문자열 클래스의 차이 완전 정리
Java ☕️
2024.02.02 10:17
자바에서는 문자열을 다루기 위해 String, StringBuffer, StringBuilder 세 가지 클래스를 사용합니다.오늘은 각 클래스의 특징, 동작 방식, 성능, 스레드 안정성, 그리고 상황별 선택 기준을 비교해볼게요! 이 글을 통해 아래와 같은 것들을 이해해볼 수 있을거에요!String이 불변(Immutable) 객체인 이유StringBuffer와 StringBuilder의 필요성과 차이상황에 맞는 문자열 클래스 선택 방법 String — 불변(Immutable)한 문자열String 객체는 한 번 생성되면 내부 값이 변경되지 않는 불변(Immutable) 객체입니다.이 덕분에 자바는 문자열을 String Pool에 저장하고, 동일한 문자열 리터럴을 재사용할 수 있습니다.String str1 =..
Double과 Float를 사용하면 안되는 이유
Double과 Float를 사용하면 안되는 이유
Java ☕️
2024.02.01 23:41
자바에서 소수(실수)를 표현할 때는 보통 float이나 double을 사용합니다.하지만 강의나 실무에서 이런 말을 자주 듣게 됩니다.double과 float 대신 BigDecimal을 사용하세요!이 말은 단순한 습관이나 규칙이 아니라, 부동소수점 연산의 정확도 문제라는 기술적인 이유가 있습니다.오늘은 다음과 같은 내용을 함께 알아볼게요.float, double에서 오차가 발생하는 이유부동소수점 표현 방식(IEEE 754 표준)의 한계BigDecimal이 이러한 문제를 어떻게 해결하는지각 자료형을 언제, 어떻게 사용해야 하는지 부동소수점 연산의 정확도 문제다음은 간단한 예제입니다.double a = 1.03;double b = 0.42;System.out.println(a - b);예상 결과는 0.61이지..
JDK, JRE, JVM의 차이와 자바 실행 구조 이해하기
JDK, JRE, JVM의 차이와 자바 실행 구조 이해하기
Java ☕️
2024.02.01 20:10
오늘은 자바 프로그램의 실행 과정을 단계별로 살펴보며, 그 과정에서 JDK, JRE, JVM의 역할과 관계를 이해해보는 시간을 가져볼게요!이를 통해 자바의 핵심 특징인 플랫폼 독립성이 구현되는 원리를 함께 알아보겠습니다.이 개념들을 이해하면 다음을 명확히 알 수 있을거에요!자바가 운영체제에 상관없이 동작할 수 있는 이유(플랫폼 독립성)자바 코드가 컴파일되고 실행되는 전체 과정JDK, JRE, JVM 각각의 기능과 역할자바의 플랫폼 독립성 컴퓨터는 기본적으로 0과 1, 즉 기계어만 이해합니다. 하지만 이 기계어는 운영체제(OS)마다 다르기 때문에, 같은 프로그램이라도 Windows, macOS, Linux에서 실행 방식이 달라집니다. 자바는 이러한 문제를 해결하여 한 번 작성하면 어디서나 실행된다(Writ..
Review
image