[주간리포트]5월 1주차

zzarbttoo·2023년 5월 7일
0

5월 1주차 회고

생존 신고를 위한 블로그 글 쓰기.. 5월 첫째주!


업무

  1. jwt 관련 업무
  • 저번에 jwt 발급 하는 것을 작성했으니, 이번에는 모바일 어플리케이션에서 jwt 를 이용해 인증처리를 진행하도록 코드를 변경했다(기존에는 session 방식을 이용함)

    • WebfluxSecurityConfig에서 webfilter을 추가해 header 에 담긴 accessToken을 파싱하고 인증 권한 및 관련 payload를 가져오도록 했다
    • 이 때 User 객체의 principal 에 custom한 payload 값을 담아 다른 함수에서 사용하도록 하기 위해, User 객체를 상속한 custom한 uesr객체를 사용했다
    import java.util.Collection;
    import lombok.Getter;
    import org.springframework.security.core.GrantedAuthority;
    import org.springframework.security.core.userdetails.User;
    
    @Getter
    public class CustomUser extends User {
    private final String name;
    
        public CustomUser(String username, String password,
            Collection<? extends GrantedAuthority> authorities, String name) {
            super(username, password, authorities);
            this.name = name;
        }
    }
  • 위와 같은 식으로 작성하고, builder 을 사용해 User 객체를 사용하려고 했는데 상속관계여서 어려웠다

    • 그래서 @SuperBuilder 태그를 추가해서 진행하면 되겠구나 했는데, 결국 필드가 final 로 선언돼있어서 builder을 쓰기 적절하지 않은 구조였다
    • 그냥 constructor에 직접 payload 값을 파싱해서 넣어주도록 개발했다

  1. Controller 에서 인증 처리 및 accessToken payload 파싱하여 사용하도록 변경
  • 기존에는 session 방식을 사용했으니까 로그인하면 암호화한 시퀀스 정보, 개인정보 등을 프론트엔드에 전달해줬었는데 accessToken을 이용하니 그럴 필요가 별로 없어졌다 생각하여 엔드포인트 전체를 변경했다 (프론트는 이제 시퀀스 정보 등에 대해 알 필요가 없다)

  • 일단 accessToken을 받아서 무조건 파싱작업이 한번은 이뤄지기 때문에 개인정보가 User principal에는 무조건 있는 셈!

    • 때문에 아래와 같이 Authentication 을 받아 처리하도록 했다
       @GetMapping("/search")
        @PreAuthorize("hasAnyRole('ROLE_TEST')")
        public Mono<ResponseEntity<ResponseDto<PageImpl<TestDto>>>> searchList(@ModelAttribute TestRequest testRequest, Authentication authentication) {
    
            CustomUser principal = (CustomUser) authentication.getPrincipal();
    
        String name = principal.getName();
     … 이하 생략
        }
  • 그리고 최초 로그인 시 필요한 정보는 로그인 서버에서 토큰을 발행하는 것과는 별도로 보내줘야 하기 때문에 토큰 발행 후 바로 필요한 정보를 보내주는 endpoint를 만들어 전달했다

  • 물론 프론트엔드에서 accessToken 을 파싱해서 써도 되지 않느냐..? 라고 할 수 있지만 보안상 권장되지 않는다 하여 이 방식으로 가기로 했다


  1. custom exception 처리하기
    - custom exception 을 처리하는 작업을 진행중이었는데, 다른 사람이 작성해 놓은 것을 슬쩍 포팅중에 있다
    - 일단 DefaultErrorAttributes 를 상속하여 짜고 있는데 챗지피티놈이 globalExceptionHandler를 쓰라고 강력히 주장중에 있다
    - 그래서 진행하고 나서 수정할 수 있다면 하려고 한다
    - 하면서 httpStatusCode 에 대해 많이 알게 됐다
    - teapot 이라는 code 도 있어서 신기했는데 만우절을 기점으로 생겼다고 한다


  2. Mongo 관련 쿼리 작업 도와주기

  • 기존에 mongoDB 에서 값을 불러올 때 List
    T 값이 계속 다른 class 값을 받아와야 하는 경우가 있어서 쿼리를 reflaction을 써서 프로그램으로 작성해 aggregation, match에 집어넣어 받아왔었다

  • 이것을 다른 곳에서도 사용할 일이 있어 동기분께 알려드렸는데 진행하면서 기존 코드에 대한 부족한 부분 피드백도 듣고 칭찬도 들어서 좋았다


  1. docker 에 띄우기
  • mobile 을 java 17에 spring 3.0.2로 짰는데 기존에 java 11을 쓰는 서버에 띄울것인지라 도커 위에 얹어서 띄워야 할 듯 하여 슬쩍 테스트 해보려고 한다(물론 이사님이 해주실 수도 있지만..)


