글또
-
육각형 개발자글또 2024. 4. 19. 00:04
육각형 개발자 - 예스24 육각형 개발자가 좋은 개발자다!스포츠계에서 각종 능력치가 고루 균등한 선수를 육각형 선수라고 부른다. 이 책의 제목이기도 한 육각형 개발자는 다양한 역량을 고루 갖춘 개발자라는 의미이 www.yes24.com 읽으며 든 생각을 나불나불.. 나는 신기술에 목매는 개발자가 아니다. 신입 때는 신기술 사용이 잘하는 개발자의 척도라고 생각했던 적도 있다. 물론 다양한 경험을 해야 개발능력이 향상된다는 것은 아직도 같은 생각이다. 다만 회사 일로 봤을 때는 신기술에 목을 매는 것은 독이 될 수 있다. 내가 도입하고 나갔을 때 유지보수가 되는가? 현재 쓰고 있는 도구에 깊이 있는 지식을 가추고 있는가? 다가올 문제해결에 필요한 개발 도구를 공부하는 게 더 이득이다. 메서드 이름은 적당한 ..
-
Spring Boot 3 마이그레이션글또 2024. 4. 14. 12:30
0. 들어가며안녕하세요. 이번에는 저희 서비스가 spring 버전을 올리면서 겪었던 문제들에 대해서 이야기해보려고 합니다. 글의 순서는 다음과 같습니다.버전 업데이트의 이유버전 업데이트대표적인 변경점마무리 1. 버전 업데이트의 이유 : Spring Security의 문제 Spring Security 어노테이션을 사용한 권한 검사가 의도한 대로 동작하지 않았습니다.컨트롤러에 적용한 전역 어노테이션과 메서드에 적용한 커스텀 권한 검사(custom attribute)가 함께 작동하지 않고, 대신 커스텀 권한 검사만 작동했습니다.두 어노테이션이 동일한 것이었다면 더 구체적인 범위의 어노테이션이 우선적으로 적용되어야 할 것이지만, 두 어노테이션이 서로 다르기 때문에 의아했습니다. 찾아보니 Spring Securi..
-
성능 개선: 단계별 접근과 최적화 전략글또 2024. 3. 1. 22:54
0. 들어가며안녕하세요.이번에는 회사에서 진행했던 성능 개선 사례를 공유하고자 합니다성능을 최적화하면서 고려했던 여러 가지 방법들과 최종적으로 선택한 방법에 대한 이야기입니다. 문제상황: 출고요청이란?개선사항성능개선마무리 1. 문제상황: 출고요청이란?출고요청은 재고 시스템에서 첫 단계이며, 주문된 상품의 재고를 차감하고 집품 가능 상태로 변경하는 프로세스입니다. 구체적인 프로세스는 다음과 같습니다.1. 주문의 주문상품 조회 2. 주문 상품의 재고 조회 3. 재고 차감 및 주문 상품 상태 변경 4. 주문 상품 상태 변경 5. 2~4 단계를 주문 상품 수만큼 반복 6. 1~5 단계를 주문 수만큼 반복 7. 재고 없는 상품은 구매 요청 성능 측정 결과 주문 단건 API 응답 속도는 70ms로 양호했..
-
유데미 개발자 영어글또 2024. 2. 3. 23:25
0. 들어가며 안녕하세요. 이번 글은 유데미에서 지원을 받아 강의 시청 후 작성하게 되었습니다. 제가 수강한 강의는 "개발자영어"이라는 강의입니다. 개발자에게 영어는 땔 수 없는 것입니다. 프로그래밍 자체가 영어권국가에서 시작이 되었고, 대부분의 자료들이 영어로 작성되어 있습니다. 더 깊이 있는 자료, 최신 자료를 원한다면 영어를 익혀야 접할 수 있습니다. 요즘 AI가 발전함에 따라 영어 배움의 필요성이 줄어든다고도 볼 수 있습니다. 그래도 직접 구사할 수 있는 것과 기술의 도움을 받는 것은 다르다고 생각합니다. 아는 것과 검색을 통해 아는 것은 다른 것처럼요. 해당 강의는 10시간 가량의 긴 강의로서 개발자들이 어떻게 영어를 학습하는데 좋을지를 설명하고 있습니다. 1. 강의 내용 강의에서는 단순히 영어..
-
spring cache 커스텀으로 성능개선하기글또 2024. 1. 21. 12:15
0. 들어가며 안녕하세요. 이번에는 spring cache를 커스텀하게 사용한 이야기를 해보려 합니다. 개발 중인 서비스에서 성능 개선 요청이 있어서 캐시를 사용하게 되었습니다. 이로 인해 성능이 25% 정도 개선되었는데요. 이번 글의 전반적인 내용은 캐시 커스텀 이유와 구현 방법입니다. 캐시를 선택하게 된 이야기 등은 성능개선 글에서 따로 다룰 예정입니다. JPA를 쓰지 않는 Mybatis환경입니다. 1. 문제 환경 성능 개선을 요청했던 기능은 많은 데이터를 한 번에 처리하는 대용량 작업이었습니다. 문제가 되는 상황을 살펴봅시다. 루프를 돌면서 주문과 상품을 조회해서 재고를 업데이트하는 형식입니다. 단건의 경우는 0.07초의 성능이 나오는 기능이었지만 주문이 10000건으로 늘어나게 되면 70초나 걸리..
-
테크니컬 라이팅 강의를 듣고나서글또 2024. 1. 6. 12:09
0. 들어가며 안녕하세요. 이번 글은 유데미에서 지원을 받아 강의 시청 후 작성하게 되었습니다. 제가 수강한 강의는 "테크니컬 라이팅"이라는 강의입니다. 사실 이 강의를 듣고 나서 작성한 글이 있는데요. 바로 "재고 정합성이 걱정되어서 써보는 글"입니다. 제가 참고했던 부분을 하나씩 보여드리고자 합니다. 1. 대명사는 되도록 쓰지 않는다. "명확하게 쓴다" 챕터 중 하나인 "대명사는 되도록 쓰지 않는다"부분입니다. 대명사를 쓰는 것은 일반 문학에서는 어색하지 않습니다. 하지만 기술 글에서는 특정 부분만 읽었을 때 바로 문맥을 파악할 수 있어야 합니다. 이전 글에서는 대명사를 쓰지 않으려고 노력했습니다. 코드의 중복을 줄이는 것처럼 대명사를 많이 썼었는데 강의를 듣고 수정했습니다. 대명사를 많이 사용하는 ..
-
Spring Async에서 SecurityContextHolder 접근하기글또 2023. 11. 4. 19:58
0. 들어가며.. 안녕하세요. 이번에는 좀 간단한 글을 써보려고 합니다. 요구사항은 kafka event header에 요청자의 이름을 넣어달라는 것이었습니다. 고민해 봤을 때 요청자의 이름은 spring security를 사용 중이니 securityContextHolder에서 가져올 생각이었습니다. 하지만 현재 kafka template을 비동기(@Async)로 사용 중이었기 때문에 threadLocal안에 있는 securityContextHolder는 가져올 수 없을 것이라고 생각했습니다. 그러다 DelegatingSecurityContextAsyncTaskExecutor라는 것을 알게 되었습니다. DelegatingSecurityContextAsyncTaskExecutor (spring-securi..
-
spring security white list 어노테이션 만들기글또 2023. 11. 1. 23:11
안녕하세요. 이번에는 spring security의 PreAuthorize를 커스텀한 이야기를 해보려 합니다. 목표는 인증인가 없이도 white list에 등록된 ip라면 자원에 접근이 가능하도록 하는 것입니다. 먼저 이게 필요했던 이유는 MSA 구조에서 타 서비스 간에 로그인 필요 없이 접근이 가능해야 하기 때문이었습니다. Auth Gateway를 썼다면 인증 절차는 앞에서 진행이 되었다고 판단을 하고 허용했겠지만(그림 1) 현재 구조는 각 서비스가 각자의 방식대로 인증을 구현하고 있었기에 white list를 구현해야 했습니다.(그림 2) 모든 서비스는 spring security를 통해 구현되어 있기 때문에 spring security를 커스텀해야 합니다. 이를 어떻게 구현할까요? 먼저 생각한 것은..