전체 글 438

무료 SSL 인증서 발급받아 HTTPS 적용하기

Intro 보통 토이프로젝트를 개발 하면 사람마다 다르겠지만 보통은 아래와 같은 순서로 조금씩 발전하게 됩니다. 로컬에 프로젝트를 띄워봅니다. 가장 기본적인 첫 단계 입니다. 각자의 컴퓨터에서 친구들과 같이 개발하기 위해 외부 DB를 연동 합니다. AWS RDS가 가장 쉽지만 잘못하면 비용이 무지막지하게 청구 될 수 있으니 보통 안쓰는 컴퓨터를 서버로 사용하곤 합니다만 방화벽 및 포트포워딩과의 전쟁이 처음 펼쳐집니다. 2단계 치고는 꽤 매콤한 편 입니다. 개발한 프로젝트를 계속 띄워 놓고 싶습니다. 어디서든 접근할 수 있었으면 해서 띄워둡니다. DB서버 띄워놓는 것 처럼 안쓰는 윈도우 PC에 IDE나 외장 톰캣 혹은 스프링 부트를 jar 파일로 바로 띄워놓고 24시간 컴퓨터를 켜 둡니다. 2단계에서 방화..

Development/DevOps 2022.12.14

스프링 부트 프로젝트에서의 안정적인 대용량 파일 업로드

Intro 프로젝트에서 파일 업로드 부분에 대한 개선을 진행 했습니다. 기존의 파일 업로드를 처리하는 부분에 몇가지 문제가 있었는데, 특히 대용량 파일을 안정적으로 업로드 하기 위해서 해결해야 하는 포인트들이 여러가지가 있었고, 꽤나 난해했습니다. 사용자가 파일 업로드를 마쳤지만, 서버에서 일어나는 다양한 작업을 마칠때까지 오랜 시간동안 응답을 받지 못함 사용자 입장에서 업로드 100% 에서 오랜시간 화면이 멈추어 있어 UX가 좋지 않음 대용량의 파일을 업로드할 때 응답에 걸리는 시간이 너무 오래걸려 timeout 되는 문제 사용자는 파일을 성공적으로 업로드 했지만, 서버에서 해당 파일을 처리중 문제가 생겼을 때의 방안 대용량의 파일 업로드시 대량의 IO 작업으로 시스템 자원이 쏠리는 현상 간단히 추려보..

[Kotlin] 코틀린에서 JPA사용하기. LAZY 로딩이 의도대로 작동 하지 않는다면..

Intro 얼마전 코틀린으로 진행중인 토이프로젝트에서 응답속도가 생각만큼 나오지 않기에 쿼리 나가는걸 하나하나 확인 해 보았습니다. 그랬더니 분명 LAZY로 되어있는 여러가지 연관관계들이, 따로 사용하는 곳도 없는데 전부 다 하나씩 Eager Fetch 처럼 불러지는게 확인 되었습니다. 코틀린에서 JPA를 사용하다보면 자바와는 다른 코틀린의 설계로 인해 의도치 않은 문제가 많이 발생 할 수 있는데요. 어떤 문제가 있었는지, 그리고 LAZY 로딩이 의도대로 작동하게끔 하려면 어떻게 해야 하는지에 대해 알아보겠습니다. 필요시 모든 예제 코드는 https://github.com/Shane-Park/helloKotlin/tree/master/jpatest 에서 확인 하실 수 있습니다. 예제 코드 프로젝트 생성 ..

Programming/Kotlin 2022.12.05

(Linux 서버로 사용중인) 노트북 SSD/하드 추가 및 마운트

Intro 지난번에는 노트북에 램을 추가시켰습니다. 본격적으로 이것 저것 다양한 용도로 사용하려고 하는데 저장공간이 이미 거의 다 차버렸습니다. 하단의 비어있는 2.5인치 SATA 슬롯 다행히도 램을 추가하면서 확인해보니 여분의 2.5인치 sata 슬롯이 비어있는걸 확인 했었기에 저렴한 하드를 하나 구입하려고 알아보던 차에 쿠팡에서 512GB SSD가 하드보다도 싼 가격에 반짝 딜이 올라왔고, 바로 구입을 해서 설치 해 보았습니다. SSD 설치 SSD는 설치는 그냥 비어있는 슬롯에 꼽기만 하면 되기 때문에 정말 쉽습니다. 같은 공간에 2.5인치 하드디스크를 구입해서 설치 해도 됩니다. SSD는 그냥 꼽고 땡이지만 하드디스크는 물리적 충격에 민감하기 때문에 고정하는 작업이 보통 추가로 필요합니다. 파티션 ..

IT Computer/Linux 2022.12.01

(Linux 서버로 사용중인) 노트북 메모리 추가

Intro 집에서 2년째 가벼운 서버 용도로 사용하고 있는 노트북이 있습니다. 클라우드를 저렴하게 사용할 수 있다면 그게 최선이겠지만, 여러 가지 무료 클라우드를 비교 해 보았을 때, 오라클에서 제공하는게 가장 좋음에도 불구하고 최대 2개의 인스턴스 및 각각 1GB의 메모리를 사용 할 수 있다보니 도커 기반의 무엇인가를 올리기에는 엄두가 나지 않습니다. 그러다 보니 오라클 클라우드는 개인 ip 주소를 드러내지 않기 위한 간단한 프론트 서버의 용도 정도로만 사용 하고 있습니다. 제가 필요한 컨테이너 중에는 메모리를 크게 차지하는게 몇몇 있는데, 그 중에서도 엘라스틱 서치는 평소에도 제 PC 기준 5GB 정도의 많은 메모리를 잡아먹습니다. 램 용량과 클라우드 비용은 정비례를 할 만큼 램의 크기는 비용에 큰 ..

IT Computer/Linux 2022.11.27