Tick Tick Boom

시간이 다 가기 전에

개발 19

커넥션 풀이란?

1. 개념과 역사1.1 커넥션 풀(Connection Pool)이란?커넥션 풀은 DB와의 연결(Connection)을 미리 만들어두고 재사용하는 기술입니다.java에서는 관계형 DB를 사용하기 위해 jdbc 즉, 다양한 종류의 관계형 데이터베이스에 접속하고 SQL 문을 처리하고자 할때 사용되는 표준 SQL 인터페이스 API 를 사용합니다.이 jdbc 는 아래와 같은 과정을 거쳐서 데이터베이스에 연결 및 조작 혹은 조회를 하는 과정을 거치게 됩니다.여기서 우리가 주목해야할 부분은 java.sql.Connection 부분입니다.데이터베이스에 연결하기 위해서 커넥션을 즉, java.sql.Connection 객체를 만드는 과정을 거쳐야 하는데, 이 부분에서 굉장히 비용이 크게 발생합니다.그래서, 일정 개수의 ..

springboot querydsl 적용하기

개요현재 진행중인 프로젝트에서 검색 기능을 구현하면서 QueryDsl 구현 하게 되었습니다.queryDSL의 spirng boot 프로젝트 적용 부터, 주요 클래스, 유스케이스, 검색 구현 방법등을 조사해보고자 합니다.본론1. QueryDSL이란?QueryDSL 이란 HQL쿼리를 타입 안전한 방식으로 유지해야한다는 필요성에서 탄생한 쿼리 빌더 프레임워크 입니다.도메인 모델이 변화함에 따라 타입 안전성은 소프트웨어 개발에 큰 이점을 제공합니다. 도메인 변경 사항은 쿼리에 직접 반영되며, 쿼리 생성 시 자동 완성 기능을 통해 쿼리 생성이 더욱 빠르고 안전해집니다.초기에는 Hibernate 만을 위한 프레임워크였으나, 이후에는 다른 jpa 구현체, jdo, jdbc, 등을 지원하고 있습니다. QueryDSL의..

그라파나 와 프로메테우스 그리고 스프링

1. Grafana 개요Grafana란 무엇인가?2014년에 만들어진 오픈소스 데이터 시각화 및 모니터링 도구 입니다.역사 및 배경https://grafana.com/blog/2024/02/12/the-story-of-grafana-documentary-from-one-developers-dream-to-20-million-users-worldwide/2014년 Torkel Ödegaard (토르켈 외데고르) 라는 사람이 만들었습니다.당시에 다양한 오픈소스 기반 데이터 수집 도구가 존재했지만, 수집한 정보를 효과적으로 시각화하고 분석할 수 있는 도구가 부족했습니다.더 정확히는 Graphite 라는 데이터 수집도구의 프론트엔드 인터페이스 를 개선하기 위해 처음 개발되었고(불편해서 개선하고자),Kibana에..

개발 2025.05.29

API의 역사와 발전

개요웹개발, 특히 서버 개발의 세계에서 가장 처음으로 마주하게 되는 것은 아마도 API 일것입니다.Application Programming Interface즉, 프로그램끼리의 상호작용을 위한 이 인터페이스는 현대의 모든 프로그램, 하드웨어 사이에서 데이터를 주고 받기위한 표준적인 방법론으로 받아들여지고 있는데요.언제부터, 어떻게 이 API라는 개념이 출발한 것일까요? 본 아티클은 아래 유튜브 영상을 토대로 정리하였습니다.https://www.youtube.com/watch?v=LzMp6uQbmns 폰노이만의 ‘서브루틴 라이브러리’ 개념 제창Planning and Coding of Problems for an Electronic Computing Instrument헤르멘 골드스타인과 폰노이만이 컴퓨터가 ..

개발 2025.05.08

Spring의 Dependency Injection(의존성 주입)과 방법론

