전체 글

소프트웨어 개발자입니다. 더 많은 사람들이 양질의 지식을 습득하기 위한 생태계 구축에 기여하기 위한 공간입니다.
프레임워크/Spring

도커와 Testcontainer를 활용한 서버와 동일한 환경에서의 로컬 테스트 구현

✍️ 문제 상황 로컬 환경에서 통합 테스트할 때 매번 서버를 올리는 일이 매우 번거로웠습니다. 세션과 캐시를 위한 redis 서버를 테스트할 때 마다 매번 올리는건 개발 생산성을 낮춘다고 판단했습니다. 이러한 현상은 제 팀원에게도 나타날 것이기 때문에 지금 개선하지 않으면 팀원 수에 비례하여 개발 생산성이 낮아질 것으로 판단했습니다. 💡 통합 테스트 과정 redis 서버를 실행(수동) → 통합 테스트 실행(수동) → 테스트 완료 → redis 서버 clear(수동) ✍️ 접근 방법과 해결 과정 로컬 환경에서 서버 환경 구축을 자동화할 수 있는 툴이 있는지 조사했습니다. 여러 툴들이 있었지만, 현업에서는 도커를 사용하기 때문에 이를 선택했습니다. 또한 docker가 Ubuntu20.04에서 기본으로 설치돼..

프레임워크/Spring

@Transactional, @Cacheable 및 Redis 호환 문제 해결

✍️ 문제 상황 통합 테스트 구동 시 회원가입이 돼있지 않은 코드가 로그인에 성공하는 문제가 있었습니다. 로그인 하기 전에 유저 정보가 저장돼있는지 확인하는 절차까지 진행했지만 문제 상황은 여전했습니다. 이에 유저 로그인 로직에 문제가 있다고 파악하여 로그인 로직에 로그를 남겼고 @Transactional 상황에서 @Cacheable이 적용된 데이터가 rollback 되지 않는게 문제의 원인이라고 판단했습니다. @DisplayName("로그인, 실패 시나리오") @Test void login_failed() throws Exception { // given // 가입되지 않은 사용자 // userService.createUser(userDTO); // when // 유스케이스/로그인/Fail path R..

책 정리 & 리뷰

에자일이란 무엇일까? (3) 인지적 사고 분석, Reverse engineering

서두 오늘 빡독 시간엔 저번에 이어서 '함께 자라기 애자일로 가는 길'을 읽었습니다. 제가 지속적으로 키우려고 하는 능력과 관련된 얘기가 나와서 아주 재밌게 읽었네요. 실제로 오늘 책에서 읽은 얘기를 멘토링 시간에 활용도 해봤습니다. 무얼 읽었고, 저와 어떤 관련이 있었는지, 앞으로 어떻게 활용할지와 마지막으로 이전 글에서 언급한 타당성과의 연관 관계를 정리 해보겠습니다. 오늘 읽은 part 요약 전문가들의 전문성을 뽑아내고 적용하는 것이 자신의 전문성을 빨리 높일 수 있는 방법이다. 전문성을 효과적으로 뽑아내려면 추상적이고 원론적인 답변을 얻을 수 있는 질문이 아닌, 구체적인 사건에 대해 말하도록 유도 해야 한다. 전문가들이 보통 추상적이고 원론적인 답변을 하는 이유는 사고 과정을 무의식적으로 자동화 ..

책 정리 & 리뷰

에자일이란 무엇인가? (2) 소프트웨어 엔지니어, 직관적 전문성이란?

서두 오늘 빡독 시간엔 저번에 이어서 '함께 자라기 애자일로 가는 길/김창준 지음'을 읽었습니다. 평소에 가지고 있던 생각을 정리하고 확인하는 경험이 있었습니다. 어떤 내용을 읽고 제 평소 생각과 연결 시켰는지 짧은 글로 남깁니다. 오늘 읽은 part 요약 컴퓨터로 대체되기 어려운 일은 학습하기 힘든 환경 내 학습하기 힘든 주제와 관련됨. 예를 들면, - 목표가 모호하고 주관적일 수 있으며 동적임. - 매 순간 선택할 수 있는 행동/선택 종류가 불확실함. - 매 순간 내가 목표에 얼마나 근접했는지 평가하기 어려움. - 등등 이러한 영역은 소위 직관, 창의적 지능, 사회적 지능과 관련됨. 직관적 전문성을 가지려면 타당성과 피드백이 중요함. 타당성은 직관이 적용되는 영역에도 어느 정도 인과 관계와 규칙성이 ..

TIL/일기

진로는 어떻게 찾는가? 동기 부여는 어디서 받는가? feat. 제 경험:)

