전체 글
xeulbn-dev 님의 블로그 입니다.
-
👀 들어가기 전에Spring을 공부하다 보면 Bean 등록 방식에서 한 번쯤 헷갈리는 지점이 있습니다.@Component를 붙이면 Bean으로 등록됩니다.그런데 @Configuration도 내부적으로 @Component를 포함하고 있습니다. 그렇다면 이런 의문이 생깁니다.“어차피 둘 다 Bean으로 등록되는 거면, @Configuration과 @Component는 같은 거 아닌가?” 결론부터 말하면 둘 다 Spring Bean으로 등록될 수 있지만 목적이 다릅니다.@Component는 일반 클래스를 Bean으로 등록하기 위한 어노테이션이고,@Configuration은 Bean 등록 설정을 담당하는 클래스임을 나타내는 어노테이션입니다. Spring 공식 문서에서도 @Configuration은 하나 이상..
[CS Study] @Configuration과 @Component는 뭐가 다를까?👀 들어가기 전에Spring을 공부하다 보면 Bean 등록 방식에서 한 번쯤 헷갈리는 지점이 있습니다.@Component를 붙이면 Bean으로 등록됩니다.그런데 @Configuration도 내부적으로 @Component를 포함하고 있습니다. 그렇다면 이런 의문이 생깁니다.“어차피 둘 다 Bean으로 등록되는 거면, @Configuration과 @Component는 같은 거 아닌가?” 결론부터 말하면 둘 다 Spring Bean으로 등록될 수 있지만 목적이 다릅니다.@Component는 일반 클래스를 Bean으로 등록하기 위한 어노테이션이고,@Configuration은 Bean 등록 설정을 담당하는 클래스임을 나타내는 어노테이션입니다. Spring 공식 문서에서도 @Configuration은 하나 이상..
2026.06.07 -
👀 들어가기 전에네트워크 통신은 비싼 작업이다. 라는 말 한 번즘은 들어보셨을 것이라 생각됩니다.이에 저는이게 개발하는 것과 어떻게 관련되어있는지왜 이 네트워크 통신 비용을 생각해야하는지 라는 의문이 들었습니다. 처음에는 이 네트워크 통신이 비싼 작업이라는 말이 굉장히 추상적으로 들렸습니다.서버에서 API를 호출하는 것도 결국 코드 한 줄이고,DB에 데이터를 저장하는 것도 Repository 메서드 하나를 호출하는 것처럼 보이기 때문입니다. 하지만 실제 성능 문제를 마주하게 되면서 깨닫게 되었습니다. 반복문 안에서 외부 API를 계속 호출하거나, DB에 데이터를 한 건씩 Insert하거나,이미지와 JSON 응답 크기가 커질 때 순간 응답 시간이 눈에 띄게 느려지는 경우가 발생합니다.네트워크 통신에는 물..
[CS Study] 네트워크 통신은 왜 비싸다고 하는 것일까? 이게 개발과 무슨 관련일까?👀 들어가기 전에네트워크 통신은 비싼 작업이다. 라는 말 한 번즘은 들어보셨을 것이라 생각됩니다.이에 저는이게 개발하는 것과 어떻게 관련되어있는지왜 이 네트워크 통신 비용을 생각해야하는지 라는 의문이 들었습니다. 처음에는 이 네트워크 통신이 비싼 작업이라는 말이 굉장히 추상적으로 들렸습니다.서버에서 API를 호출하는 것도 결국 코드 한 줄이고,DB에 데이터를 저장하는 것도 Repository 메서드 하나를 호출하는 것처럼 보이기 때문입니다. 하지만 실제 성능 문제를 마주하게 되면서 깨닫게 되었습니다. 반복문 안에서 외부 API를 계속 호출하거나, DB에 데이터를 한 건씩 Insert하거나,이미지와 JSON 응답 크기가 커질 때 순간 응답 시간이 눈에 띄게 느려지는 경우가 발생합니다.네트워크 통신에는 물..
2026.05.29 -
👀 들어가기 전에소프트웨어를 오래 들여다보면, 결국 코드가 동작하는지보다 바뀔 수 있는지가 더 중요한 순간이 오게 됩니다. 처음 짤 때는 모두 동작은 합니다. 하지만 6개월 뒤, 요구사항이 바뀌고 새 기능이 끼어들 때 비로소 그 코드가 "잘 설계되었는가"의 질문이 나오게 됩니다.로버트 마틴은 '클린 소프트웨어'에서 모든 모듈은 세 가지 목적을 가진다고 말하고 있습니다.실행 중에 제대로 동작할 것 — 모듈의 존재 이유 그 자체다.변경을 위해 존재할 것 — 대부분의 모듈은 생명주기 동안 변경되므로, 간단한 작업만으로 변경 가능해야 한다.코드를 읽는 사람과 소통할 것 — 특별한 훈련 없이도 개발자가 쉽게 읽고 이해할 수 있어야 한다.이 글은 두 번째와 세 번째 목적, 즉 "변경에 강한 코드를 어떻게 만들 것..
[CS Study] 디자인 패턴의 근본 : 객체지향👀 들어가기 전에소프트웨어를 오래 들여다보면, 결국 코드가 동작하는지보다 바뀔 수 있는지가 더 중요한 순간이 오게 됩니다. 처음 짤 때는 모두 동작은 합니다. 하지만 6개월 뒤, 요구사항이 바뀌고 새 기능이 끼어들 때 비로소 그 코드가 "잘 설계되었는가"의 질문이 나오게 됩니다.로버트 마틴은 '클린 소프트웨어'에서 모든 모듈은 세 가지 목적을 가진다고 말하고 있습니다.실행 중에 제대로 동작할 것 — 모듈의 존재 이유 그 자체다.변경을 위해 존재할 것 — 대부분의 모듈은 생명주기 동안 변경되므로, 간단한 작업만으로 변경 가능해야 한다.코드를 읽는 사람과 소통할 것 — 특별한 훈련 없이도 개발자가 쉽게 읽고 이해할 수 있어야 한다.이 글은 두 번째와 세 번째 목적, 즉 "변경에 강한 코드를 어떻게 만들 것..
2026.05.16 -
👀 들어가기 전에요즘 AI 코딩 에이전트가 주목을 받고 있습니다.GPT나 Claude 같은 대형 LLM은 사람 대신 코드를 쓰거나 문서를 정리하지만아무런 Harness없이 모델만 덩그러니 놓으면 제대로 일을 못하는 모습을 확인할 수 있습니다. Harness는 모델이 주어진 작업을 안전하고 효율적으로 수행하도록 돕는 도구, 규칙, 실행 환경의 집합입니다. 많은 프로젝트에서 에이전트의 행동을 설명하는 AGENTS.md, 개별 기능을 정의하는 SKILL.md와 같은 파일을 함께 관맇바니다.이 글에서는 좋은 에이전트와 하네스 설계란 어떤 것인지를 알아보려고 합니다.👀 본문 1. 하네스 엔지니어링이란? Harness Engineeering의 사전적 정의는 아래와 같습니다. Harness : 마구 (말을 타거나..
[CS Study] Claude Code & Codex with Harness Engineering👀 들어가기 전에요즘 AI 코딩 에이전트가 주목을 받고 있습니다.GPT나 Claude 같은 대형 LLM은 사람 대신 코드를 쓰거나 문서를 정리하지만아무런 Harness없이 모델만 덩그러니 놓으면 제대로 일을 못하는 모습을 확인할 수 있습니다. Harness는 모델이 주어진 작업을 안전하고 효율적으로 수행하도록 돕는 도구, 규칙, 실행 환경의 집합입니다. 많은 프로젝트에서 에이전트의 행동을 설명하는 AGENTS.md, 개별 기능을 정의하는 SKILL.md와 같은 파일을 함께 관맇바니다.이 글에서는 좋은 에이전트와 하네스 설계란 어떤 것인지를 알아보려고 합니다.👀 본문 1. 하네스 엔지니어링이란? Harness Engineeering의 사전적 정의는 아래와 같습니다. Harness : 마구 (말을 타거나..
2026.05.11 -
👀 들어가기 전에...많은 회사의 채용공고에서 기술 스택을 살펴보다 보면, 매번 빠지지 않고 등장하는 것이 있습니다. 바로 Kafka입니다. 이번 글에서는 메시지 브로커가 무엇인지부터 시작해, RabbitMQ와는 어떻게 다른지,그리고 우아한 형제들이나 토스 같은 실제 서비스에서는 Kafka를 어떻게 활용하고 있는지까지 차근차근 알아보겠습니다."왜 다들 Kafka, Kafka 하는 걸까?" 라는 질문에 스스로 답을 찾아볼 수 있는 시간이 되었으면 합니다.👀 본론1. Message Broker란?Kafka 이야기를 하기 전에 먼저 짚고 넘어가야 할 개념이 있다. 바로 메시지 브로커입니다.Message Broker는 Publisher로부터 전달받은 메시지를 Subscriber로 전달해주는 중간 역할이며, ..
[CS Study] Kafka, 들어는 봤지만 잘 모르는 그거...👀 들어가기 전에...많은 회사의 채용공고에서 기술 스택을 살펴보다 보면, 매번 빠지지 않고 등장하는 것이 있습니다. 바로 Kafka입니다. 이번 글에서는 메시지 브로커가 무엇인지부터 시작해, RabbitMQ와는 어떻게 다른지,그리고 우아한 형제들이나 토스 같은 실제 서비스에서는 Kafka를 어떻게 활용하고 있는지까지 차근차근 알아보겠습니다."왜 다들 Kafka, Kafka 하는 걸까?" 라는 질문에 스스로 답을 찾아볼 수 있는 시간이 되었으면 합니다.👀 본론1. Message Broker란?Kafka 이야기를 하기 전에 먼저 짚고 넘어가야 할 개념이 있다. 바로 메시지 브로커입니다.Message Broker는 Publisher로부터 전달받은 메시지를 Subscriber로 전달해주는 중간 역할이며, ..
2026.04.25 -
👀 들어가기 전에이번에 DDD 동아리에서 프로젝트를 진행하게 되며 저희 팀에서 강조한 가치는 딱 두가지였습니다.Agile하게.Sprint. 보기에는 굉장히 단순하고 간결한 가치이지만, 실제로 받아들이기까지는 굉장히 많은 고민이 있었고,이게 맞는가? 이렇게 해도 되는가?에 대한 고민이 많았습니다. 이에, Agile과 Sprint에 대해 고민을 많이 해왔던 순간들과 저의 감정들을 기록해보려합니다.👀 본문1. Agile이란? 정보처리 기사를 공부해보셨거나, 이 IT업계에서 종사를 하게 되면 정의 정도는 어디선가 들어본 적이 있으실 것이라 생각합니다.Agile이란 소프트웨어 개발 방법론의 하나로, 작업 계획을 짧은 단위로 세우고 제품을 만들고 고쳐나가는 방법을 반복함으로써 고객의 요구 변화에유연하고도 신속하..
[회고와 생각] Agile이란 무엇인가? Sprint란 무엇인가? (feat. DDD 동아리를 하며)👀 들어가기 전에이번에 DDD 동아리에서 프로젝트를 진행하게 되며 저희 팀에서 강조한 가치는 딱 두가지였습니다.Agile하게.Sprint. 보기에는 굉장히 단순하고 간결한 가치이지만, 실제로 받아들이기까지는 굉장히 많은 고민이 있었고,이게 맞는가? 이렇게 해도 되는가?에 대한 고민이 많았습니다. 이에, Agile과 Sprint에 대해 고민을 많이 해왔던 순간들과 저의 감정들을 기록해보려합니다.👀 본문1. Agile이란? 정보처리 기사를 공부해보셨거나, 이 IT업계에서 종사를 하게 되면 정의 정도는 어디선가 들어본 적이 있으실 것이라 생각합니다.Agile이란 소프트웨어 개발 방법론의 하나로, 작업 계획을 짧은 단위로 세우고 제품을 만들고 고쳐나가는 방법을 반복함으로써 고객의 요구 변화에유연하고도 신속하..
2026.04.24 -
👀 들어가기 전에이번에 DDD 동아리에서 프로젝트를 진행하며 진행하는 과정들을 기록해보기 위해서 이 글을 다시 작성하기 시작하려합니다.이번 프로젝트의 주제는 Digital Detox로, 실제로 Digital Detox에 대해 필요성을 느끼고 있는 현대인이 많을 것이고 (저를 포함해서...),이를 해결하기위해 어떻게 하면 그 중독성 있는 릴스를 끊을 수 있을 것인가에 중점을 맞춰 프로젝트를 진행하게 되었습니다.이 서비스는 실서비스로 배포가 될 예정인지라, 자세한 기획 내용까지 전부 밝히기는 어려운 점 양해부탁드립니다. 서비스 자체가 굉장히 애자일한 방식으로 스프린트하게 흘러가기 때문에(사용자의 반응과 데이터를 바탕으로 기능 및 세부 구현이 변경됩니다.) 따로 도메인을 처음부터 어디하자 어디하자가 아니라..
[DetoxMate] MVP개발 1차 개발 일기 (feat. TDD)👀 들어가기 전에이번에 DDD 동아리에서 프로젝트를 진행하며 진행하는 과정들을 기록해보기 위해서 이 글을 다시 작성하기 시작하려합니다.이번 프로젝트의 주제는 Digital Detox로, 실제로 Digital Detox에 대해 필요성을 느끼고 있는 현대인이 많을 것이고 (저를 포함해서...),이를 해결하기위해 어떻게 하면 그 중독성 있는 릴스를 끊을 수 있을 것인가에 중점을 맞춰 프로젝트를 진행하게 되었습니다.이 서비스는 실서비스로 배포가 될 예정인지라, 자세한 기획 내용까지 전부 밝히기는 어려운 점 양해부탁드립니다. 서비스 자체가 굉장히 애자일한 방식으로 스프린트하게 흘러가기 때문에(사용자의 반응과 데이터를 바탕으로 기능 및 세부 구현이 변경됩니다.) 따로 도메인을 처음부터 어디하자 어디하자가 아니라..
2026.04.19 -
👀 들어가기 전에도커를 처음 배울 때 대부분은 이렇게 생각하기 쉽습니다.작은 리눅스를 띄우는 거구나 그리고 쿠버네티스를 접하면도커를 여러 개 관리해주는 도구구나 정도로 정리하게 됩니다.틀린 말은 아니지만 이정도의 이해로는 네트워크의 문제가 생겼을 때,혹은 Pod간 통신이 안될 때, 정확한 원인을 짚어내기 어려울 것으로 생각되어집니다. 이 글을 쓰게 된 이유는 단순합니다.컨테이너 기술을 쓰면서도 "왜 이렇게 동작하는가"에 대한 명확한 답을 모르고 있었고,결국 문서를 복붙하는 수준에 머물러있다고 느꼈기 때문입니다. 그래서 이 글에서는 컨테이너의 본질인 리눅스 네임스페이스부터 시작해서 Docker가 그 위에서 무엇을 추상화했는지,그리고 Kubernetes가 왜 필요해졌는지를 기술적으로 깊이있게 다뤄보려고 ..
(CS Study) Docker 컨테이너 부터 Kubernetes까지 (feat. namespace가 바꾼 세상)👀 들어가기 전에도커를 처음 배울 때 대부분은 이렇게 생각하기 쉽습니다.작은 리눅스를 띄우는 거구나 그리고 쿠버네티스를 접하면도커를 여러 개 관리해주는 도구구나 정도로 정리하게 됩니다.틀린 말은 아니지만 이정도의 이해로는 네트워크의 문제가 생겼을 때,혹은 Pod간 통신이 안될 때, 정확한 원인을 짚어내기 어려울 것으로 생각되어집니다. 이 글을 쓰게 된 이유는 단순합니다.컨테이너 기술을 쓰면서도 "왜 이렇게 동작하는가"에 대한 명확한 답을 모르고 있었고,결국 문서를 복붙하는 수준에 머물러있다고 느꼈기 때문입니다. 그래서 이 글에서는 컨테이너의 본질인 리눅스 네임스페이스부터 시작해서 Docker가 그 위에서 무엇을 추상화했는지,그리고 Kubernetes가 왜 필요해졌는지를 기술적으로 깊이있게 다뤄보려고 ..
2026.04.18