안녕하세요. delay100입니다.오늘은 2024-05-22 ~ 2024-08-09(약 12주) 동안 진행했던 항해99 취업 리부트코스 후기를 적어보려합니다.꾸준히 모집을 하고 있던데, 앞으로 신청하시려는 분들께 도움이 되었으면 좋겠습니다.1. 시작 전, 나의 상태 지방 거점 국립 대학교 중 한 곳의 컴퓨터정보통신공학과를 올해 2월에 졸업했습니다!특이사항으로는.. 대학교 1학년때 IT 연합 동아리인 멋쟁이사자처럼 7기로 활동했었고, 나름대로 교내·외 활동을 열심히 하면서 살았었습니다. 교내에 캠프나 특강같은거 있으면 최대한 많이 참가하려 했고, 꼭 진로와 맞지 않더라도 경험하는걸 좋아해서 이것저것 참가했습니다. 특히나 기억나는 활동으로는 수업 조교(알고리즘), DB과목으로 포트폴리오 우수상 수상, 중·..
전체 글
Daily & Study안녕하세요! delay100입니다.드디어 e-commerce에서 가장 어렵고 재밌었던 상품 주문API를 다뤄볼까 합니다. 고민을 가장 많이 했던 부분이라, 글이 많이 길어지지는 않을까 걱정이 됩니다..ㅎㅎ 그래도 고민했던 과정을 잘 정리해서 작성해보겠습니다!서론아래와 같은 흐름으로 포스팅이 진행됩니다.1. 상품 주문(기본)가장 먼저 작성한 기본적인 상품 주문 코드입니다. 2. 동시성 제어 적용한번에 많은 사람들이 주문 요청을 하는 경우 멀티쓰레드인 Spring App에서는 동시성 이슈가 발생합니다. 이를 해결한 방법에 대해 다룹니다. 3. Redis로 상품 재고 관리하기상품주문에서 가장 중요한 재고관리에 대해 Redis를 도입해 구매자들이 더 빠르게 주문할 수 있도록 했습니다. 4. Redis 동시성 제..
안녕하세요! delay100입니다.2024년 7월 14일에 고용24 홈페이지에서 국민취업지원제도를 신청했어요!신청은 어렵지않았는데, 문항이 많아서 좀 오래걸렸습니다.(30분~1시간 소요) 그냥 비어있는 칸들 개인정보 채우는 느낌이에요! 귀찮을 뿐이지 어렵진 않습니다. 여튼 위와 같이 신청하게 되면 며칠 뒤에 유선 연락이 와요! 안내를 받고 오프라인 초기 상담 날짜를 잡으면 됩니다. 그리고 해당 날짜에 가면 이것저것 해오라고 말을 듣게 됩니다.그런데 가시면 많은 내용을 듣고 오게 되는데... 그래서 뭘 해야 하는거지? 라는 생각이 들게 됩니다..저같은 경우에는 주변에서 오프라인 국비를 들으면 굉장히 쉽게 수당이 나온다고했지만.. 국비는 듣기 싫었습니다..ㅎㅎ 그저 취업에 도움되는 정보만 얻고 싶고, 굳이 ..
안녕하세요! delay100입니다.오늘은 본격적으로 상품 주문 API를 다루기 전에 결제 이전 및 이후에 동작하는 GET 메소드들과, 날짜에 따른 상품 상태를 변경하는 메소드들을 다루겠습니다.실제로 상품 주문 요청을 다루는 것 외에 부가적으로 만들었던 기능들에 대해 먼저 살펴볼 예정입니다.이 내용은 1번을 먼저 보고, 8번 포스팅 이후에 3번과 4번을 보는 것을 추천드립니다! 서론 상품 주문의 주요 API별로 구성했습니다. 글 내용을 1, 3, 4를 먼저 작성했는데 생각보다 길어져서 주문의 핵심 내용인 2번은 다음 포스팅으로 미루게 되었습니다..! [결제 이전]1. 배송지 입력 및 주문 폼 접근2. 상품 주문 -> 다음 포스팅에서 다룸 [결제 이후]3. 상품 취소, 반품4. 주문 내역 리스트, 상세1..
안녕하세요! delay100입니다.위시리스트, 장바구니는 CRUD 위주로 간단하게 구현해서 사실 별로 할 말이 없습니다..!!ㅎㅎ사실 이번 포스팅 없이 바로 주문과 관련된 포스팅을 진행하려 했으나,,, 주문을 할 때 장바구니를 통해서 주문을 하기 때문에 가볍게 넣어봤습니다!쉬어가는 부분이라고 생각하고 가볍게 읽어주시면 좋겠습니다. 서론위시리스트와 장바구니는 자주 변경되므로 DB에 지속적으로 접근하는 것이 적절한지 고민했습니다. 1. Redis 캐싱장바구니와 위시리스트 데이터를 Redis에 캐싱하여, 변경이 있을 때만 DB를 업데이트하는 방법입니다. 이를 통해 DB 접근을 최소화하고 서버 부하를 줄일 수 있습니다. 2. 로그에 따른 변경장바구니, 위시리스트의 변경 사항을 로그로 저장하고, 일정 간격으로 D..
안녕하세요. delay100입니다.개발자 취준생 신분으로써 오늘도 여전히 이력서를 보완하고, 면접 답변을 준비하고 있던 와중..아래와 같은 질문을 만났습니다.개발자가 되기로 한 이유에 대해 말씀해주실 수 있을까요? ...순간 당황했습니다. 이 문장을 보고 아무 생각이 들지 않았기 때문이죠.분명히 어릴때부터 IT계열로 가야겠다고 확신했고,, 그리고 대학 진학 시 6개의 원서를 넣을 때 원해서 컴퓨터공학과를 선택했기 때문이죠.. 사실 바꿀 수 있는 상황은 많았지만 바꾸는 길을 선택하지 않았습니다.그렇다면 왜 내 선택들은 나를 개발자로 이끌어왔지? 의문이 들었습니다. 요 근래 취업만을 생각해서 근본적인 "왜"를 잊고 살았던 것 같아서..개발자를 꿈꿔온 과정을 회고, 정리해보려고 합니다. 한 사람의 일대기가 ..
안녕하세요! delay100입니다.이번에는 e-commerce에서 가장 중요한 2번째 타이틀인 "상품"을 다뤄보려 합니다.서론 총 4가지 카테고리로 포스팅을 준비했습니다. 먼저 첫 번째는 상품 기본 Entity 정보에 대해 다룹니다.두 번째로 상품 이미지는 AWS S3로 관리했습니다.세 번째로 상품의 출시 여부를 @Scheduled를 이용해서 처리했습니다.네 번째로 Redis를 이용해서 옵션별로 재고를 캐싱했습니다. (-> 상품 주문 포스팅 이후에 내용이 추가될 예정입니다)1. 상품1-1. 상품 구조상품 Entity에서 다룰 점은 크게 2가지입니다.1. 상품 카테고리가 enum으로 상품 내부에 들어가있습니다.-> 아래와 같은 이유로 상품 카테고리를 enum으로 관리하여 시스템의 안정성과 효율성을 높이고..
안녕하세요! delay100입니다.이번에는 매우 단순한 Update를 수행했던 마이페이지 정보 업데이트에 대해 다뤄볼까 합니다.사실 많이 간단하기 때문에 글을 올릴까 말까 고민하다가, 단순한 CRUD여도 혼자 구현한 프로젝트의 일부이기 때문에 포스팅 하기로 했습니다!1. 마이페이지 정보 업데이트 1 - (주소, 전화번호)1-1. 동작 방식로그인 시 프론트에 반환했던 JWT토큰을 넘겨받고 SpringSecurity의 AuthorizationFilter에서 인가 처리가 되어 API에 접근됩니다. 요청으로 들어온 회원 정보를 업데이트 합니다.Service에서 Builder를 직접 사용하는 것은 코드가 길어질 수 있어 지양하고자 합니다. 이를 해결하기 위해, Member Entity에 from 메서드를 구현하여..
안녕하세요! delay100입니다.오늘은 로그인 및 인가를 도입한 부분에 대한 기록을 남겨보려합니다.서론 Spring 프로젝트를 해본 사람이면 누구나 한번쯤 들어봤을 방식인 SpringSecurity와 JWT를 혼합해서 사용했습니다.SpringSecurity는 기본으로 제공해주는 BcryptPasswordEncoder, http authorizeHttpRequests 등이 있어, 인증 및 인가에 대해 복잡하게 직접 구현하지 않고도 손쉽게 사용할 수 있다는 점이 매력적입니다.JWT는 무상태성(stateless)을 가지므로 매 요청에 대해 DB 부하를 없앨 수 있다는 장점이 있습니다. 기본적으로 Session방식을 사용하게 되면 요청마다 sessionId를 검사해야하므로 DB 부하가 존재합니다. 결국, J..
안녕하세요! delay100입니다! e-commerce 프로젝트의 2번째 게시글이네요.이번에는 e-commerce를 이용할 때 중요한 3요소 중 하나인 "회원"의 회원가입 기능을 다룹니다.오늘은 회원가입 시 이메일 인증 로직을 왜, 어떻게 개발했는지에 대해 다뤄보려 합니다! 1. 이메일 인증1. 왜 이메일 인증 방식을 도입했냐면요..사용자 신뢰도 향상: 이메일 인증 절차를 통해 사용자가 자신의 이메일을 확인하고 인증함으로써 서비스에 대한 신뢰감을 높일 수 있습니다.유효한 연락 수단 확보: 주문 확인, 배송 정보, 비밀번호 재설정 등 중요한 정보를 전달할 수 있는 유효한 이메일 주소를 확보합니다.계정 보호: 이메일 인증을 통해 인증된 사용자만 회원가입을 완료할 수 있게 하여, 악의적인 사용자의 접근을 차단..