개인적

  1. 카카오 기술 세미나
  • 카카오에서 AI 기술 세미나를 진행하는데 당첨돼서 놀러가게 됐다 야호!
    • 엄마는 무슨 카카오 붙은거도 아닌데 왤케 좋아하냐고 하는데 난 그냥 놀러가는게 신나는거다(카카오 처음 가봄 예에~~~)
  • 궁금한 점은 사람이 하는 일(예를 들면 검수 작업 등)을 회사에서 ai에게 맡길 수 있느냐, 얼마정도의 신뢰도를 가지고 그 기술을 이용하고 있느냐이다
  • 카카오 자체에서도 AI 기술을 개발하고 있으니 과연 상용화는 언제 어느 수준으로 될 수 있는가도 궁금하니 열심히 듣고 올 것이다

  1. 관리란 무엇인가
  • 회사 내부 사정이기에 정확하게 적을 수는 없지만, 관리란 무엇인가에 대한 생각이 들었다
  • 관리는 통제하는 것인가 아님 관리를 안하는 것이 오히려 최고인 것인가 알 수 없었다
    • 퇴사한 이형님이 최고의 관리는 최소한의 관리만 하고 알아서 흘러가게 하는 것이라고 하긴 했다
  • 그래서 우리 회사에서도 그러한 방식을 사용하려 하나라는 생각이 들었지만, 또 그게 가능하려면 최소한의 체계는 잡혀야 할텐데 약간 걱정이 되었다
  • 근데 또 우리 회사 이사님들 + 대표님이라면 잘 할 수 있을것이라는 생각이 든다 지금까지의 행적(?) 들만 봐도 분명 뭘 해내실 분들이니… 난 그냥 열심히 내 할 일이나 해야지..

  1. 스타트업은 사람의 목숨을 담보로 하고 굴러가는것인가
  • 우리 회사는 일단 인력이 굉장히 적은데 일이 엄청 많은 것 같기도 하다
    • 다른 회사에서도 그래서 미팅 나가면 굉장히 놀라신다고 한다(그게 회사가 안되는 것 보다는 분명히 좋은 것임은 맞다 생각한다)
  • 그래서 일단 대표님 + 이사님들이 퇴근을 안하신다..
    • 심지어 기술 이사님은 집가셔서도 계속 일하시는게 개발자끼리는 커밋시간을 확인할 수 있는데 막 새벽 2시 이럴 때도 많다(거의 이정도면 생활 패턴)
  • 이오에서 스타트업 대표의 건강과 관련한 칼럼이 내 피드에 우연히 올라와서 그래서 공감하면서 봤다
    • 대표님하고 수다떨면서 나온 얘기지만 스타트업 대표 중에 암에 걸린 사람이 은근 있다고 하기도 했었다
    • 실제로 내 주변에서 굉장히 비전있는 스타트업에 프론트엔드로 취업한 언니가 있었는데 갑자기 대표님이 암에 걸리셔서 회사가 어수선해진 경우도 있었다
  • 이전에 금삽빠리나잇에 갔을 때 다른 대표님 모습을 봐도 다 우리 대표님마냥 다 불면은 기본 스택으로 들고가는 듯 해서 확실히 스타트업 자체가 사람을 갈아넣어야 잘 될까말까 하는 구조구나라고 생각했다
    • 이오 컬럼에서는 절벽에서 떨어지기 전에 비행기를 조립해야 하는 것이라고 표현하는데 맞는 것 같기도 하다
  • 언젠가는 나도 보탬이 돼서 다른 사람들의 수면 시간을 늘려줄 수 있으면 좋겠다(?)
profile
나는야 누워있는 개발머신

0개의 댓글