Ioc? DI?Inversion Of Control('제어의 역전') 이란 어떤 프로그램에 대한 실행, 생성 등의 제어권을 외부로 넘기는 설계방식이다.프로그램 내부에서 제어권을 너무 많이 가지고 있을 경우, 프로그램에서 수정,변경 등이 일어나게 될 경우에 확인하고 수정해야할 영역이 넓어지기 때문에 제어를 외부에 위임하여 프로그램 자체의 변경이 많이 일어나지 않게 한다. Dependency Injection(의존성 주입)이란 IoC를 수행하는 여러 프레임워크의 방법론중에 하나로, 위에서 언급했던 제어권, 그중에서도 의존하는 객체의 생성, 초기화 등을 '외부'로 위임하는 방법이다. 즉, IoC는 프로그램에서의 어떠한 종류의 제어이든지 외부로 위임하는 설계방식 자체를 말하는 것이고,DI는 IoC를 실현하는 여..

eloquent 모델에 keyType 지정하지 않을 시, relation에 접근할 수 없는 이슈

최근에 아주 골때리는 이슈를 하나 경험했다. A 라는 모델을 리스트로 가져오는 로직이 존재했는데, 특정 관계(relation)을 eager loading 시켜주면 딱 한개의 데이터에서만 eager loading이 되지 않아, 관계가 null 값으로 잡히는 사례였다. 이게 왜 골때리는 문제였나면, 엘로퀀트 빌더의 with 연산을 통해서 relation을 load 할때 에러가 나므로 해당 관계가 존재하는지 확인하기 위해, 모델을 통해서 각자 id를 통해 접근하면 null 값이던 데이터가 생긴다는 것이었다. 원인을 파악하던 중, laravel 디버그 바의 쿼리 조사 파트에서, 해당 관계를 가져오는 sql에서 id 값이, 1,4,91219491429124, 이런식으로 int 타입으로 연산이 진행된다는 것을 확인..

개발/라라벨 2023.10.17

JAVA 오류 : Modifier static is only allowed in constant variable declarations

이제부터 본격적으로 PS 공부를 시작하려고, 같이 공부하던 스터디 깃 레포를 딱 클론 받고, 예전에 적었던 자바 코드를 딱 적은 순간..! package programmers.코딩_기초_트레이닝; public class flag에_따라_다른_값_반환하기 { class Solution { public static int solution(int a, int b, boolean flag) { return flag ? a + b : a - b; } } public static void main(String[] args) throws Exception { int answer = Solution.solution(-4,7,false); System.out.println(answer); } } 오류가 발생했다. 시작부..

window에 자바 11 설치기

김영한 님의 스프링 핵심 원리 기본편 강의를 듣고 있는데, 생각보다 굉장히 좋은 내용이다. 현업에서 일하면서, 객체지향적인 개발을 해야된다는 생각과 객체지향적으로 개발하는 게 어떤 것인지 잘 이해하지 못해 부딪히던 부분이 생뚱맞게도, 스프링 공부를 하면서 조금씩 해결이 되는 것 같다. 결국 스프링 또한, 자바라는 객체지향적 언어를 자바답게 사용할 수 있도록 만들어진 프레임워크이기 때문에, 후세대에 자바와 루비온레일즈등 여러 프레임워크를 벤치마킹한 라라벨과도 상통하는 부분이 있는 것 같다. 어쨌든, 오늘은 본격적으로 프로젝트를 들어가기 전에, 자바 11설치환경을 맞춰보는 시간을 가지도록 하겠다. 환경은 아래와 같다. OS: Microsoft Windows 버전 22H2 (OS 빌드 22621.2283) 현..

laravel Request life-cycle (생명주기) dd로 따라가보기 (2)

INTRO 라라벨 생명주기 따라가보기 두번째 포스트이다. 저번 포스트에서 bootstrap/app.php 를 실행하기 직전까지 확인해보았는데, 이번부터는 그 이후이다. FLOW A.4.a. bootstrap/app.php 해당 파일은 php 파일로, 특정 클래스에 대한 정의없이 $app 이라는 인스턴스를 생성한 후, 가공하여, return 하는 코드이다. 하나 하나 따라가 보자. A.4.a.1 인스턴스 $app 생성하기 - Application 인스턴스 생성하기 /* |-------------------------------------------------------------------------- | Create The Application |--------------------------------..

개발/라라벨 2023.09.11