profile
도메인을 이해하는 백엔드 개발자(feat. OOP)
태그 목록
전체보기 (127)김영한(67)인프런(67)자바(39)실전 자바 기본편(12)TIL(11)객체지향(10)리액트 10주 스터디(5기)(10)노마드코더(10)OS(10)실전 자바 중급 2편(10)실전 자바 중급 1편(9)우아한테크코스(9)자료 구조(9)Spring(9)스프링 핵심 원리 - 기본편(9)db(8)mysql(8)실전 데이터베이스 - 기본편(8)컬렉션 프레임워크(7)JPA(6)캡슐화(6)스프링 mvc(6)스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술(6)오픈 소스(6)자바 ORM 표준 JPA 프로그래밍 - 기본편(6)객체지향의 사실과 오해(6)스레드(5)TDD(5)네트워크(4)junit(4)실전 자바 고급 1편(4)메서드 오버라이딩(4)MVC 패턴(4)Mockito(4)조영호(4)람다(4)절차지향(3)다형성(3)프로젝트(3)객체 지향(3)CS(3)상속(3)오브젝트 코드로 이해하는 객체지향 설계(3)redis(2)불변 객체(2)제네릭(2)함수형 인터페이스(2)ArrayList(2)di(2)전략 패턴(2)인덱스(2)도메인(2)실전 자바 고급 3편(2)프록시(2)프로세스(2)(2)멱등성(2)linkedlist(2)CSR(2)SSR(2)Outbox 패턴(2)HashSet(2)예외 계층(2)this(2)데이터 타입(2)다형적 참조(2)그래프(2)스택(2)서블릿(2)JDBC(2)알고리즘(2)책임 주도 설계(2)ocp(2)해시(1)Autowired 애노테이션(1)빈 생명주기(1)로또(1)EAGAR(1)throws(1)operator(1)패키지(1)finally(1)HTTP API(1)iterable(1)iterator(1)dirty checking(1)Random 클래스(1)박싱(1)consumer(1)응집도(1)동등성(1)스프링 컨테이너(1)언체크 예외(1)React(1)instanceof(1)다익스트라(1)스트림(1)참조 무결성(1)Table 애노테이션(1)트리(1)StringBuilder(1)Configuration 애노테이션(1)comparable(1)JOIN(1)외부 반복(1)DLQ(1)스왑 공간(1)Side Effect(1)Blocking(1)연관 관계(1)non blocking(1)컴포넌트 스캔(1)고차 함수(1)공유 참조(1)(1)throw(1)문맥(1)결합도(1)abstract(1)SOLID(1)jsp(1)데몬 스레드(1)체크 예외(1)폴링(1)polling(1)tcp(1)tomcat(1)JoinColumn 애노테이션(1)재해싱(1)도메인 모델(1)절차 지향(1)웹 서버(1)자동차 경주(1)커버링 인덱스(1)명령형 프로그래밍(1)comparator(1)영속성 전이(1)next(1)WAS(1)HttpServletRequest(1)predicate(1)외부 조인(1)Entity 애노테이션(1)캐시(1)default(1)RequiredArgsConstructor 애노테이션(1)중첩 클래스(1)트랜잭션(1)interface(1)조인(1)Primary 애노테이션(1)Runnable 인터페이스(1)UNION ALL(1)Big O(1)Controller 애노테이션(1)BFS(1)union(1)CASE 문(1)외부 단편화(1)복합 인덱스(1)내부 반복(1)메서드 오버로딩(1)synchronous(1)LinkedHashSet(1)커넥션 풀(1)protected(1)Enum(1)cascade(1)runnable(1)테스트 커버리지(1)JVM(1)effectively final(1)KB IT's Your Life 7기(1)행동(1)JUnit5(1)클래스(1)System 클래스(1)얕은 복사(1)super(1)명시적(1)어댑터 패턴(1)쓰레드 풀(1)hashCode()(1)HttpServletResponse(1)rdd(1)책임(1)lazy(1)지역 클래스(1)컨텍스트 스위칭(1)유스케이스(1)Casting(1)프론트 컨트롤러 패턴(1)언박싱(1)try catch(1)Map(1)DFS(1)supplier(1)식별자(1)오브젝트 코드로 이해하는 객체지향(1)선언적 프로그래밍(1)타입 이레이저(1)최단 경로(1)문자열 메서드(1)영속성 컨텍스트(1)object 클래스(1)부트캠프(1)정적 팩토리 메서드(1)(1)섀도잉(1)equals(1)싱글톤(1)@MappedSuperclass(1)toString() 메서드(1)private(1)동일성(1)set(1)실전 자바 중급 3편(1)생성자(1)플러시(1)RequestMapping 애노테이션(1)와일드 카드(1)캐싱 전략(1)고아 객체(1)self join(1)내부 클래스(1)static(1)TreeSet(1)DispatcherServlet(1)열거형(1)협력(1)RequestParam 애노테이션(1)KB 국민은행(1)Qualifier 애노테이션(1)function(1)Math 클래스(1)묵시적(1)스프링 빈(1)서브 쿼리(1)cors(1)asynchronous(1)접근 제어자(1)익명 클래스(1)tlb(1)String 클래스(1)깊은 복사(1)Dispatcher(1)doDispatch(1)mappedBy(1)추상화(1)Wrapper 클래스(1)데메테르 법칙(1)final(1)단위 테스트(1)equals 메서드(1)GeneratedValue 애노테이션(1)public(1)IoC(1)LomBok(1)Class 클래스(1)getState(1)변수 캡쳐(1)메서드 체이닝(1)List(1)http(1)DNS(1)빈 스코프(1)문자열 덧셈 계산기(1)Cross Join(1)Datasource(1)
post-thumbnail

