기록하며 성장한다 - 개발, 회고

개발 회고록

more

[ 개발 회고록 ] 조회 성능을 높이기 위해선 어떻게 해야 할까

서론 필자가 만들던 Food-Delivery 프로젝트가 마무리되었고, 나의 코드를 돌아보다보니 문득 조회 성능에 대한 생각이 들었다. 한 번에 여러 스레드의 접근을 통한 조회 성능은 테스트 해보았지만, 데이터가 수백 수천만개가 있을 경우 조회성능이 어떨까를 고민하게 되었다. 특히, 필자는 Redis 로 캐싱을 하는 방식으로 조회 성능을 올리는 방법을 택하였는데, 페이징 처리를 해줘야하는 서비스라면 이걸 또 어떻게 하는 것이 좋을까를 고민하게 되었다. 이를 해결하기 위해서는 큰 수정이 필요하고, 이미 프로젝트가 마무리 되었기 때문에, 우선 개별적으로 조회 성능에 대하여 코드를 만들어봐야겠다는 생각이 들었다. ( 물론 추후 프로젝트 전체를 한 번 고쳐 볼 예정이다. ) 필자가 기존에 만들었던 프로젝트 : h..

개발 회고록 2024.01.31 0

[ 개발 회고록 ] Redis 와 @Cacheable 을 적용하여 응답속도 개선하기 ( + Redis keys 대신 scan 을 사용하는 이유 )

서론 현재 배달과 관련 된 토이프로젝트를 진행하고 있다. 토이 프로젝트 링크 { String awsImagePathURL = fileService.getFilePath(store.getImageFileName()); return StoreResponse.toStoreResponse(store, awsImagePathURL); }) .toList(); } 아래와 같이 Redis 에 캐싱된 내용이 저장된다. 4. [참고] key 값을 조회할 때 Keys 말고 Scan 을 사용하는 이유 필자는 로그아웃을 할 경우, 해당 memberId 로 만들어진 모든 캐싱 데이터를 삭제하는 로직을 만들었다. 이 때 Key 값들을 가져와야 되는데, 처음에는 아래와 같은 코드를 만들었다. public void evictCach..

개발 회고록 2024.01.24 0

[ 개발 회고록 ] 공통 인프라 로직인, 로그인 확인 기능을 AOP로 분리하기

아, 로그인 체크 로직이.. 너무 중복되서 들어가는데.. 유지보수도 힘들고, 가독성도 안좋네.. 방법이 없나...? 서론 현재 배달과 관련 된 토이프로젝트를 진행하고 있다. 토이 프로젝트 링크 checkMemberLevel(currentMember, MemberLevel.RIDER); } } private Member getCurrentMember() throws HttpClientErrorException { Member member = loginService.getCurrentMember(); if (member == null) { throw new HttpClientErrorException(HttpStatus.UNAUTHORIZED); } return member; } private void ch..

개발 회고록 2024.01.24 0

회고록

more

[ F-lab ] 멘토링 마지막 회고록 : 합격

험한 언덕을 오르기 위해 처음에는 천천히 걷는 것이 필요하다. - 셰익스피어 서론 오늘이 되기 까지 14번째 멘토링 ~ 18번째 멘토링이 있었다. 18번째 멘토링이 마지막 멘토링이었고, 그 동안 이력서 다듬기와 면접 준비 그리고 실질적인 면접 활동으로 인하여 회고록 포스팅을 하기가 어려웠다. 그래서 오늘은 14~18번째 멘토링에 대한 간략한 회고록과 함께, 첫 회사 퇴사 후 회사 합격까지의 회고록을 함께 작성해보고자 한다. 필자는 금융 & 빅데이터 관련 IT 회사에 취업을 성공하였고, 3월18일부터 출근 할 예정이다. 여태까지 공부한 것을 정리한 TIL 블로그 링크, 깃허브 링크 * 이력서 : https://daehong770.oopy.io/ * TIL 블로그 : https://jeondaehong.gi..

일반 회고록 2024.03.17 2

[ 기술 면접 회고록 ] 이력서를 넣고, 면접을 다니며 받은 질문

