분류 전체보기

Backend/Spring

막내 개발자의 사내 분산 락 라이브러리 도입이야기 (1)

트렌비에서는 대부분의 서버가 분산된 EKS 환경에서 운영되고 있습니다. 하지만, 새로운 프로젝트를 만들 때에 분산 환경을 위한 분산 락 설정을 매 번 추가해주어야 하는 번거로움과 레거시 시스템에서는 분산 환경을 충분히 고려하지 못한 경우가 있어 동시성 문제가 발생하는 경우가 종종 있었습니다. 이를 해결하기 위해, 사내 공통 분산 락 라이브러리를 개발하자는 아이디어를 팀장님에게 제안하였고 자유롭게 만들어 볼 수 있는 기회를 주어서 제작해보게 되었습니다. 분산 락Java와 Kotlin에서는 Monitor 인터페이스로 ReentrantLock, synchronized 키워드 등을 통해 락을 관리할 수 있습니다. 하지만 이러한 방식은 인메모리에서만 작동하여 분산 환경에서는 적용하기 어렵습니다. 예를 들어, 클라..

회고

개발을 위한 학습의 태도 (그런데.. 흑백 요리사를 곁들인)

최근 가장 핫한 TV 프로그램이라고 하면 단연코 '흑백 요리사' 를 꼽을 수 있다.많은 사람들이 재미있게 본 이 프로그램을 보면서 개인적으로는 다른 생각도 하게 되었다. "흑백 요리사에 참석한 모든 쉐프들은 다들 많은 노력을 하고 난 이후에 위 자리에 올라왔다. 여기서 배울 수 있는 점은 무엇일까?"그리고, "각각의 미션들을 보면서 어떤 노력, 얼마만큼의 생각을 평소에 했기에 저만한 결과를 낼 수 있었을까?" 라는 생각이 들었다.오늘은 개발과 흑백 요리사에 대한 내용을 살짝 곁들여서 이야기를 진행하고자 한다.음식에 100점은 없다고 생각합니다.안성재 쉐프는 요리사들의 요리를 평가하면서 "자신은 100점짜리 요리는 존재 할 수 없다" 고 말했다. "모든 음식은 더 나아질 수 있는 가능성이 있기 때문" 이..

회고

취업, 그리고 앞으로의 여정.

서문 2024년 1월 18일. 나에게 부족한 점, 그리고 나에게 주어진 피드백을 정리하며 마음을 다 잡았다. 노력의 결과였을까. 서류, 코딩 테스트, 1차 면접, 2차 면접을 통과하여 꼭 가고 싶었던 회사인 트렌비에 합격을 하게 되었다. 취업이라는 목표를 이루었고, 나는 이제 개발자라는 출발선에 다시 서게 되었다. 출발선에서 앞으로 내가 이뤄나가야 할 상반기 목표들을 정리해보고자 한다. 개발 아직 팀이 정해지지 않았고, 어떤 도메인을 도맡아서 개발을 할지에 대해서도 미지수이다. 하지만, 면접을 보면서 회사에서 현재 내 기술 스택과 비교하여 부족한 부분들이 무엇인지 들을 수 있었다. 상반기에는 회사의 문화에 적응하며 기술을 다룰 수 있도록 정진하여 사고치지 않고 1인분을 할 수 있게 됨에 집중해보도록 하자..

회고

나는 어디로 나아가고 있는가.

최근 4번의 최종 면접 탈락을 겪으면서 자존감이 많이 떨어져있다. 이렇게 죽어있는 상태로 나아가다간 나의 성장은 멈출 것 같다는 느낌이 들었다. 지금 이 글을 작성하고 있는 현재 나는 무엇을 하고 있는지 그리고 이를 토대로 무엇을 개선하면 좋을지에 대해 되돌아보자. 현재의 활동 현재 나의 패턴을 정리해보자. 오전 오전 7시에 일어난다. 데브코스 팀원들과 미라클모닝을 실천한지 어느덧 1달차가 되어간다. 미라클 모닝은 더욱 일찍 일어나야 하지만, 우선 7시에라도 일어나서 활동하자는게 취지이다. 벌써 1달이 거의 다 되어가지만, 아직도 일어나는 일은 쉽지가 않다. 몸을 뒤척이다 핸드폰으로 유튜브를 잠깐 볼까 하지만 머릿속으로 아침에 일어나자마자 보는 유튜브는 이후의 두뇌의 활동을 무너뜨린다는 얘기를 들은 적이..