[KB 국민은행] IT’s Your Life 7기(전공자) 최종 합격 후기

우테코 불합격 이후, 내가 원하는 기업의 직무에 맞는 프로젝트를 개인적으로 진행하면서 코딩 테스트 대비도 열심히 하던 중, KB 국민은행과 멀티캠퍼스에서 주관하는 IT’s Your Life 7기 모집 공고를 보게 되었다. 원래는 우테코나 소프트웨어 마에스트로, 싸피 이

1일 전
·
0개의 댓글
·
post-thumbnail

Outbox 폴링 성능 개선 실험

지금 일련의 서비스 흐름을 정리하자면 아래와 같다.주문 생성 트랜잭션에서 orders 테이블에 주문 정보를 저장한다.같은 트랜잭션 내에서 outbox_events 테이블에 해당 주문 정보에 대한 이벤트도 저장한다.OutboxDispatcher가 outbox_events

4일 전
·
0개의 댓글
·
post-thumbnail

주문 연동 플랫폼과 Outbox 패턴

고객으로부터 주문 요청이 발생하면 본 서비스의 DB에 주문 정보를 INSERT 할 것이다. 그리고 그 주문 정보에 해당하는 외부 파트너 API를 호출해야 하는데, 이 과정은 둘 다 성공하면 COMMIT, 둘 중 하나라도 실패하면 둘 다 ROLLBACK해야 원자성을 지킬

7일 전
·
0개의 댓글
·
post-thumbnail

주문 연동 플랫폼과 멱등성

생각해보면 현실에서 주문 연동을 할 때, 아래와 같은 문제가 자주 생길 수도 있다고 생각했다. 고객이 결제 버튼을 눌렀는데 네트워크가 끊김주문을 요청 받은 그 파트너 서버가 느리거나 불안정함지금 내가 만들 서버에 주문은 저장됐는데 파트너로 주문 정보 전송을 실패함실제

7일 전
·
0개의 댓글
·
post-thumbnail

DFS와 BFS

