분류 전체보기 357

2025년 11월 2주차 회고

항상 무언가를 수행하기.체계적인 상태를 유지하기.큰그림 그리고 핵심 짚기.처음부터 끝까지 차근차근 전개하기.보상 체계를 깨끗히 유지하기.입장 중심이 아닌 이익 중심으로 사고하기. 윈-윈 전략 생각하기.다음에 무엇을 해야 할 지 상상하기.이번주에 한 것프로그래머스 AI추천 문제 풀기핀잇 백엔드 - 도메인 레이어 마무리핀잇 백엔드 - 애플리케이션 레이어이사카카오 면접 준비ACT카페 알바이번주에 하지 못한 것핀잇 백엔드 - 인터페이스 레이어DB Delete 작동 방식 깔끔하게 정리하기다음주에 할 수 있는 것핀잇 프론트 (미완)디자인 토큰 완성레이아웃/라우팅 스켈레톤컴포넌트 조립DB Delete 작동 방식 깔끔하게 정리하기다음주에 할 수 없는 것쿠팡핀잇 백엔드 - 인터페이스 레이어Double DQN 논문 리뷰면..

[Pinit] HTTP Patch의 구현 방식

Get과 Post는 구현 방식이 비교적 단순하지만, Patch의 경우 몇가지 고려해야 할 점이 있다.여기서 외부 라이브러리 사용은 자제하고 싶었다.외부 라이브러리의 변경으로 인한 버그와 같은 문제는 피하고 싶었다.그렇다면 이제 Patch를 구현하기 위해, Patch의 요구사항을 살펴보자.HTTP Patch 메소드데이터의 부분 업데이트를 요청한다.PUT과 달리 멱등성을 보장하지 않는다.캐시가 가능하지만, 본문까지 캐시 키로 봐야 해서 일반적으로 잘 쓰이지 않는다.Patch의 경우, 프론트와 백 중 한 곳에서 "어디에서 변경이 발생했는가"를 확인하는 작업이 필요하다.프론트가 편하게 만들 경우, 백엔드에서 뭐가 변경되었는지 명확히 알지 못하는 문제가 존재한다.그렇다고 각 수정 내용을 하나씩 Post 메소드로 ..

2025년 11월 1주차 회고

이번주, 지나치게 목표를 높게 잡았다.지킬 수 있을 만큼만 잡을 것항상 무언가를 수행하기.체계적인 상태를 유지하기.보상 체계를 깨끗히 유지하기.다음에 무엇을 해야 할 지 상상하기.이번주에 한 것프로그래머스 AI추천 문제 풀기핀잇 백엔드 - 도메인 레이어(80%)이번주에 하지 못한 것핀잇 프론트 (미완)디자인 토큰 완성레이아웃/라우팅 스켈레톤컴포넌트 조립다음주에 할 수 있는 것핀잇 백엔드 - 도메인 레이어 마무리핀잇 백엔드 - 애플리케이션 레이어핀잇 백엔드 - 인터페이스 레이어DB Delete 작동 방식 깔끔하게 정리하기다음주에 할 수 없는 것쿠팡Double DQN 논문 리뷰면접용 CS 재정리 → 주니어 백엔드 개발자가 반드시 알아야 할 실무 지식 정리코틀린 코루틴 학습 다음주에 해야하는 것프로그래머스 A..

아프니까 청춘이다

"아프니까 청춘이다" 책의 저자 김난도 씨는 사실 아직도 논란이 많이 되고 있고, "청년층의 적"처럼 여겨지기도 한다.하지만 개인적으로 이 말은 어느정도 맞다고 생각하는 부분이 있어, 조금은 꼰대같을 수 있겠지만 대나무숲처럼 끄적여본다."시스템"화가 잘 되어있는가나는 주변 사람들이 원치 않는 일을 겪었을 때, 대부분의 문제는 시스템 탓이라고 이야기한다.누군가를 위로하거나 응원해줄 때 자주 이야기해주는 말이지만, 사실 속으론 하지 못한 말이 있다.그 시스템을 바꿀 수 있는 것도 사람이다. 그 문제는 이미 "시스템화"되어 있어, 나 뿐만 아니라 그 다음사람도, 그 다다음 사람도 겪게 된다.그 시스템을 바꾸려면, 일시적인 손해(비용)이 발생하기 마련이다.그때, 나는 "이를 감당할 자신이 있는가?"를 물어봐야 ..

[PinIt] Dependency 도메인과 Schedule 도메인 간의 연관관계 풀기

문제가 되는 비즈니스 로직일정 간의 사이클 검사Dependency는 from/to 두 개의 schedule을 알고 있다.CycleChecker는 그 중 indegree가 0인 임의의 schedule을 잡고, 의존관계를 탐색하며 사이클이 존재하는지를 파악한다.일정 삭제일정 삭제 시, 해당 일정을 알고 있는 모든 의존관계를 제거한다.즉, Dependency 추가와 삭제 모두 관련된 모든 일정이 관리한다.이전 일정이 완료되었는지 확인일정은 이전 일정을 직접 알고있지 않다.Dependency라는 엔티티를 거쳐서 알고 있다.from.isCompleted()로 사전 완성 일정 체크 일정 간의 사이클 검사일정 간의 사이클 검사에는 Schedule 정보가 필요하지 않다.따라서, ownerId로 해당 사용자의 모든 연관..

