);">
인기 글
-
[Spring DataSource] Connection Pool, DataSource 란?
웹 애플리케이션을 개발한다고 할 때 데이터베이스는 거의 필수적이다. 데이터베이스에 데이터를 넣고, 특정 데이터를 읽어오기 위해서는 먼저 데이터베이스에 연결되어있어야 한다. SpringBoot로 프로젝트를 구성한다면 그냥 application.yml에 메타정보를 등록하면 알아서 해주니까 데이터베이스에 어떤 과정을 거쳐서 연결되는지 알 수가 없다. spring: datasource: hikari: driver-class-name: org.postgresql.Driver jdbc-url: "jdbc:postgresql://127.0.0.1:5433/testdb" username: root password: root . 하지만 Spring의 properties 파일이나 yml 파일로 설정을 구성할 때도 위와 같..
2022.09.07
-
밑바닥부터 6개월만에 네카라쿠배가기 집필 후기
서론 취업 후엔 블로그를 거의 안썼는데, 정보글은 회사 위키에 쓰는 것도 있었고, 퇴근 해서는 크몽 전자책을 썼다. 한 개지만, 최근 입소문을 타기 시작한 건지 꽤나 많이 팔리고 있다. (현재 200권을 향해 달리고 있다!) 밑바닥부터 6개월만에 네카라쿠배 합격했던 방법 (책 제목: 6개월만에 네카라쿠배 합격하기) https://kmong.com/self-marketing/464273/7GY0g36Tsj 밑바닥부터 6개월만에 네카라쿠배 합격했던 방법 | 35000원부터 시작 가능한 총 평점 5점의 전자책 67개 총 작업 개수 완료한 총 평점 5점인 Taler의 전자책, 취업·이직 전자책 서비스를 12개의 리뷰와 함께 확인해 보세요. 전자책, 취업·이직 전자책 제공 등 35000원부터 시작 가능한 서비스 ..
2023.05.15
-
[Spring DB] Hikari DataSource로 이해하는 DataSource - 1. Connection Pool 생성하기
이전 포스팅: 2022.09.07 - [Spring/스프링 기본 원리] - [Spring DataSource] Connection Pool, DataSource 란? DataSource는 메타데이터를 통해서 Connection Pool을 생성하고, 해당 ConnectionPool과 상호작용해서 사용자에게 여러 인터페이스를 제공한다는 것은 알겠다. 하지만 어떻게 하는 지는 알 수 없다. 그렇게 크게 알 필요가 있을 것 같지는 않지만 그냥 궁금해서 한 번 파해쳐봤다. 지금부터는 그래서 DataSource가 어떻게, 어떤 과정을 거쳐서 제 역할들을 하고 있는지 HikariDataSource 코드를 사용해서 한 번 알아보자. Recall: DataSource 생성 위 코드는 DataSource Bean을 직접 ..
2022.09.07
-
네이버 2022 Track 인턴십 지원 후기
슬슬 막학기가 다가오는 요즘, 여기저기 메이저 it, 스타트업들의 인턴 공고에 이력서를 살포하고 코테도 무수히봤다. 하지만 그 중에 코테를 통과해서 면접까지 도달한 것은 네이버 뿐이었다... 코테 연습을 좀 해야지.. 나중에 알게 된 사실인데, 이번 인턴십은 특이하게 면접을 2회 봤었다. (기존은 1회) 지인은 그게 의아해 면접관님께 여쭤봤다고 하는데, 이번 인턴십은 최종 전환 면접을 먼저 봤다고... 즉, 만약 이번에 붙어서 인턴십을 진행했다면, 이후 거의 100% 전부 전환되어 입사한다는 것이다. 내년에도 그럴지는 모르겠지만.. 어쨌든 귀한 기회를 내어준 네이버의 인턴십 지원 후기를 작성해보고자 한다. 필자가 인턴십 준비 과정에서 가장 답답하게 느꼈던 것이 전형을 치룬 후 며칠 뒤에 결과가 나오고, ..
2022.09.04
-
[DB Migrator] SpringBoot 동적으로 JpaRepository 생성 및 등록하기
DB Migrator는 사용자의 편의를 최대한 봐주면서 Data Migration이 진행되는 것을 목표로 한다. 처음 인턴 했던 스타트업의 기술 블로그에도 작성했듯 목표로 했던 기능 중 첫 번째 편의성 기능은 Repository를 자동으로 생성하는 것이다. 그 이유는 생각보다 간단한데, 사용하는 Repository method가 기본적으로 findAll과 save 뿐이었다. 그래서 모든 Repository 코드가 아래와 같았다. 원래 업무로 맡았던 DB의 Entity만 해도 60개가량 됐는데, 해당 코드들에 대해서 모두 이런 텅 빈 Repository 코드를 일일이 써주는 것은 정말 비효율적이라고 생각했다. 심지어 만약 내가 findAll이나 save가 아닌 다른 method를 통해서 데이터 읽기 및 저..
2022.09.20
최신 글
-
밑바닥부터 6개월만에 네카라쿠배가기 집필 후기
서론 취업 후엔 블로그를 거의 안썼는데, 정보글은 회사 위키에 쓰는 것도 있었고, 퇴근 해서는 크몽 전자책을 썼다. 한 개지만, 최근 입소문을 타기 시작한 건지 꽤나 많이 팔리고 있다. (현재 200권을 향해 달리고 있다!) 밑바닥부터 6개월만에 네카라쿠배 합격했던 방법 (책 제목: 6개월만에 네카라쿠배 합격하기) https://kmong.com/self-marketing/464273/7GY0g36Tsj 밑바닥부터 6개월만에 네카라쿠배 합격했던 방법 | 35000원부터 시작 가능한 총 평점 5점의 전자책 67개 총 작업 개수 완료한 총 평점 5점인 Taler의 전자책, 취업·이직 전자책 서비스를 12개의 리뷰와 함께 확인해 보세요. 전자책, 취업·이직 전자책 제공 등 35000원부터 시작 가능한 서비스 ..
2023.05.15
-
Gradle 파헤치기 - 1. Gradle과 구성 요소
자바 프로젝트를 구성할 때 빌드를 gradle로 선택해 생성하면, build.gradle, gradlew, gradlew.bat 등 다양한 gradle 관련 파일들을 볼 수 있다. 그냥 이렇게 구성해라 하는 튜토리얼만 봤지 이게 뭔지 궁금해본 기억은 없다. 프로젝트를 진행할 때도 슬슬 고민을 해볼 때인 것 같다는 생각이 들었고, 이번 기회에 한 번 파헤쳐봤다. 1. Gradle이란? 우리가 생성하는 Java 코드들(.java 파일들)이 실행 가능한 소프트웨어로 변환되기 위해서는 빌드 과정을 거쳐야 한다. 빌드는 소스 코드를 컴파일 할 뿐만아니라 dependency를 추가해주고 실행가능한 bundle(묶음 파일)을 생성한다. 빌드 과정은 컴파일 → 링킹 → 패키징 → 테스트로 이루어진다. 이렇게 빌드를 끝..
2022.11.30
-
[Spring DB] HikariCP는 왜 다른 CP보다 훨씬 빠를까?
2022.09.06 - [Spring/DB Migrator] - [DB Migrator] Spring Boot에 2개 이상의 DataSource 붙이기 [DB Migrator] Spring Boot에 2개 이상의 DataSource 붙이기 2022.08.30 - [Spring] - [DB Migrator] Spring Boot와 함께하는 DB Migrator 프로젝트 - 1 [DB Migrator] Spring Boot와 함께하는 DB Migrator 프로젝트 - 1 이전에 인턴십을 진행했던 회사에서는 Spring에서 NestJS로의 리팩토링 taler.tistory.com 과거 포스팅인 위의 멀티 데이터소스 글을 다시 돌아보며 보강작업을 하던 중 그래서 왜 HikariCP가더 빠른지에 대해서 궁금해졌다..
2022.11.24
-
Java의 Error, Exception, 그리고 Checked와 Unchecked
자바는 오류가 발생하거나 발생할 여지가 있는 여러 상황에 대한 예외를 예비해두었다. IllegalArgumentException이나 NullPointerException 등이 이 예외의 예시이다. 또한, Try - catch를 통해 예외를 처리할 수 있음을 우리는 알고 있다. 필자는 보통 어떻게 코드를 구성해야 클린하게 예외를 처리할지에 집중했지, 예외 그 자체에 대해서는 간과하곤 했다. 하지만 여러 경험을 통해 다양한 Exception을 마주하게 됐고, 오류나 예외에 대해서도 공부할 필요성을 느꼈다. 그렇게 정리한 내용을 함께 봐보자. Error와 Exception의 차이 Error와 Exception은 비슷한 것 같지만 다르다. 혼용하기도 하고, 다른 줄 몰랐던 사람도 있을 것이다. 차이점은 문제의 ..
2022.11.22
-
대용량 트래픽 처리를 위한 쿠팡의 백엔드 전략 엿보기 - 2. Cache Layer (Look aside Cache)
2022.10.24 - [학습/대용량 트래픽을 처리의 노하우] - 대용량 트래픽 처리를 위한 쿠팡의 백엔드 전략 엿보기 - 1. About Core Serving Layer 대용량 트래픽 처리를 위한 쿠팡의 백엔드 전략 엿보기 - 1. About Core Serving Layer 쿠팡의 대규모 트래픽을 다루는 백엔드 전략 정리 첫 번째 챕터, 쿠팡의 현재 상황 및 대용량 트래픽을 처리하는 최전선인 Core Serving Platform의 역할에 대해 다룬다. 먼저 쿠팡이 직면한 트래픽이 taler.tistory.com 해당 글에 이은 두 번째 챕터, Cache Layer에 대해서 다룬다. 사실 지금에 와서 대부분의 고성능 Service Solution으로 Cache는 정해진 답에 가깝다. 따라서 이번 챕..
2022.11.12
-
왜 Generic에 Primitive Type은 사용하지 못할까?
자바에서 Generic을 사용하다보면 알겠지만, Generic에는 오직 객체만 사용할 수 있다. 다시 말해, int, long, boolean 등의 primitive type들은 generic에 사용할 수 없다. 그 이유가 무엇일까? Generic은 초기 자바에는 포함되지 않았고, Java5부터 추가됐다. 처음부터 존재했던 기능이 아니기 때문에, Generic이 없었을 때의 Java 버전과 호환성을 갖춰야 했다. 이로 인해 Generic의 구현은 Type 삭제를 통해 이루어졌다. 즉, 모든 generic 타입은 컴파일타임에 object로 변환되고, Generic을 포함하는 클래스는 올바른 타입을 갖는 객체로써 변환된다. 예를 들자면 public class Container { private T data;..
2022.10.25
-
대용량 트래픽 처리를 위한 쿠팡의 백엔드 전략 엿보기 - 1. About Core Serving Layer
쿠팡의 대규모 트래픽을 다루는 백엔드 전략 정리 첫 번째 챕터, 쿠팡의 현재 상황 및 대용량 트래픽을 처리하는 최전선인 Core Serving Platform의 역할에 대해 다룬다. 먼저 쿠팡이 직면한 트래픽이 어느 정도인지, 어떤 것들을 특히 신경써야 하는지 알아보자. 쿠팡의 상황 쿠팡의 백엔드 시스템이 다뤄야하는 상황은 크게 두 가지: 높은 성장세와 확장세, 다양하고 복잡한 E-commerce 데이터로 나눌 수 있다. 이 요인들은 쿠팡이 다른 플랫폼들과 다르게 특화되어 발달한 특징들이 존재하게 됐기 때문에, 각각이 무엇을 의미하는지 이해하는 것은 앞으로의 대처를 이해하는데 큰 도움이 된다. 1. 높은 성장세 및 확장세 쿠팡은 2020년 당시 2018년도와 비교했을 때 4배 이상 성장했다. 매 분기 꾸..
2022.10.24
-
대용량 트래픽 처리를 위한 쿠팡의 백엔드 전략 엿보기 - intro
대용량 트래픽이 존재하는 환경에서 치고박고 해야만 얻을 수 있는 깨달음이 있다. 그런데 그런 깨달음을 굳이 직접하지 않고도 어렴풋이나마 얻을 수 있는 창구가 있다. 바로 기술 블로그와 기술 유튜브이다. 쿠팡은 자신들에게 오는 트래픽이 얼마나 되며, 이를 어떤 방식으로 극복했는지 상세히 설명했다. 본 글은 쿠팡의 대규모 트래픽을 다루는 백엔드 전략이라는 영상과 공식 기술 블로그에 정리된 내용을 조금 더 상세히, 그리고 이해한 것을 정리하고자 시작했다. 목차 해당 시리즈의 목차는 다음과 같다. 1. 쿠팡의 현재 상황 및 Core Serving Platform의 역할 2. 캐시 레이어 (Cache Layer) 3. 인라인 캐시에서의 실시간 데이터 스크리밍 (Realtime data streaming inlin..
2022.10.22
-
Double-Checked Locking In Java
해당 글을 번역하면서 이해한 내용을 정리합니다: https://en.wikipedia.org/wiki/Double-checked_locking Double-checked locking - Wikipedia From Wikipedia, the free encyclopedia Jump to navigation Jump to search In software engineering, double-checked locking (also known as "double-checked locking optimization"[1]) is a software design pattern used to reduce the overhead of acquiring a lock by en.wikipedia.org Double-ch..
2022.10.22