DFS(Depth First Search)는 특정 노드에서 시작해, 인접한 노드 중 방문하지 않은 노드를 따라 가능한 한 깊게 탐색하는 알고리즘이다. 더 이상 진행할 수 없는 지점에 도달하면 이전 지점으로 되돌아가며 다른 경로를 탐색한다. DFS는 방문한 노드를 다시

2026년 1월 26일
·
0개의 댓글
·
post-thumbnail

다익스트라 알고리즘

다익스트라 알고리즘은 방향성을 가지는 그래프에서 최단 거리를 구할 때 사용된다. 가중치가 있는 그래프의 최단 경로를 구하는 문제들은 대부분 다익스트라 알고리즘을 사용한다고 보면 된다. 다익스트라 알고리즘은 너비 우선 탐색(BFS)과 유사한 형태를 가진 알고리즘으로, 시

2026년 1월 26일
·
0개의 댓글
·
post-thumbnail

Connection Pool & DataSource

원래 DB와의 커넥션을 만들 때는 DB 드라이버가 TCP/IP 연결을 만들고, DB 인증 및 권한을 확인해야 했다. 또 세션을 생성하고, 커넥션 객체를 다시 애플리케이션 로직에 반환하는 등 매우 복잡하고 번거로운 과정을 거쳐야 했다.그래서 미리 커넥션을 여러 개 만들어

2026년 1월 5일
·
0개의 댓글
·
post-thumbnail

JDBC란?

보통 애플리케이션을 개발할 때 데이터를 데이터베이스에 저장한다. 클라이언트가 데이터베이스에 데이터를 저장하거나 꺼내 오기 위해서는 아래와 같은 과정을 거친다.여기서 애플리케이션 서버와 데이터베이스 사이의 상호작용에 대해 집중할 필요가 있다. 먼저 애플리케이션은 TCP/

2025년 12월 31일
·
0개의 댓글
·
post-thumbnail

객체지향 기본 원칙

객체지향 설계의 기반을 이루는 2가지 원칙에 대해 알아보자. 그 전에 먼저 설계(Design) 란 정확히 무엇이고, 설계의 목적이 무엇인지에 대해 짚고 넘어가야 한다.설계는 코드를 배치하는 방식이다. 영화 예매 시스템을 구현했을 때, 처음에는 데이터를 구현한 코드와 프

2025년 11월 27일
·
0개의 댓글
·
post-thumbnail

절차적인 설계 개선하기

일반적으로 프로그램은 데이터와 이 데이터를 사용하는 알고리즘 또는 프로세스의 조합으로 정의한다. 절차적인 방식은 프로그램을 구성하는 데이터와 프로세스를 개별적인 모듈로 분류해서 구현하는 방식을 말하는데, 보통 데이터를 먼저 정의하고 데이터를 사용하는 프로세스를 나중에

2025년 11월 26일
·
0개의 댓글
·
post-thumbnail

영화 예매 도메인

도메인이란, 사용자가 프로그램을 사용하는 주제 영역, 또는 사용자가 프로그램을 사용해서 해결하고 싶은 문제들의 집합을 말한다. 좀 더 풀어서 설명하자면, 도메인을 소프트웨어로 구현해야 하는 요구 사항의 범위로 생각하면 된다. 소프트웨어를 구현할 때 모든 요구 사항을 코

2025년 11월 24일
·
0개의 댓글
·
post-thumbnail

우테코 8기 프리코스 오픈 미션 회고

예정했던 GetStudentActionTest, GetStudentsActionTest에 이어 GetSessionResultsActionTest까지 총 3개의 테스트 코드 리팩토링을 마무리했다. 처음에는 워낙 오픈 소스에 대한 이해도 낮고 참고 자료도 부족해 오픈 소스

2025년 11월 22일
·
0개의 댓글
·
post-thumbnail

(우테코 8기 프리코스 오픈 미션) 오픈 소스 컨트리뷰트 Part.5

