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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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