Java에는 같은 숫자를 표현하는 두 가지 타입이 존재합니다.Integer는 '메서드를 가진' ' 객체'라는 점을 기억할 것int <-> Integer 간 변환을 의미합니다.같은 맥락으로, Java의 제네릭 (<T>)은 객체 타입만 받을 수 있으므로, St
데이터베이스 관련 테이블 관련 사용자 / 권한 관련 상태 / 정보 확인 접속 / 종료 기타 팁
stream() 개념을 확실히 하고 용례를 정리한다Collection 인터페이스에 .stream() 메서드가 정의되어 있기 때문에, List/Set 등 컬렉션 계열은 .stream()을 통해 바로 호출 가능배열은 Collection이 아니므로 .stream() 보유하지
두 테이블 모두에 매칭되는 데이터만 반환합니다.활용 예시: 실제로 주문한 사용자와 주문 내역을 함께 조회할 때왼쪽 테이블은 모두 반환하고, 오른쪽에 매칭이 없으면 NULL로 채웁니다.활용 예시: 주문 여부와 관계없이 모든 사용자 목록을 조회할 때, 또는 주문 안 한 유
처음 개발을 시작하면, 하나의 파일에 모든 코드를 몰아넣고 싶은 충동이 생깁니다. DB 연결, 비즈니스 로직, 화면 출력까지 한 곳에. 당장은 편하지만, 프로젝트가 커지는 순간 "이 코드가 어디 있지?", "여기 건드렸더니 저기가 터졌다" 같은 상황이 반복됩니다.Lay
Q. 모놀리식도 알겠고, MSA도 알겠는데, 그러면 모놀리식이었던 프로젝트를 MSA로 전환하는 기준은 보통 어느정도의 capacity를 기준으로 삼는가?📌 먼저 알아야 할 것: MSA는 "복잡성과의 트레이드오프"MSA는 규모의 문제를 해결하지만, 동시에 운영 복잡도를
개발에서 트레이드 오프란, 어떤 것을 얻으면 반드시 다른 것을 포기해야 하는 상충 관계를 말합니다. 즉, 모든 걸 다 가질 수 없고 상황에 맞게 무엇을 우선순위에 둘지 선택해야 한다는 개념입니다.현실의 시스템은 성능, 비용, 유지보수성, 보안, 개발 속도 등 여러 요소
Spring Framework나 Java 등을 사용하다 보면 버전 옆에 낯선 용어들이 붙어 있는 걸 자주 보게 됩니다. 이 용어들은 소프트웨어의 개발 및 배포 단계를 나타내는 것으로, 업계 전반에서 공통적으로 사용하는 개념입니다.소프트웨어는 개발 → 테스트 → 배포의
Java 객체는 JVM 메모리 안에서만 존재할 수 있습니다.네트워크로 전송하거나 파일로 저장하려면 누구나 읽을 수 있는 공통 형식(JSON, XML 등)으로 변환해야 합니다.Spring Boot는 Jackson 라이브러리가 직렬화/역직렬화를 자동으로 처리합니다.Q. J
JPA를 사용하다 보면 반드시 마주치게 되는 유명한 성능 문제가 있습니다.바로 N+1 문제입니다.이 문제를 이해하지 못하면, 개발 환경에서는 아무 이상 없어 보이다가 실제 서비스에서 DB가 과부하로 다운되는 상황을 겪을 수 있습니다.N+1 문제란, 1번의 쿼리로 N개의
Redis는 단순한 캐시가 아닙니다. 세션 저장소, 분산 락, 메시지 큐 등 다양한 역할을 수행할 수 있는 강력한 인메모리 데이터 저장소입니다.Redis(Remote Dictionary Server)는 메모리 기반의 Key-Value 저장소입니다.데이터를 디스크가 아닌
단위 테스트(Unit Test)를 처음 작성하다 보면 기능 구현보다 테스트 메서드 이름 짓기에서 더 많은 고민을 하게 되는 경우가 있다.Roy Osherove의 The Art of Unit Testing 과 Ajitesh Kumar의 "7 Popular Unit Tes
개발을 처음 배울 때, 인터넷의 강의, 책, 다양한 멘토들은 이렇게 말한다."매직 넘버(Magic Number)를 쓰지 말고, 상수로 정의하라."처음 들었을 때는 그냥 그런가 보다 하고 넘겼다. 그런데 실제로 코드를 작성하다 보면 이런 생각이 든다."그러면 숫자나 문자
본 포스팅은 팀 프로젝트를 경험하면서 컨벤션 부재로 고생한 뒤, "처음부터 이걸 알았더라면" 하는 마음으로 정리한 내용이다.컨벤션(Convention) 이란, 팀원 전원이 동의한 "코드 작성 방식과 협업 규칙의 집합"이다.단순히 들여쓰기를 탭으로 할지 스페이스로 할지
참고 링크: Google Java Style Guide 공식 문서Java를 어느 정도 다뤄본 사람이라면 한 번쯤 이런 상황을 겪어봤을 것이다.PR(Pull Request)을 올렸더니 리뷰어가 코드 내용이 아닌 스타일을 지적한다. 들여쓰기가 다르다, 중괄호 위치가 다르다
spring profile spring boot profile spring profile yaml application-local.yaml spring configurationproperties spring boot 환경설정
GitHub vs GitLab — 핵심 비교 | 항목 | GitHub | GitLab | |------|--------|--------| | 설립 | 2008년 설립 / MS 인수(2018) | 2011년 설립 / 독립 상장(2021) | | 철학 | 커뮤니티 + 마켓플레이스 중심 | 올인원 DevOps 플랫폼 | | CI/CD | GitHub Acti...