오픈 미션 제출 기간이 1주 더 남았고, GetStudentActionTest와 GetStudentsActionTest 테스트 코드를 리팩토링 하다 보니 테스트 코드를 작성하는데 어느 정도 익숙해졌고, 좀 더 어려운 테스트 코드에 또 한 번의 도전을 해보고 싶은 마음이

2025년 11월 21일
·
0개의 댓글
·
post-thumbnail

(우테코 8기 프리코스 오픈 미션) 오픈 소스 컨트리뷰트 Part.4

GetStudentsActionTest.java 테스트의 경우, 리팩토링해야 할 테스트 메서드가 18개나 되었는데, 접근 주체가 교육자, 학생, 관리자, 미등록, 로그인되지 않은 사용자로 총 6가지 경로가 있었고, 어떤 파라미터를 가지고 학생 목록 및 팀원에 접근할 수

2025년 11월 17일
·
0개의 댓글
·
post-thumbnail

(우테코 8기 프리코스 오픈 미션) 오픈 소스 컨트리뷰트 Part.3

이제부터 내가 맡은 GetStudentActionTest.java와 GetStudentsActionTest.java 중에 GetStudentActionTest.java 코드를 먼저 살펴보도록 하자.코스에 소속되어 있는 학생의 정보에 대해 접근을 검증하는 테스트다. 아래

2025년 11월 13일
·
0개의 댓글
·
post-thumbnail

(우테코 8기 프리코스 오픈 미션) 오픈 소스 컨트리뷰트 Part.2

이번에 작업하게 될 TEAMMATES 오픈 소스는 테스트 프레임워크로 Mockito를 사용하고 있었다. 실제로 테스트 코드를 작성하기 전 Mockito를 이용한 테스트 방식이 어떤 식으로 흘러가는지, 어떻게 코드를 작성해야 하는지 먼저 알아보고 작성하기로 결심했다.Mo

2025년 11월 12일
·
0개의 댓글
·
post-thumbnail

(우테코 8기 프리코스 오픈 미션) 오픈 소스 컨트리뷰트 Part.1

🤔 3주간 무엇을 배웠나 우테코 프리코스를 진행하면서, 문제를 잘 푸는 방법이 아닌 함께 일하기 좋은 개발자가 되는 방법을 배웠다고 생각한다. 시작 전엔 난도가 높은 문제를 얼마나 빨리, 얼마나 정교하게 풀 수 있느냐에만 시선이 갔다. 그런데 실제로는 기능 구현 그

2025년 11월 11일
·
0개의 댓글
·
post-thumbnail

우테코 8기 프리코스 3주차 회고

3주차는 간단한 로또 발매기 프로그램을 구현하는 과제가 주어졌다. 먼저 주어진 기능 요구 사항을 나름대로 요약해봤다.로또를 발행한다.구매 금액만큼의 로또를 구매한다. (로또의 단위는 1,000원)1 ~ 45 사이의 숫자들 중 중복되지 않는 숫자 6개를 생성한다.당첨 번

2025년 11월 3일
·
0개의 댓글
·
post-thumbnail

우테코 8기 프리코스 2주차 회고

2주차에는 자동차 경주 문제가 주어졌다. 이번에도 전체 프로그램 구조를 파악하고 주어진 기능 요구사항을 다시 정리하면서 과제를 시작했다.자동차 이름을 입력받는다.이름은 쉼표(,)로 구분하며, 이름의 길이는 5자 이하로 제한한다.몇번을 시도할건지 입력한다.자동차(들)는

2025년 10월 27일
·
0개의 댓글
·
post-thumbnail

람다 활용

먼저 숫자들이 들어 있는 리스트에서 짝수만 골라내는 행동과 홀수만 골라내는 행동을 구현해보자.람다를 사용하지 않았을 때의 구현 방식이다. 그냥 리스트를 순회해서 조건에 맞는 값을 넣고 결과를 반환하도록 한 것이다. 이제 filterEvenNumber()와 filterO

2025년 10월 21일
·
0개의 댓글
·