서론 글을 쓰는 시각 기준으로, 아직 필자는 취업 전이며, 계속해서 구직활동 중이다. ( 2024-03-04 ) 오늘 글을 쓰는 이유는 구직활동과 면접으로 인해 기술블로그에 글을 안올린지 한 달 정도 되어가기 때문도 있고, 여태까지 받은 면접 질문을 간단하게나마 정리하여, 이후에 다시 돌아보기 위함이다. 그러면서 아쉬웠던 점은 더 공부하여 남기기 위함도 있다. 참고로, 필자는 기술블로그와 공부TIL 블로그가 따로 있다. TIL 블로그에는 공부한 걸 지금도 꾸준히 계속 글로 남기고 있다. ( https://jeondaehong.github.io/TIL/ ) 오늘은 기술적인 질문을 위주로 글을 작성하였다. 그리고 면접 질문도 어떻게보면 대외비가 될 수 있기 때문에, 회사명은 적지 않았으며, 순서도 섞어서 포..

일반 회고록 2024.03.04 0

[ F-lab ] 멘토링 13주차 회고록 : 개발 속 철학 (2)

개발의 스타일을 다 다르고, 완벽한 코드라는 것은 없다. 좋은 코드에 가까워지기 위해 노력할 뿐이다. 서론 열 세번째 멘토링 시간이 되었다. 이번 주 역시 프로젝트 개발을 하느냐 시간을 다 보냈던 것 같다. 프로젝트가 곧 나의 실력을 보여주는 것이니 허술하게 만들 수는 없다. 멘토님의 피드백을 받아 수정 할 부분을 수정하고, 추가해야 할 로직은 더 추가하고 있다. 특히, 핵심 로직과 서버 구축에 대한 고민이 더 필요한 시기이다. >>> 해당 프로젝트 깃허브 12주차 이론 내용 정리 * 12주차에는 이론에 대한 문답이 없었다. 본론 오늘은 저번주에 이론 문답을 하지 않아 바로 이론 문답을 시작하였다. 먼저 객체지향의 특징과, SOLID 그리고 IoC, DI 에 대하여 질문 답변을 나눴다. 이 부분은 쉬울 ..

일반 회고록 2024.01.15 0

[ F-lab ] 멘토링 12주차 회고록 : 개발 속 철학

왜 이렇게 개발하였는지를 설명할 수 있어야한다. 즉, 자기만의 철학을 가지고 있어야 한다. 서론 열 두째 멘토링 시간이 되었다. 이번 주는 열심히 프로젝트 개발을 하느냐 시간을 다 보냈던 것 같다. 어느정도 큰 틀이 완료되었고, 멘토님의 피드백을 받아 수정 할 부분을 수정하고, 추가해야 할 로직은 더 추가할 예정이다. >>> 해당 프로젝트 깃허브 11주차 이론 내용 정리 * UML 과 관련하여 공부하여 TIL 블로그에 정리한 글을 포스팅 하였다. >>> 포스팅 클릭 * Stack 과 Stack Frame 에 관련하여 공부하여 TIL 블로그에 정리한 글을 포스팅 하였다. >>> 포스팅 클릭 * Process 와 Thread 에 대하여 좀 더 심화적으로 공부하여 TIL 블로그에 정리한 글을 포스팅 하였다. ..

일반 회고록 2024.01.10 1

[ F-lab ] 멘토링 11주차 회고록 : 객체지향과 스프링의 시작

1. 모든 것에 근거를 가져라. 2. 새로운 것을 배우는 것을 즐겨라. 3. 내가 개발한 프로그램을 사랑하라. 서론 열 한번째 멘토링 시간이 되었다. 2023년이 끝났고, 나는 내가 얼마나 열심히 공부하고 개발을 해왔는지 돌아보았다. F-lab 을 시작하기 전의 나와, 지금의 나를 비교해보면 개발자로써의 마인드부터 달라졌다고 생각한다. 모든 것에 근거를 가지게 되었고, 논리적으로 생각하는 능력이 생겼다. 그리고 스스로 개발한 코드도 보면 한층 부드러워졌고, 객체지향의 원칙을 잘 지키며 개발을 하게 되었다. 개발 현황은 아직 큰 틀을 개발하는 중이다. 이번 주까지는 큰 틀을 개발 할 것 같다. >>> 해당 프로젝트 깃허브 10주차 이론 내용 정리 * 쿠키와 세션 관련하여 공부하여 TIL 블로그에 정리한 글..

일반 회고록 2024.01.03 1

개발 이슈 해결

more

[ 개발 이슈 해결 ] @Transactional 어노테이션이 있는데, 정상적으로 롤백이 이루어지지 않았던 문제점 해결

1.1. 문제점 필자의 회사는 빅데이터 회사이고, 빅데이터 솔루션을 개발할 때에 Java 와 Spring 을 통해 개발을 진행한다. 이 때 Spring 을 사용 할 때 회사 자체내에서 유지보수를 용이하게 하기 위한 자체 프레임워크를 개발해 두었는데, 해당 프레임워크를 활용하여 개발하는 것이 방침이다. @Override @Transactional public Object mainService(String serviceId, String serviceDtlOpt, Map inputParamMap) throws CustomCommonException { switch (serviceDtlOpt) { case "A": return aMethod(serviceId, inputParamMap); case "B": r..

개발 이슈 해결 2024.04.16 0

[ 개발 이슈 해결 ] Redis 이상한 문자가 key로 저장되는 문제 해결

이슈 Redis에 Key를 저장 시 이상한 문자와 함께 16진수의 숫자가 저장되는 문제가 발생 해결 Config를 통해 해결 함. @Bean public RedisTemplate redisTemplate() { RedisTemplate redisTemplate = new RedisTemplate(); redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer()); redisTemplate.setHashKeySerializer(new StringRedisSerializer()); redisTemplate.setHashValueS..

개발 이슈 해결 2023.11.22 0

[ 개발 이슈 해결 ] 멀티스레드 테스트 중 오류 발생

이슈 멀티스레드 환경에서 게시판 조회수가 어떻게 올라가는지를 테스트 하였음. 그 때 Exception in thread "pool-1-thread-14" org.springframework.dao.InvalidDataAccessApiUsageException: Executing an update/delete query; nested exception is javax.persistence.TransactionRequiredException: Executing an update/delete query 오류 발생 해결 Service에 @Transactional 을 추가하지 않아서 발생한 오류 특히, native Query는 JPA와 다르게 자동으로 트랜잭션 처리가 안됨. 그래서 꼭 붙여줘야 함.

개발 이슈 해결 2023.11.21 0

[ 개발 이슈 해결 ] application.properties 작성하는 민감 정보가 github에 올라가지 않게 하는 방법

이슈 application.properties 에는 DB정보나 Redis 정보등이 들어간다. 해당 정보가 그대로 github에 올라가면 안되기 때문에, 이걸 관리해주는 방법이 필요하다. 해결 1. application-aws.properties 라는 properties를 만든다. 2. application-aws.properties 에 DB나 Redis 등의 민감 정보를 입력한다. 3. application.properties에는 spring.profiles.include = aws 만 작성한다. 4. .gitignore에 ### IntelliJ IDEA ### 아래에 applicatoin-aws.properties 을 작성한다.

개발 이슈 해결 2023.11.21 0

자유로운 이야기

인텔리제이(IntelliJ) 단축키 _ Window

필자는 원래 eclips를 활용하여 개발을 하였다. 하지만 IntelliJ를 접하고, 너무 마음에 들어 정기 결제까지 하며 정품을 사용하게 되었다. 다만 오랜 시간을 eclips를 사용하였기 때문에 단축키가 조금 익숙하지가 않다. 빠르고 효율적인 개발을 위해서는 IDE의 필수 단축키들을 잘 활용하는 것이 중요하다. 필자의 개발 속도를 위해 가져온 글이다. General : 일반적인 단축키 Alt + #[0-9] : 각 단축키에 해당하는 도구창 열기 Ctrl + S : 모두 저장 Ctrl + Shift + F12 : 편집기(Editor) 영역을 최대로 크기로 토글 Ctrl + Shift + I : 현재 프로필 기준으로 현재 파일 검사 Ctrl + Alt + S : 설정창(Settings) 열기 Ctrl +..

자유로운 이야기 2023.10.25 0
코딩테스트 연습문제 & 알고리즘 문제를 블로그에 올려도 될까? - 프로그래머스, 백준 문제 저작권 내용

필자도 과거 Velog부터 시작하여, 현재 운영하고 있는 Tistory까지 많은 알고리즘 문제풀이 게시글을 올렸었다. 그러나, 문뜩 저작권 관련 문제가 있지는 않을까 하는 마음에 프로그래머스와 백준 문제에 대한 저작권 정보를 찾아보게 되었고, 아니나다를까 역시 저작권이 있었다. 그럼 왜 이렇게 문제들이 정리 된 블로그들이 많은걸까. 그냥 단순히 프로그래머스나 백준이 태클을 걸지 않은 거 뿐이라고 생각한다. 몇 년째 꾸준히 올리는 사람들 대상으로도 제재를 가하지 않는 것을 보니, 크게 상관 없을 것 같긴 하지만... 필자는 추후 어찌될지 모르는 찝찝한 상황을 남겨두고 싶지않기에.. 깃허브에 옮겨두고, 블로그에 있는 글들은 모두 내렸다. 아래는 프로그래머스와 백준에 대한 저작권 관련 공지 내용을 담고 있다...

자유로운 이야기 2023.06.20 0