22살 개발자 퇴사를 결정하다, 회사의 인수합병을 곁들인..
2024. 4. 14. 00:40
개발 공부 일기장/생각 정리
개요 두달만에 퇴사 소식과 함께 블로그에 복귀하게 되었다, 제목 그대로 퇴사를 결정했다. 어떤 생각에서 퇴사를 결정하게 되었는지, 이 회사를 다니면서 어떤것들을 이뤘는지, 앞으로는 어떻게 성장해 나갈것인지에 대해 정리해보려고 한다. 쉽지 않았던 결정이였던것만큼 이 선택을 절대 후회하지 않기 위해 퇴사 이후로도 더 열심히 살아야겠다고 생각이 드는 밤이다. Back to 고등학교 3학년 고등학교 3학년 당시에 마포의 SI 회사에서 분당의 보안 회사로 이직하게 되었다. 어린나이에 포트폴리오에 프로젝트들이 다양하고 무엇을 시켜도 다 잘할것 같다고 생각해서 나를 채용하기로 마음 먹었다고 하셨다. 그렇게 사실 아무것도 모르는 고등학생은 앞으로 3년 넘게 근무할 회사에서의 직장생활을 시작하게 된다. 지금 생각해보면 ..
[슬축생 프로젝트] 10. 회원가입 아이디 중복 확인시 동시성 문제 해결
2024. 2. 19. 22:22
개발 공부 일기장/사이드 프로젝트
개요 월요일 아침에 회사에 일찍 출근하여 마무리를 하고 글에 정리한다, 주말 내내 이 문제 하나 붙잡고 있느라 하루종일 공부만 했다. 이번 문제를 해결하면서 트랜젝션과 영속성 컨텍스트에 대해서 부족한 부분을 공부하게 되었고 아직 공부하지 못했던 트랜젝션 격리 수준, 낙관적락과 비관적락, 데드락 발생시 디버깅 방법등을 알게 되었다. 이 부분들은 다른 글에서 자세히 정리하도록 하겠다. 근본적인 원인 일단 한줄로 간단하게 원인을 말하자면 중복 값이 저장되면 안되는 컬럼에 유니크 제약조건을 걸어놓지 않았던 것이 문제였다. 어어 나가지말고 끝까지 들어보십쇼, '근본적인' 문제는 핵심은 정확히 같은 시간, 데이터로 요청할때 생기는 동시성 문제였다. 사실 특별하게 멀티 쓰레딩을 사용한적이 없다, 하물며 paralle..
Mysql 테이블 인덱스 설정 - 야호 나도 드디어 인덱싱 해봤다!!!!
2024. 2. 16. 14:47
개발 공부 일기장/DBMS Develop
개요 코드 잘 짜야하는 이유에 대한 글을 먼저 작성하고 있었는데 지금 너무 신나고 빨리 블로그에 공유하고 싶어서 점심시간에 글을 작성한다. 오늘은 금요일, 주간회의가 있는 날이여서 회의를 하던 중 로그인이나 vpn 접속 및 기타 조회등에서 너무 느려진다라는 이슈가 있었다. 듣자마자 내 머리속에서는 본능적으로 이건 회사에서 디비 튜닝을 할 수 있는 절호의 기회다 라고 생각하여 무조건 제가 보겠습니다 라고 말했다. 그리고 멋지게 10분도 안되어 해결하였다! 처음 해보는 디비 튜닝이여서 너무 신났고 내가 봐도 너무 쉽고 간단하지만 공유해본다. 슬로우 쿼리 로그 설정 아직까지는 느려지는 원인이 디비에 있다고 확신하기엔 근거들이 부족한 상태지만 합리적인 의심을 했다. 데이터가 백만건 넘게 쌓였을때 로그인, 조회 ..
ngrinder 테스트 실행 순서 지정하는법
2024. 2. 15. 22:05
개발 공부 일기장/Tips
개요 퇴근하고 어김없이 사이드프로젝트를 하던 나.. ngrinder로 백엔드 성능 측정을 하던 날이였다. 유저권한 api의 통합 성능 테스트를 진행하기 위해 열심히 테스트 시나리오를 작성중 중간 점검으로 validation을 한번 했다. 하지만 테스트가 작성 순서에 상관없이 지 맘대로 실행되는것 아니겠는가? 나도 내가 원하는 시나리오가 있는데 이대로 측정할 순 없었다, 그래서 2시간을 삽질했고 생각보다 방법은 간단했다. 하지만 도큐먼트나 구글에서는 찾아볼 수 없었다, 내가 못 찾은건지.. 공식문서에 있다면 댓글에 꼭 말씀 부탁드립다 ㅠㅠ ngrinder 테스트 메서드 실행 순서 지정하는법 간단하다, 비밀은 테스트 메서드 이름에 숨겨져 있었다, 그렇다 테스트 메서드명의 사전순대로 실행되는것이였다.. (이게..
[슬축생 프로젝트] 9. 프로메테우스 & 그라파나 모니터링 도입기
2024. 2. 9. 17:27
개발 공부 일기장/사이드 프로젝트
시작하며 이번에 vultr로 이사를 가게 되면서 서버 성능을 최소로 줄였다. 그리고 그에 따라서 발생하는 문제들을 모니터링 하기 위해서 모니터링 툴을 찾던 중 프로메테우스와 그라파나를 많이 사용하는것을 보고 한번 도입해봤다. 서버 구성 이렇게 서버 구성이 바뀌게 되었다. 전체 구성도의 일부를 가져온것이라 설명이 안 보이는데 빨간줄은 공인망, 초록망은 내부망(VPC), 파란선은 로컬 통신을 뜻한다. seulchuksaengmonitor.store라는 도메인을 추가로 구입하여 그라파나 서버에 적용하였다. 지금은 백엔드와 디비서버 이렇게 두가지 서버를 모니터링하고 있다. 프론트는 제니퍼프론트라는 툴로 모니러팅하고 있는데 이는 따로 다루겠다. 구성은 간단하게 3가지로 나눌 수 있는데 데이터를 프로메테우스로 보내..
테스트 코드를 짜야하는 이유
2024. 1. 27. 19:22
개발 공부 일기장/Tips
지금은 행복한 주말인 토요일 오후다, 아침 9시부터 모니터에 앉아 미뤄둔 테스트 코드 작성을 시작하고 서비스, 리포지토리단의 테스트를 짜던 도중 어려움이 생겨 6시간째 의자에서 일어나지 못하고 있다. 어떤 어려움이라면 그냥 모르겠는것이다. 모델단의 테스트 코드는 굳이 스프링의 도움을 받지 않고 JUnit만으로 짤 수 있었기 때문에 매우 쉬웠다. 하지만 서비스나 리포지토리는 인메모리 테스트용 DB나 mock 객체들을 만들어야하는 등 내가 모르는것이 많았다. 우리 회사에서는 테스트 코드를 짜지 않기 때문에 어디서 경험할 일도 없었다. 그래서 열심히 찾아봤다, 많은 방법들이 있지만 나는 항상 실무에서 사용되는 Best Practice인 방법을 배우고 싶어하기 때문에 고민이 많았다. 결국엔 이것저것 시도해보다가..
[슬축생 프로젝트] 8. Vultr로 이사가기 & 도커로 배포 자동화 하기!
2024. 1. 21. 20:30
개발 공부 일기장/사이드 프로젝트
시작하며 우리 개발팀에서 큰 프로젝트를 시작하기 위해 슬축생 프로젝트는 이제 마무리 하고 쭉 유지보수 정도만 하는것으로 결정되었다. 그래서 마지막으로 프론트에서 UI/UX 개편을 조금 한 뒤에 클라우드를 이사를 가서 안정화 시키고 쭉 사용하려고 한다. 클라우드를 왜 이사하지? 일단 앞에 글에서도 다뤘겠지만 한번 aws로 이사하려다 월 100g 무료 트래픽에 멈칫해서 여전히 무료 오라클 클라우드 하나에 리얼서버와 테스트 서버 모두 넣어서 사용하고 있었다. 하지만 이제 프로젝트를 마무리하면서 모니터링 툴들을 사용하고 싶었는데 그럴려면 일단 지금 하나로 뭉쳐있는 서버를 찢어야 된다고 생각을 했다. 그리고 또한 지금 사용하는 서버가 4코어에 24기가 램인데 이 성능에서는 장애를 마주할 수 없을것 같아서 일부러 ..
[슬축생 프로젝트] 7. Spring Exception Handler로 우아하게 예외 처리하기
2023. 12. 28. 19:48
개발 공부 일기장/사이드 프로젝트
시작하며 예외처리 부분들을 개선하게 되었다, 기존의 컨트롤러 코드에 덕지덕지 있던 예외처리들을 모두 지우고 Exception Handler를 사용했다. 사실 이미 예전에 이 부분에 대해서 우리 껌딱지 개발팀 기술블로그에 작성하긴 하였지만 내 개인 프로젝트 기록에도 중요한 부분 같아서 같은 내용이지만 여기에도 기록을 남겨 본다. 기존의 예외처리 방법 try { Example e = exampleService.example(); return result("success", "성공!"); } catch (내가 만든 예외1 | 내가 만든 예외2 e) return result("fail", e.getMessage); } 기존에는 위 코드 처럼 컨트롤러단에서 예외 처리를 하고 있었다. 서비스단에서 커스텀 되어 있는..