분류 전체보기 41

2024 AWS SUMMIT 참여 후기

엄청 오랜만에 블로그에 다시 글을 쓴다. 근황 공유를 잠시 하자면 2024년 1월 1일자로 회사에 출근을 하기 시작했고, 바로 3월부터 프로젝트에 투입되어 일을 하고 있다. 우리 팀과 파트는 운영 조직이지만.. 나는 개발을 하고 있고, 8월 말에 서비스 오픈 예정이다! 회사에 적응하고 프로젝트 진행하느라 너무 바빠서 블로그에 글을 못 썼는데5월에 갔다온 AWS SUMMIT 참여 후기를 간단히 적고자 한다. 나는 이틀 다 갔다왔고, 이틀 다 갔다오기를 잘했다고 생각한다. 첫째 날에는 기업에서 AWS 서비스를 활용한 사례에 관련된 발표 위주로 진행되었고, 둘째 날에는 생성형 AI 기술에 관한 발표 위주로 진행되었다.발표 세션 뿐만 아니라 AWS 파트너 회사들의 부스도 많이 열리고 있어서 다양한 체험 또한 할..

행사 참여 2024.08.18

부트캠프 회고록

2023년 10월 20일을 끝으로 6월 26일부터 참여했던 부트캠프가 끝났습니다. 4개월 조금 안되게 참여하면서 많은 것을 배우고 성장했다고 생각합니다. 배운 점 & 성장한 점 - 기술적인 부분 1. 단순 CRUD 외에 Spring Cache, AOP, JWT 활용 등 한 단계 높은 기술들을 다루면서 프로젝트를 진행하며 백엔드 관점에서 한 단계 더 깊게 코드를 볼 수 있는 능력을 길렀습니다. 2. 마지막 프로젝트에서 Spring Batch를 사용해서 대용량 처리를 해보고, Pessimistic Lock(비관적 락)으로 동시성 문제를 처리해보면서 백엔드 개발자 채용공고에 적혀있는 '대용량 데이터 처리', '대용량 트래픽 처리'와 같은 문구에서 뜻하는 바가 무엇인지 알게 되었고, 조금씩 발을 들여놓게 되었습..

부트캠프 2023.10.24

세 번째 팀 프로젝트 회고 - 쿠폰, 회원 등급 담당

기간: 2023.08.28 ~ 09.22 개발환경: Java, Spring, AWS EC2/RDS/S3, Rabbit MQ 의류 쇼핑몰 백엔드 5명, 프론트엔드 5명이서 개발 나의 역할: 쿠폰, 회원 등급 담당 목표: 동시성 처리하기 - Lock 사용, synchronized 사용 등, Spring batch 사용해서 대용량 처리하기, JMeter로 성능 테스트하기 1. 동시성 문제 해결(쿠폰) synchronized 키워드 Java에서 제공하는 키워드 메소드 단위에 락이 걸리거나 서비스 인스턴스에 락이 걸리는 등 너무 큰 단위로 락이 걸려서 효과적이지 않았습니다. 성능 이슈 하지만,, 다른 방법, JPA에서 Lock 걸기 낙관적 락 - 기본적으로는 경합상황이 벌어지지 않는 것을 가정 - 커밋하고 충돌이..

부트캠프 2023.09.22

Spring batch 강의 정리

Inflearn MJ코딩 강사님의 [스프링 배치 입문] 예제로 배우는 핵심 Spring Batch 강의를 듣고 정리한 내용입니다. Spring Batch - 여러 작업들을 모아서 특정 주기마다 한번에 처리해주는 역할 -> 대량의 데이터 일괄처리 - 업무 효율성 향상을 위한 필수적인 작업! - 초당 수많은 처리 작업이 생기는데 이것을 모두 실시간으로 처리하기 어렵다! 예시: 이메일 쿠폰 발송, 가맹점 정산, 거래 명세서 생성, 추천 시스템 데이터 작업 Spring Batch로 작업이 필요한 이유 - 풍부한 기능, 일관성있는 코드, 기존 서비스가 스프링 프레임워크로 되어있는 경우 호환 가능 - 트랜잭션, 롤백 등의 기능도 구현이 되어있음 - 확장성에 유리 Spring Batch의 구조 JobRepositor..

두 번째 팀프로젝트 회고 - 상품 조회, 옵션 및 AWS RDS 담당

기간: 2023.08.14~08.25 개발환경: Java, Spring, AWS RDS/EC2 고양이 용품 쇼핑몰, Roupang 백엔드 6명, 프론트엔드 5명이서 개발 백엔드 역할 분배: 회원 2명, 마이페이지와 장바구니 2명, 쇼핑몰과 판매자: 2명 나의 역할: 쇼핑몰 - 상품 옵션, 상품 조회, 검색 및 AWS RDS 관리 담당 목표: Stream API 많이 사용하기, 검색 및 조회 부분에서의 성능 향상 1. 복잡한 옵션 테이블 이커머스의 경우, 상품 옵션 관련된 부분을 NoSQL로 처리하는 것으로 알고 있었습니다. NoSQL은 스키마 변경이 자유로워서 확장성이 좋기 때문이고 배열로 값을 저장할 수 있기 때문입니다. 하지만, 저희 프로젝트 요구사항에 MySQL을 사용하라는 것이 있었습니다. 따라서..