"우리가 이전에는 불가능했던 방식으로 기술 부채를 쌓을 수 있게 해주는 새로운 신용카드가 생긴 것과 같다."— Armando Solar-Lezama, MIT 교수 (AI 코딩 도구에 대해)개발을 시작하다 보면 어느 순간 이런 생각이 든다."지금은 일단 되게만 만들자.
Spring + JPA로 프로젝트를 마치고 나면, 대부분의 코드는 아래 두 가지 형태 중 하나로 수렴한다.장면 1 — Entity 하나가 세상의 중심이 된다User를 조회했을 뿐인데 Order, Review, Cart, UserAddress, Store가 줄줄이 딸려온
처음 백엔드를 배울 때를 떠올려보면, 항상 ERD부터 그렸다. 요구사항을 받으면 "어떻게 저장할까"를 먼저 고민하고, 테이블을 만들고, FK를 지정하고, 그걸 그대로 엔티티로 옮기는 방식이었다. 당시엔 그게 자연스러운 흐름이라고 생각했는데, 프로젝트가 조금만 커져도 코

DDD 공부하면서 개인적으로 헷갈렸던 부분을 정리해둠. (개인적인 글)DDD를 처음 배울때 많이 혼동하는 부분. 결론부터 말하면 다른 개념이지만, 완전 무관하지는 않다. 각각이 무엇을 바라보는지를 비교해보자핵심 차이를 예시로 보면 - 이커머스를 예로 들어보자.테이블 단
DDD를 처음 접하면 개념이 너무 많아서 길을 잃기 쉽다. 바운디드 컨텍스트, 애그리거트, 유비쿼터스 언어, Facade, DTO... 각각은 이해했는데 전체 그림이 안 보이는 느낌.그런데 찬찬히 들여다보면, 이 모든 개념이 결국 하나의 목표를 향하고 있다는 걸 알게

본 포스팅은 Google이 공개한 엔지니어링 프랙티스 문서(eng-practices)를 바탕으로, 코드 리뷰를 처음 접하거나 팀 내 리뷰 문화를 개선하고 싶은 개발자를 위해 핵심 내용을 정리한 것이다.코드를 구성하다 보면 어느 순간 PR(Pull Request)을 올리

본 포스팅은 Conventional Commits 스펙(specification, 명세)을 처음 접하는 개발자를 위해,개념부터 실제 툴체인(toolchain, 개발 도구들의 연결 체계) 설정까지 정리한 내용이다.팀 프로젝트를 하거나 오픈소스 저장소를 돌아보면, 커밋 히

본 포스팅은 Java / Spring Boot 환경을 기준으로 작성되었다. 개념 자체는 언어에 무관하게 통용되지만, 코드 예시는 Java + Spring Boot 3.x 기준이다.백엔드 개발을 하다 보면 아래와 같은 상황을 마주할 수 있다.서버의 CPU 사용률은 20%
바야흐로 대 AI시대.관련 글이나 영상, 자료, 문서를 읽다 보면 다양한 용어가 등장한다. 비슷한듯 하면서 다른 이 용어들은, 실제로 서로 다른 레이어(layer, 계층)에 있다.포스팅으로 정리해서 각 용어를 구분해서 이해할 수 있도록 차근차근 짚어본다.AI는 사람이
"코드는 컴파일러가 아닌, 사람이 읽는 것이다."— Robert C. Martin, Clean Code코드를 구성하다 보면 이런 경험을 한 번쯤 해봤을 것이다.분명 내가 작성한 코드인데, 한 달 뒤에 다시 보면 이게 무슨 뜻이지? 하고 멈추게 된다. 만약 협업 중 팀원

본 포스팅은 CQRS 패턴을 학습하면서 정리한 내용이다.개념 자체는 단순해 보이지만, 왜 이런 설계가 등장했는지, 어떤 문제를 풀기 위한 것인지를 함께 이해하는 것이 핵심이다.CQRS의 단순 개념만으로는 서비스 레이어를 조회용, 명령용으로 나누는 것 정도로 이해할 수

출처 : https://peter.bourgon.org/blog/2017/02/21/metrics-tracing-and-logging.html모니터링,로깅에 대해 한창 학습 하던 중 좋은 인사이트가 되어 포스팅해봤다요약하자면 "Metrics, Tracing,
OOP(Object-Oriented Programming, 객체지향 프로그래밍)는 Java를 처음 배울 때부터 귀에 못이 박히도록 듣는 개념이다. 그런데 막상 "캡슐화가 뭐야?"라고 물으면 대부분 "데이터를 숨기는 것"정도에서 멈춘다.4대 원칙은 알고 있는 것 같은데
본 포스팅은 Docker를 처음 써봤거나 명령어는 익숙하지만 내부 동작 원리가 잘 안 잡히는 상황에서 학습을 위해 정리한 내용입니다.컨테이너(Container)는 Host OS의 커널을 공유하되, 프로세스·네트워크·파일시스템을 격리한 가벼운 실행 환경이다.VM처럼 OS
본 포스팅은 단위 테스트·통합 테스트·E2E 테스트의 개념을 정리하고,Spring Boot 환경에서 각각을 어떻게 활용하는지를 다룬다.Mockito, Testcontainers, 그리고 TDD까지 한 흐름으로 연결해보았다.테스트 코드에 대해 익히고 처음 적용할땐, 단위