서론 2023년도 절반이 지난 시점에서 꽤 많은 활동을 해왔습니다. 2023년이 끝난 후 한 해를 회고하려다가 너무 방대한 양을 작성해야 할 것 같아 지금 시점에 절반정도 털어내려 합니다. 여러 에피소드가 있지만 하나하나 자세하게 쓰기보단 담백하게 작성하고, 더 상세한 내용 작성이 필요한 경우엔 추가 포스팅으로 풀어내겠습니다. 2023 상반기에는 아래와 같은 활동을 했습니다. 글또라는 커뮤니티에 들어가, 블로그 포스팅 9개 작성 완료 재그지그(정종윤)님과 이력서 피드백 스터디를 함께 진행 기술 컨퍼런스에서 대외활동과 관련된 주제로 발표 넥스터즈 기술 면접관으로 참여 현재 진행중인 스터디는 3개 회사에서 갑작스레 대 조직 개편이 발생 앞으로의 방향성에 대한 고민 7개의 에피소드를 차근차근 풀어가 보도록 하..
서론 회사에서 코드 리팩토링을 하는 업무를 하고 있었습니다. 레거시 코드 중 중첩 Map 형태로 반환하는 부분 때문에 프론트엔드에서는 불필요하게 반환된 객체의 key를 모두 읽고(Object.keys) 가장 최하단의 value에 직접 접근하는 로직을 항상 작성해야 했습니다. 그러다 보니 매번 프론트에서 작성되는 반복문 로직이 작성되어야만 했고 그 반복문 내에서 비즈니스 로직이라도 들어가게 되면 가독성을 매우 저하시키는 상황이 종종 생겼습니다. 그래서 이 중첩 Map 형태를 중첩이 없는 List형태로 반환하고자 코드를 수정하던 중, 누군가가 작성한 var 타입 추론을 만나게 됩니다. 간단히 눈으로 디버깅을 할 때 타입 추론은 IDE에 의존적임을 깨달았는데요, IDE가 없는 Github, GitLab 환경에..
서론 이전 포스팅과 이어 작성됩니다. 2023.05.21 - [Tech/Java&Spring] - 멀티스레드 분산 환경에서의 로깅(1) 멀티스레드 분산 환경에서의 로깅(1) 서론 담당하고 있는 프로젝트에서 사용자 수가 점점 늘어나고, Batch 작업 갯수가 늘어나기 시작했습니다. 드물게 에러가 발생하기도 하는데, 이 때 어떤 상황인지 파악하고 원인을 알아내기 위 imksh.com 지난 포스팅에서 결론은 하나의 요청에서 파생된 로그인지 확인하기 어렵다는 결론이었습니다. 그래서, 이번 포스팅에서는 이를 해결할 수 있는 MDC Filter를 적용해봅니다. MDC란 MDC: Mapped Diagnostic Context MDC는 slf4j 패키지에 속해있는 클래스입니다. 또한 ThreadLocal을 이용해 각 ..
서론 담당하고 있는 프로젝트에서 사용자 수가 점점 늘어나고, Batch 작업 갯수가 늘어나기 시작했습니다. 드물게 에러가 발생하기도 하는데, 이 때 어떤 상황인지 파악하고 원인을 알아내기 위해 로그를 추적하기 시작합니다. Kibana로 로그 모니터링을 하고 있으나 한 가지 문제점을 경험했습니다. 멀티 스레드 및 분산 환경의 모든 로그를 하나로 모아보니 굉장히 많은 로그가 적재되고, 내가 원하는 로그를 찾기가 정말 어려워졌습니다. 이 포스팅에서는 이러한 문제점에 대해 알아보고, 다음 포스팅을 통해 하나의 요청에서 파생된 로그들을 쉽게 구분할 수 있도록 하는 방법인 MDC Filter에 대해 알아볼 계획입니다. 상황 가정 테스트에 사용된 모든 코드는 Github Repository에서 확인할 수 있습니다. ..
넥스터즈 커뮤니티 소개 넥스터즈는 디자이너와 개발자가 모여있는 오프라인 IT 연합동아리 입니다. 넥스터즈 공식 홈페이지 다양한 도메인의 개발자와 디자이너들이 한 팀을 이루어 방학기간(2개월)에 사이드 프로젝트를 진행하고 프로덕션을 만듭니다. 대학생은 실력 좋은 실무진(개발자, 디자이너)과 함께 협업할 수 있는 기회를, 재직자들은 스펙업 및 포트폴리오, 여러 회사 실무진들과 컨택할 수 있는 기회 등을 얻을 수 있습니다. 활동 프로세스 정식 활동 전 사전 아이디어 수집을 하는 프로세스가 있습니다. 넥스터즈 자체 웹페이지를 통해 다양한 아이디어를 발제하고 투표를 진행해서 선발된 아이디어는 1주차 활동에서 발표를 할 수 있습니다. 이어서, 정식 활동은 총 8주차 세션으로 구성되어 있습니다. 활동과 관련한 내용은..
실습 환경 MySQL 5.7버전 사용 Windows 10 Entity ID 전략은 IDENTITY Java 11 서론 실무에서 MySQL 5.7 버전을 사용하고 있고, JPA Entity의 ID 전략은 IDENTITY를 사용하고 있는데, 이때 JPARepository를 이용한 saveAll과 save가 bulk insert로 처리되지 않는 것을 발견했습니다. 당장은 saveAll로 아주 많은 데이터를 저장할 일이 없다고 하더라도, 왜 이렇게 작동하는지 확인하고 추후에 동일한 환경에서 bulk 연산을 처리해야 할 때 유연하게 대처할 수 있어야 합니다. 따라서, 이번 기회에 상황과 원인을 파악하고 어떻게 대처할 수 있는지 알아보겠습니다. 결론만 보고 싶으시다면 하단의 “정리” 부분을 보시면 되겠습니다. 작동..
소개 try-with-resources 구문과 native 자원의 관계 이해 대상 독자: 초보 Java 개발자 자바 관련 스터디를 하고 있는데, 이번엔 try-with-resources와 관련된 주제로 얘길 나누었습니다. (이 주제는 이펙티브 자바, 자바의 신에서 꼭 등장하는 내용이기도 합니다) 정말 별 것 아닌 것 같지만, 해당 주제로 대화를 나누기 위해 정말 광범위하고 깊은 키워드들이 등장했었습니다. GC, JVM, JNI, native 영역, FileDescriptor 등등 기본적인 개념에 대해서는 알고 있었으나, 이들의 관계에 대해 간단하게 살펴보고 왜 try-with-resources를 쓰는지에 대해 좀 더 자세하게 알아보겠습니다. (FileDescriptor는 다른 포스팅에서 다룰 예정이라 이..
서론 뒤늦게 회고글을 작성한다. 2023년엔 좀 더 바쁘게 살기 위해, 그 바쁨 속에서 유의미한 결과물을 만들어 내기 위해, 마냥 바쁘기만 했던 2022년과 2023년 2월까지를 되돌아보겠다. 또한, 대부분 실무와 관련된 이야기겠지만 중간중간 실무 외 얘기도 섞어서 적어두었다. 소개 나를 소개하며 2022년의 주요 활동 소개 응애 개발자(걸음마 중) 게임회사에 입사하여 인턴 기간을 제외하고 어느덧 10개월이 되었다. 지원 당시 자기소개서를 보면 백엔드 개발자가 되고 싶어 대용량 트래픽이 어쩌고 구구절절 적혀 있는데 지금 보면 실무를 1도 모르고 하는 소리가 그저 귀엽다. 최종 합격 후 멘토님께서 “무슨 스택을 할 지도 모르는데 덜컥 붙었다고 가는 건 성급한 결정이다”라고 말씀하시면서 많은 우려를 하셨었는..
서론 글또는 “글 쓰는 또라이가 세상을 바꾼다”라는 뜻인데, 글을 쓰고자 하는 사람들이 모인 일종의 커뮤니티이다. 블로그 글로 공유하고 싶은 지식이나 경험이 점점 쌓여감에도 불구하고 포스팅 하나에 시간이 많이 들다 보니 시간 투자하기가 쉽지 않았던 것 같다. 어느덧 내 포스팅 풀에 20여 개의 글이 작성 중인 상태로 남아있고 포스팅을 하기 위해 어느 정도의 강제성이 필요하다고 생각할 찰나 글또라는 커뮤니티를 알게 되어 냅다 지원을 했다. 지원 과정 면접 전형이 따로 있지 않고, 서류 접수만 하게 된다. 합격률이나 경쟁률을 잘 몰라서 지원서 내 각종 항목에 엄청난 양으로 승부를 했는데 한 5천자는 쓴 것 같다.. 서류 중 다른 항목보다 자신이 가진 역량을 기준으로 스스로를 설명하는 항목이 있었는데 이 항목..
넥스터즈라는 IT 연합동아리 회장을 하고 있으며, 신규 회원 모집 서류 검토 단계에서 가졌던 생각을 담아 둔 글입니다. 그렇기에 내용이 다소 주관적일 수 있는 점 유의해 주시기 바랍니다. 부제: 수백명의 서류 검토를 해보았다 서론 정말 정말 정말 많은 분들이 신입 회원 서류를 접수해 주셨다. 사전 모집 알람 신청자가 2000명에 육박하니 어느 정도 지원 했을지는 여러분의 생각에 맡기겠다. 넥스터즈 회장을 인수인계 받을 때만 해도, 학부 학회장 경험이 있으니까 그래도 할만하지 않을까 생각했는데 학회장은 귀여운 수준이었다. 아무튼, 난 이미 회사를 다니고 있고 빨라야 저녁 7시 이후에 개인 시간을 낼 수 있는데, 엎친데 덮친 격으로 1인 프로젝트에 투입되어 부담감이 큰 상태였다. 서류 검토뿐만 아니라 넥스터..