부트캠프 2023.08.29

첫 번째 팀프로젝트 회고 - JWT 담당

기간: 2023.08.07~08.11 (근데 사실상 3.5일정도 진행했다.) 개발환경: Java, Spring, AWS RDS 게시판 만들기 총 5인 백엔드 개발 협업 프로젝트 - 나의 역할: JWT 부분 담당 목표: JWT 토큰을 이용하여 유저 관련 기능, 로그인 기능을 개발할 때, Spring Security를 이용하는 것보다 쉬운 방법을 찾아보자! Argument Resolver를 이용해보자!HandlerMethodArgumentResolver를 implements한 MemberArgumentResolver를 만들었습니다. supportsParameter와 resolveArgument 두 가지 메소드를 오버라이드하여 사용하였습니다. MemberArgumentResolver가 JWT 토큰의 내용을 A..

부트캠프 2023.08.11

2023 상반기 회고

2023 상반기에 한 것 본격적으로 취업 준비를 시작했고 자기소개서 쓰는 방법을 익혔다. 지원서도 많이 냈고 코딩테스트도 많이 봤다. 한 회사에서 최종면접까지 가기도 했다. (결국 떨어지긴 했지만) ssafy 면접도 봤다. 첫 대면 면접이었는데 생각보다 굉장히 떨려서 나 자신도 놀랐었다. 결국에는 합격하긴했다. 입과할지는 모르겠지만.. 결국에는 취업을 하지는 못했지만 하반기에는 반드시 취업해야지! + 아, 그리고! 클라우드에 대해서 더 공부하고 싶어서 AWS SAA도 취득하였다!! 2023 상반기 취준 하면서 느낀 점 이번 상반기에 왜 취업을 하지 못했는가 생각해보면.. "경험 부족"이 가장 큰 이유이지 않을까싶다. 나는 대학교 3학년 2학기에 졸업프로젝트를 하면서 Spring으로 백엔드 개발을 시작하였..

일상 2023.06.21

2023/05/25

오랜만에 블로그에 글을 쓴다. 근황을 말해보자면 상반기에 취업 준비를 시작하고 처음으로 면접을 보았다. 그것도 어떻게? 잘돼서 최종면접까지 봤다. 생각보다는 무섭지?않았다. 워낙 무서운 얘기들이 많이 들려서 조금 걱정을 하기도 했는데 생각보다는 그렇지 않았다. 하지만 결과는 모른다.. 아마 6월 중순쯤 발표가 날 것 같다. 내가 관심있는 산업의 회사이고 가고싶은 생각이 드는 회사라서 꼭 붙으면 좋겠다. 아 그리고 5월 19일에 AWS SAA 자격증을 취득했다. 사실 3월 8일에 시험을 보았지만 대략 3-4문제 차이로 떨어졌었는데 다시 도전해서 붙었다. 두 번의 시험의 결과가 각각 달랐던 이유를 생각해보았다. 시험을 대하는 마음가짐이 달랐던 것이 주요했다는 결론에 도달했다. 첫 번째 시험은 '학생'의 마음..

일상 2023.05.25

14강 - 스프링부트가 응답(Response)하는 방법이 궁금해요!

Inflearn 최주호 강사님의 스프링부트 개념정리(이론) 강의를 듣고 정리한 내용입니다. 해당 주소로 요청이 오면 적절한 컨트롤러의 함수를 찾아서 실행한다. 응답 2가지 종류: html, Data html 파일로 응답할 때, ViewResolver가 관여(파일 경로, 확장자를 자동으로 붙여주는 역할) ex. WEB-INF/views/hello.jsp (톰캣이 html로 파일 형식 바꿔줌) Data로 응답하게 되면 MessageConverter가 작동하게 되는데 메시지를 컨버팅할 때 기본전략은 json이다. - @ResponseBody 붙이기 ex. 리턴값 예시: {"id":1, "name":"hong"}

13강 - 애플리케이션 컨텍스트란 무엇인가요?

Inflearn 최주호 강사님의 스프링부트 개념정리(이론) 강의를 듣고 정리한 내용입니다. 톰캣이 실행되면 web.xml 동작 -> 디스패처서블릿(프론트컨트롤러+리쿼스트 서블릿) 동작 - 컴포넌트 스캔(src 내부의 모든 파일을 어노테이션 기반으로 스캔해서 필요한 것들을 메모리에 띄운다.(객체를 ApplicationContext에 등록) (@Controller, @RestController, @Configuration, @Repository, @Service, @Component 등 이미 스프링이 정해놓은 것들 & 커스텀해서 만들 수도 있음) & 메모리에 띄워진 것을 각각 처리할 곳으로 보냄 web.xml에서 디스패처 서블릿으로 넘어갈 때, ContextLoaderListener가 먼저 실행됨. - DB..