2025년 10월 5주차 회고

항상 무언가를 수행하기.체계적인 상태를 유지하기.보상 체계를 깨끗히 유지하기.다음에 무엇을 해야 할 지 상상하기.이번주에 한 것ADsP쉽다과하게 준비한 감도 없잖아 있지만, 유의미한 학습이었다.쿠팡카페 알바카카오 2차 코테이번주에 하지 못한 것핀잇 프론트 (미완)디자인 토큰 완성레이아웃/라우팅 스켈레톤컴포넌트 조립다음주에 할 수 있는 것핀잇 프론트 (미완)디자인 토큰 완성레이아웃/라우팅 스켈레톤컴포넌트 조립시행착오다음주에 할 수 없는 것쿠팡Double DQN 논문 리뷰코틀린 코루틴 학습 다음주에 해야하는 것프로그래머스 AI추천 문제 풀기면접용 CS 재정리 → 주니어 백엔드 개발자가 반드시 알아야 할 실무 지식 정리

DB 설계와 쿼리 최적화

주의: 본 내용은 DB 내용에 대한 기초 지식이 어느정도 있음(DB 스캔의 작동 방식)을 가정하고 작성되었습니다.DB는 백엔드에서 가장 중요한 역할을 수행한다.DB 성능은 연동하는 모든 서버 성능에 영향을 주기 때문에, DB에 존재하는 기능을 전문가 수준으로 깊이 이해할 수 있다면 이상적이겠지만 조금만 신경 써도 DB 성능 문제를 충분히 줄이거나 없앨 수 있다.인덱스 설계예상하지 못한 테이블 풀 스캔은 DB 성능에 좋지 않은 영향을 끼친다.이를 피하기 위해서 보통 인덱스를 사용하는데, 이때 인덱스를 제대로 알고 써야 원하는 성능 효율을 얻을 수 있다.인덱스는 조회 패턴을 기준으로 설계해라.단일 인덱스 vs 복합 인덱스의 차이를 고려해라선택도(Selectivity)를 고려해라가능하다면, 커버링 인덱스를 활..

사내 정치는 제로섬이 아니라 윈윈이다.

필자는 사내 정치에 대한 개인적인 기준을 세워두지 못한 상태였다.이 상태에서 다양한 기업에서 면접을 진행하며, 해당 부분에 대한 면접 질문이 들어왔을 때, 깔끔하게 대답할 수 없었다. 그런데 주니어 백엔드 개발자가 반드시 알아야 할 실무 지식(최범균 著) 도서에 대해 내용을 학습하면서, 중요한 인사이트를 얻을 수 있었다. 주니어 백엔드 개발자가 반드시 알아야 할 실무 지식 | 최범균 | 한빛미디어 - 예스24실무에서 자주 겪는 다양한 문제를 효과적으로 해결하는 법서비스 환경에서는 커넥션을 닫지 않아 서버가 멈추고 외부 API의 지연이 전체 장애로 번지며 사소한 설정 실수가 사용자 전체에 영향www.yes24.com 새로 추가할 쿼리가 기존에 존재하는 인덱스를 사용하지 않을 때에는 요구사항을 일부 변경..

느려진 서비스, 어디부터 봐야 할까?

본 내용은 주니어 백엔드 개발자가 반드시 알아야 할 실무 지식 도서를 참고하여 작성되었습니다. 주니어 백엔드 개발자가 반드시 알아야 할 실무 지식 | 최범균 | 한빛미디어 - 예스24실무에서 자주 겪는 다양한 문제를 효과적으로 해결하는 법서비스 환경에서는 커넥션을 닫지 않아 서버가 멈추고 외부 API의 지연이 전체 장애로 번지며 사소한 설정 실수가 사용자 전체에 영향www.yes24.com 성능 문제는 주로 DB나 외부 API를 연동하는 과정에서 발생한다.외부 API 호출에 블로킹/타임아웃이 발생하는가?힙 크기와 GC 방식에 적절한 최적화가 필요한가?OOM이 발생했는가?응답해야 하는 데이터의 양이 많은가?DB 커넥션 풀이 고갈되었는가?문제 예시순간적으로 모든 사용자 요청에 대한 응답 시간이 심각하게 느..

사라지는 발판 - 2022 KAKAO BLIND RECRUITMENT

문제 링크 상태 전이 개념 + 백트래킹 알고리즘의 적용을 학습하기 좋았던 문제였기에 이렇게 포스트로 기록해둔다. 이 문제를 읽어보고 나면, 전형적인 게임 이론 문제로 보인다. 게임 이론 문제에는 크게 두가지 접근 방식이 있다.게임 로직으로 인해 게임 시작 시 바로 결정되는 승자와 패자를 파악하고, 승자와 패자가 각자의 전략에 맞춰 최적으로 행동하는 방법상태 기계를 설계해, 서로간에 최적의 행동을 직접 수행시켜보고, 행동했을 때 자신이 얻을 수 있는 결과 중 최적을 반환하는 방법 이 문제의 경우, 게임 시작 시 바로 결정되는 승자와 패자를 파악하기 어려웠다. 따라서 직접 시뮬레이션해보는 두 번째 접근 방식으로 자연스레 손이 가게 되는데,이러면 -> 내가 이기는 경우, 가장 빨리 끝나는 결과를 알아둔다..

PS 2025.10.24