회고

2023년 연간 회고

칼바람이 불던 2023년이 지나고 어느덧 2024년이 되었다. 달마다 연마다 나의 한해는 어땠는지 되돌아보는 회고 시간이 가장 중요하기 때문에 작성을 해나가며 회고를 진행해보고자 한다. 2022.12 ~ 2023.02 2022년도 10월부터 진행했던 캡스톤 프로젝트를 혼자서 가져가게 되면서 여러모로 부족한 부분이 많이 보였던 프로젝트였다. 당시에 js, http 자체를 이해하기 버거워해서 프론트를 다루는게 너무 어려워했었다. (지금와서 생각해보면 부딪혀가면서 했으면 어땠을까 싶기도 하다) 12월에 팀을 다시 새로 만들고 코드 자체도 리팩토링을 하면서 프로젝트를 다시 진행을 했었다. 당시에 테스트 코드를 작성하면서 테스트 코드를 작성하는 시간이 너무 많이 소요된다는 이유로 테스트 코드 작성을 소홀히 했었다..

개발 고민

N + 1 문제의 쿼리 개선의 주의사항

N + 1 문제를 해결하는 과정에서 발생하는 성능 차이 개요 프로젝트 도중 N + 1 문제를 해결하는 과정에서 예상하지 못한 성능 문제가 발생하였습니다. N + 1 문제를 해결하고 성능을 개선하면서 1 + 1 쿼리로 바꿨음에도 불구하고 성능이 떨어지는 이슈가 발생한 사례를 소개하도록 하겠습니다. N + 1 문제란 N + 1 문제를 해결하는 과정을 살펴보기 전에 N + 1 문제가 무엇인지 먼저 간단하게 알아보도록 하겠습니다. N + 1 문제는 연관관계가 설정된 엔티티 사이에서 한 엔티티를 조회하였을 때, 조회된 엔티티의 개수(N) 만큼 연관된 엔티티를 조회하기 위해 추가적인 쿼리가 발생하는 문제입니다. N + 1 문제의 해결 방법 N + 1 문제를 해결하기 위한 방법으로는 상황에 따라 FetchJoin, ..

Backend/Redis

Redis 테스트 이후 데이터가 남아있는 이슈

Redis Template 사용 시 주의사항 최근 Redis 학습 테스트를 진행하면서 발생했던 이슈를 하나 공유하고자 합니다. Redis의 자료구조 중 set 자료구조를 테스트하고자 하였습니다. 해당 테스트 코드는 다음과 같습니다. @DisplayName("restTemplate key-value(Set) 형식으로 저장한다.") @Test void saveSetForOps() { // given SetOperations stringObjectSetOperations = redisTemplate.opsForSet(); String KEY = "setKey"; LocalDateTime serverTime = LocalDateTime.now(); Fruits apple = Fruits.createFruit("..

Backend

EC2 재부팅 시 Docker, Nginx 자동 실행

들어가기전, EC2 서버 환경은 Amazon-Linux-2023 입니다. 프로그래머스 데브코스 기간 중 서버가 매일 오전 10시에 켜지고 새벽 2시에 꺼지도록 자동으로 설정이 되어있었습니다. 인프라를 담당하고 있던 제가 만약 누군가가 서버를 사용해야 한다면 새벽 2시까지 기다렸다가 서버를 켜주어야 하는 불편함이 있었습니다. 개발을 할 때부터 EC2 서버가 켜지면 필요한 Docker-Container 들이 실행되었으면 하는 생각이 있었습니다. 프로젝트 종료 이후 해당 방법을 해결하기 위한 방법을 찾아봤고, 비교적 간단한 방법으로 설정 할 수 있었습니다. 1. systemctl 을 등록 할 수 있도록 service 들이 모여있는 directory 로 이동 cd /etc/systemd/system 실제로 많은..

Bombo_
'분류 전체보기' 카테고리의 글 목록