왜 글을 썻는가? - 최근에 저에게 진로는 어떻게 찾았는지 어디서 동기부여를 받았는지 물어보는 요청이 두번 존재했습니다. 개발자라 그런지 두번 이상 일어나는 일은 반복을 줄이려고 함수화(여기선 문서화)하게 되네요:) - 상담을 요청한 분들에게 작성했던 대화체를 그대로 사용했습니다. 읽으시는 분들이 가까운 지인이나 아는 분에게 상담을 받는 느낌을 받았으면 했습니다. 친근함과 익숙함은 좋은 설득의 도구가 될 수 있죠! 20대 초반에 무얼 하셨나요? 안녕하세요 후배님 현재 주어진 삶과 길에만 안주하지 않고 더 나은 길을 찾으려고 하는 모습 보기 좋네요 ㅎㅎ 저도 후배님과 같이 진로를 찾고 싶었어요. 그래서 2학년 때는 진짜 이것 저것 해보고 싶었던 것들을 했었답니다. 물론 해보고 싶은 것을 할 때 최선을 다하..

책 정리 & 리뷰

에자일이란 무엇일까? (1) 성장의 복리성을 제1원리 사고법과 연관지어 생각해보자

서두 오늘 빡독 시간엔 '함께 자라기 애자일로 가는 길'을 읽었습니다. 자기계발 서적은 잘 안읽는 편이지만 새로운 인사이트를 얻을 수 있을까 싶어 읽게 됐네요. 40페이지 정도 읽었지만, 이를 체화시킨 내용을 짧은 글로 남길까 합니다. 오늘 읽은 part 요약 -함께 자라기 애자일로 가는길 中- 자기계발은 복리로 돌아오며 이는 작업 ABC를 적용할 때 극대화된다. 아래 목록이 작업 ABC를 나타냅니다. 작업 A : 물품 생산 작업 B : 작업 A 개선 작업 C : 작업 B 개선 자신의 성장 방식 성찰 작업 ABC은 개인이 할 수 있는 모든 활동에 적용될 수 있습니다. 알고리즘 문제 풀이, 리팩토링, 아침 운동, 요리 등 다양하게 적용될 수 있죠. 이를 알고리즘 문제 풀이에 적용해보겠습니다. 작업 A : ..

Computer launguage/Java

제한된 메모리 크기 환경에서의 LinkedList와 HashMap 튜닝 방법

안녕하세요🙌! 개발자 갈레입니다! 이 글을 읽으면, 여러분들은 아래 질문들에 대해 스스로의 답변을 만드실 수 있을겁니다. Q. ArrayList는 사이즈가 꽉 차면 어떻게 확장하지? Q. ArrayList는 왜 50%씩 확장하지? Q. HashMap는 사이즈가 꽉 차면 어떻게 확장하지? Q. HashMap은 왜 2배씩 확장하지? 오늘은 알고리즘 문제를 풀며 겪었던 메모리 초과 문제 상황과 이를 해결하기 위해 LinkedList 구조를 살펴봤던 이야기를 해볼겁니다. LinkedList를 뜯어보니 HashMap 또한 궁금해지더군요! HashMap의 구조에 대해서도 알아보겠습니다. 글을 읽으시면서 핵심 부분(노란)과 꼬리질문(초록) 부분에 집중하며 읽어주세요! 개인적으로 키워드에서 꼬리질문을 하는게 개념을 깊..

TIL/개발 칼럼

사용자의 UX를 고려한 로그인(JWT, 세션, 쿠키) 보안 전략 수립 및 구현(2)

안녕하세요🙌! 개발자 갈레입니다! 이번 글에서는 사용자의 UX를 고려한 JWT 로그인 보안 전략 수립 및 구현에 대해 다뤄볼겁니다! 앞 글 사용자의 UX를 고려한 로그인(JWT, 세션, 쿠키) 보안 전략 수립 및 구현(1)에서 로그인에서 주로 사용되는 전략 두가지를 분석했고, 그 한계점까지 알아봤습니다. 앞 글을 못 보신 분들은 꼭 보고 오시길 바랍니다! 그래야 이 글을 제대로 이해할 수 있습니다. 아래는 앞 글의 목차입니다:) 목차 1. 문제 상황 분석 로그인 2. 선택 가능한 기술 분석 쿠키 세션 세션 로그인 보완 방식과 한계점 들어가며 컨텐츠만 보면 막 궁금증이 있는 분들이 있으실거에요! 보통 기술 구현에만 집중하다 보면 잊을 수 있는 중요한 질문들입니다:) Q. JWT 로그인에 사용자 UX를 고려..

김민석(갈레, 페퍼)
개발자-김민석