[Vibe Coding] Knowledge Graph가 사이드 프로젝트 비용에 영향을 주는가?
·
CS 및 기본 개념
1. 테스트 개요1-1. 테스트 배경 개발 환경이 빠르게 변화하면서 바이브 코딩(Vibe Coding)​은 점점 개발자들에게 익숙한 개발 방식으로 자리 잡고 있다. 하지만 AI에게 코드를 맡기는 것만으로 항상 개발 효율이 높아지는 것은 아니다. 실제로 무작정 바이브 코딩을 하다 보면 구현 시간은 줄어들더라도, 생성된 코드의 구조를 이해하고 검토하는 데 더 많은 시간이 필요할 수 있다. 여기에 AI Agent 사용 비용까지 고려하면, 사이드 프로젝트에서 지속적으로 활용하기 위해서는 단순히 AI를 사용하는 것보다 어떤 방식으로 활용해야 효율적인지 고민할 필요가 있다고 생각했다. 이번 테스트의 목적은 특정 기술이 좋다는 이야기를 듣고 무작정 도입하는 것이 아니다. 어떤 기술이 실제로 어떤 효과를 만들어내는지,..
[ Spring Boot ] Spring MockMvc 테스트 유지보수 후기
·
Spring/기초 개념
1. 테스트 코드도 유지보수를 해야할까?1-1. 배경현재 진행하고 있는 프로젝트에서는 개발된 API에 대해서 Spring MockMvc를 활용한 컨트롤러 테스트를 작성하여 전체 기능을 검증하는 방식으로 테스트를 진행한다. 이러한 상황에서, 테스트 코드를 작성하는 것은 각 유즈 케이스에서 발생할 수 있는 문제를 사전에 확인하고, 개발된 기능이 의도에 맞게 작동하는지 확인하며, 기능에 대한 명세로서 동작할 수 있다. 기존에는 테스트 코드를 작성할 때, 유지보수나 추후 변경에 대한 고려는 크게 하지 않았다. 기능이 바뀌었을 때 테스트 코드가 변경되는 것은 당연한 것이라고 때문이다. 하지만 테스트 코드 작성의 편의성과 테스트 대상 외 변경사항으로 인한 영향을 최소화하기 위해 테스트 코드 리팩토링을 진행하게 되었..
[ SQL ] 인덱스와 동작 원리
·
CS 및 기본 개념
1. 인덱스 개념과 사용 이유1-1. 인덱스 기본 개념우리 옆에 있는 한 권의 책에 대해서 생각해보자.만약, 목차나 찾아보기가 없다면, 해당 책에서 특정 내용을 찾기 위해서 모든 페이지를 찾아봐야 한다. 인덱스는 책에서 찾아보기의 역할을 한다.인덱스에 대해 간단히 정의하자면, 데이터를 빠르게 찾기 위해 검색 경로를 미리 정리해둔 자료구조이다.인덱스는 필수는 아니지만, 인덱스가 없다면 데이터가 많을 수록 SELECT 쿼리의 수행 시간이 길어질 것이다. 1-2. 인덱스 장단점장점SELECT 쿼리의 속도가 매우 빨라짐결과적으로, 조회 쿼리가 많은 상황에서 컴퓨터 부담이 줄어들기에 시스템 성능이 개선됨단점인덱스는 자료구조이기에 데이터베이스 내부 추가 공간을 사용함 ( 약 10 ~ 20% )인덱스 생성 시 상당..
[ 백준 1753번 ] 최단경로 (Java, Dijkstra )와 객체 복사
·
알고리즘/그래프
1. 핵심 풀이 원리1-1. 문제 링크본 게시글은 백준 사이트의 문제에 관련된 내용이다.아래 사이트를 통해 문제를 직접 해결해볼 수 있다https://www.acmicpc.net/problem/1753 1-2. 왜 해당 알고리즘을 사용하는가원리시작점이 정해져 있고 가중치는 양수일 때, 각 노드들에 대한 최단경로를 구한다면 다익스트라를 쓰면 된다 시간복잡도우선순위 큐를 활용한 다익스트라는 O(NlogE)의 시간복잡도를 갖는다따라서 현재 시간 제한인 1초 이내에 해결 가능하다공간복잡도distance 배열 크기 : 20000 * INT그래프 배열 크기 : 300000 * INT따라서 메모리 제한 (256MB) 이내에 해결 가능하다 2. 문제 풀이2-1. Java의 객체 복사2-1-1. Java 객체 사용 시 ..
[ 백준 1202 ] 보석 도둑 + Comparator
·
알고리즘/그리디
1. 핵심 풀이 원리1-1. 문제 링크본 게시글은 백준 사이트의 문제에 관련된 내용이다.아래 사이트를 통해 문제를 직접 해결해볼 수 있다https://www.acmicpc.net/problem/1202 1-2. 왜 해당 알고리즘을 사용하는가원리해당 문제의 핵심은 최대 C의 무게를 담을 수 있는 배낭에 C보다 가벼운 가장 가치가 높은 보석을 찾는 것이다.어떤 배낭의 최대 무게 C에 대해서, C 이하의 무게를 갖는 모든 보석들 중 가치가 큰 보석을 고른다는 것과 같다구현 방법무게 순으로 오름차순 정렬된 배낭 배열과 보석 배열을 관리한다가치 순으로 내림차순 정렬하는 우선순위 큐 pq를 선언한다보석 배열과 배낭 배열의 원소인 J와 B에 대해서, B.무게 >= J.무게라면 B에 J를 담을 수 있으므로 pq에 추가..
[ 시스템 설계 ] 6. 유일 ID 생성기와 단축 URL 생성
·
시스템 설계
1. 사용하는 자료1-1. 자료 출처현재 정리한 내용은 [ 가상 면접 사례로 배우는 대규모 시스템 설계 기초 ] 의 7, 8장과 관련된 내용들이다.해당 도서 관련 정보는 아래 사이트에서 확인할 수 있다 《가상 면접 사례로 배우는 대규모 시스템 설계 기초》“널리 알려진 유튜브 시스템을 설계해 보세요.” 원서 표지 시스템 설계 면접에서 이런 막연하고 광범위한 질문을 받으면 눈앞이 캄캄해질 수 있습니다. 수백 명, 심하면 수천 명의 엔지니어가blog.insightbook.co.kr해당 내용을 기반으로 대규모 시스템을 설계하는 방법에 대해서 학습해볼 예정이다. 2. 유일 ID 생성기 설계하기2-1. 설계 목적 및 요구사항 설정2-1-1. 유일 ID 생성기의 필요성하나의 DB 서버나 캐시 저장소를 여러대의 서버에..
[ 백준 1697번 ] 숨바꼭질 + 전략 패턴 (Java, Iterative BFS )
·
알고리즘/그래프
1. 핵심 풀이 원리1-1. 문제 링크본 게시글은 백준 사이트의 숨바꼭질 문제에 관련된 내용이다.아래 사이트를 통해 문제를 직접 해결해볼 수 있다.https://www.acmicpc.net/problem/16971-2. 왜 해당 알고리즘을 사용하는가?원리해당 문제는 그래프 탐색 알고리즘 중 BFS로 해결할 수 있다.각 위치를 하나의 정점이라고 볼 때, 수빈이는 매 초마다 현재 위치 +1 / -1 / *2 중 하나의 정점으로 이동하는 개념이다.최소 시행 거리 탐색이므로, BFS를 사용하여 문제를 해결하는 것이 좋다시간복잡도방문처리를 할 때, 위치의 최솟값과 최댓값이 각각 0과 10만이므로, 약 10만회 탐색을 통해서 문제를 해결할 수 있다.시간 제한이 1초이고 연산 기댓값이 10만회이므로, 시간 내에 문제..
[ 시스템 설계 ] 5. 분산 환경에서 키-값 저장소 설계하기
·
시스템 설계
1. 사용하는 자료1-1. 자료 출처현재 정리한 내용은 [ 가상 면접 사례로 배우는 대규모 시스템 설계 기초 ] 의 5장과 관련된 내용들이다.해당 도서 관련 정보는 아래 사이트에서 확인할 수 있다 《가상 면접 사례로 배우는 대규모 시스템 설계 기초》“널리 알려진 유튜브 시스템을 설계해 보세요.” 원서 표지 시스템 설계 면접에서 이런 막연하고 광범위한 질문을 받으면 눈앞이 캄캄해질 수 있습니다. 수백 명, 심하면 수천 명의 엔지니어가blog.insightbook.co.kr해당 내용을 기반으로 대규모 시스템을 설계하는 방법에 대해서 학습해볼 예정이다. 2. 키-값 저장소 요구조건 분석2-1. 요구조건 분석우선 아래 요구조건을 가정하여 관련 내용을 학습할 예정이다.키-값 쌍은 10KB 이하높은 가용성을 통해 ..
[ 시스템 설계 ] 4. 안정 해시 설계와 샤드 데이터 재배치
·
시스템 설계
1. 사용하는 자료1-1. 자료 출처현재 정리한 내용은 [ 가상 면접 사례로 배우는 대규모 시스템 설계 기초 ] 의 5장과 관련된 내용들이다.해당 도서 관련 정보는 아래 사이트에서 확인할 수 있다 《가상 면접 사례로 배우는 대규모 시스템 설계 기초》“널리 알려진 유튜브 시스템을 설계해 보세요.” 원서 표지 시스템 설계 면접에서 이런 막연하고 광범위한 질문을 받으면 눈앞이 캄캄해질 수 있습니다. 수백 명, 심하면 수천 명의 엔지니어가blog.insightbook.co.kr해당 내용을 기반으로 대규모 시스템을 설계하는 방법에 대해서 학습해볼 예정이다. 2. 해시 키 재배치 문제2-1. 문제 상황N개의 캐시 서버를 운영한다면, 모듈러 연산 기반의 해시 함수를 사용하여 해시키를 서버에 균등 배치할 수 있다.ta..
[ 시스템 설계 ] 3. 처리율 제한 장치 설계하기
·
시스템 설계
1. 사용하는 자료1-1. 자료 출처현재 정리한 내용은 [ 가상 면접 사례로 배우는 대규모 시스템 설계 기초 ] 의 4장과 관련된 내용들이다.해당 도서 관련 정보는 아래 사이트에서 확인할 수 있다 《가상 면접 사례로 배우는 대규모 시스템 설계 기초》“널리 알려진 유튜브 시스템을 설계해 보세요.” 원서 표지 시스템 설계 면접에서 이런 막연하고 광범위한 질문을 받으면 눈앞이 캄캄해질 수 있습니다. 수백 명, 심하면 수천 명의 엔지니어가blog.insightbook.co.kr해당 내용을 기반으로 대규모 시스템을 설계하는 방법에 대해서 학습해볼 예정이다. 2. 처리율 제한 장치2-1. 처리율 제한 장치 개념처리율 제한 장치란, 특정 자원이나 API 등에 대한 단위 시간당 실제 처리 요청 수를 제한하는 장치이다...