오늘은 개인과제 lv2 제출하고 코드리뷰도 받고 알고리즘 문제도 2문제 풀고 알고리즘 스터디에서 코드리뷰도 했다.
TMI이긴 하지만 요즘 몸이 안 좋아지는 게 하루가 다르게 느껴져서 짬 내서 운동도 다녀왔다 :D
오늘은 매니저님께 코드리뷰를 받으면서, 또 알고리즘 스터디에서 코드리뷰하고 다른 사람 코드도 보면서, 내가 코드를 짤 때 가독성을 딱히 생각하지 않으면서 짜고 있구나! 를 깨달았다...
기능만 잘 되면 되지~~ 라고 생각했었는데 아무래도 앞으로 코드를 짤 때에는 기능이 잘 되더라도 거기에서 그치지 않고 코드를 좀 더 가독성이 좋게 바꿀 수 있진 않을지를 생각해 보면 좋을 것 같다.
사실 아직 가독성이 좋은 코드란 어떤 코드인지 정확하게 알지 못한다.. 클린코드 책 얼른 읽어봐야 하는데 언제 읽어볼 수 있을지 모르겠다,,
1. 우선 코드 가독성을 위한 오늘의 팁!
- exception처리는 먼저 하라! 마지막에 throw exception으로 함수가 끝나는 건 보기 좋지 않다.
- if문을 시작할 때 !=(아니면) 으로 시작하기보단 맞으면(==)으로 시작하는 것이 좋다.
- 최대한 if문은 안 쓸 수 있으면 안 쓰는 쪽으로 가자.
2. JWT를 사용하여 인증/인가를 구현 했을 때 장점
- Stateless(무상태): 서버의 상태를 저장하지 않기에 서버에서 사용자 세션을 저장할 필요가 없다. 그렇기에 서버 부하가 감소하고 서버 성능이 향상된다.
- Scalable(확장성): 여러 서버 간에 인증 및 인가 정보를 공유할 수 있는데 이는 시스템이 확장 가능하도록 만들어 준다.
- Secure(보안성): JWT는 기본적으로 서명을 통해 보안성을 제공한다. 이는 JWT를 위조하거나 변조하는 것을 방지하며, 클라이언트 측에서도 안전하게 저장할 수 있다.
- Flexible(유연성): JWT는 헤더와 페이로드, 서명 부분으로 나뉘어 있으며, 이를 커스터마이징하여 사용할 수 있다. 이는 필요한 정보만 포함시켜 불필요한 데이터 전송을 방지할 수 있다.
3. JWT를 사용하여 인증/인가를 구현 했을 때 한계점
- 취약성: JWT의 암호화 방식이 취약할 겨우, 보안성에 취약해질 수 있다. 또한, JWT를 저장하는 쿠키를 탈취당하면, 악성 사용자가 JWT를 사용하여 인증을 수행할 수 있다.
- Payload 크기: JWT에는 인증 정보와 함께 추가적인 정보를 포함시킬 수 있다. 그러나 이로 인해 JWT의 크기가 커져서, 인터넷 연결이 느린 사용자의 경우 로딩 시간이 오래 걸릴 수 있다.
- 무상태(Stateless): JWT는 무상태 프로토콜이다. 이는 사용자 세션 정보를 저장하지 않으므로, 사용자 로그인 정보가 변경되었을 때, 기존에 발급된 JWT를 무효화시키기가 어렵다.
- 중앙 집중식 관리: JWT를 사용하여 인증/인가를 구현하려면, JWT의 발급과 검증을 관리하는 인증 서버가 필요하다. 이는 중앙 집중식 관리 방식이므로, 분산 시스템에서는 유연성이 떨어질 수 있다.
-끄읕-