일개미 : 일상과 개발의 미학

[이노베이션 캠프_서울] 4주차 회고 본문

Innovation Camp

[이노베이션 캠프_서울] 4주차 회고

9low_28 2022. 8. 28. 23:09

갑자기 난이도가 급상승한 4주차였다고 한다  😰

사실 언어도 제대로 안된 상태에서 스프링부트 원리도 제대로 이해하고 만든 과제들이 아니니 당연히 알리가 없다.

JWT 토큰을 활용한 로그인기능에 게시판과 댓글까지 작성 권한과 기능을 부여하는 과제였다.

 

 

 

[출처] 스파르타 코딩클럽 Spring 심화 학습자료
[출처] 스파르타 코딩클럽  Spring 심화 학습자료

 

 

 

먼저 로그인/로그아웃 처리과정의 핵심을 다시한번 이해해본다. 학습자료에 그림으로 잘 나와있다.

스프링에서 로그인 기능구현은 스프링 시큐리티를 활용해서 보안을 적용시킨다. 

그렇다면 여기에 추가로 JWT를 활용해서 로그인하는 방식은 어떻게 적용이 될까? 다음 그림을 통해 방법을 간단히 살펴보자

 

 

[출처] 스파르타 코딩클럽  Spring 심화 학습자료

 

 

 

이러한 내용으로 요즘 JWT를 이용해 로그인을 구현하는 곳도 많다고 한다. 하지만 많이 쓰인다고 다 좋기만 한 것은 아니다. 또한 규모가 큰 웹에서는 당연하게도 자체 기술을 가지고 있는 경우가 대부분이다.

 

 

  • JWT 장/단점
    1. 장점
      • 동시 접속자가 많을 때 서버 측 부하 낮춤
      • Client, Sever 가 다른 도메인을 사용할 때
        • 예) 카카오 OAuth2 로그인 시 JWT Token 사용
    2. 단점
      • 구현의 복잡도 증가
      • JWT 에 담는 내용이 커질 수록 네트워크 비용 증가 (클라이언트 → 서버)
      • 기생성된 JWT 를 일부만 만료시킬 방법이 없음
      • Secret key 유출 시 JWT 조작 가능

 


 

😎 이번 주차의 키워드에 대해서 파헤쳐보쟝

  1.  ORM은 Object-Relational Mapping의 약자로 객체 관계 매핑을 의미한다. 의미 그대로 객체와 데이터베이스의 관계를 (자동으로) 연결시켜주는 것이다. 객체 지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용한다. 이렇듯이 객체 모델과 관계형 모델 간에 불일치가 존재하는데, ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결해준다. 만약 ORM이 없이 직접 데이터를 핸들링 한다면, Select Query를 해서 받은 결과값을 일일이 매핑해서 사용해야한다.



  2. SQL(Structured Query Language)란? 구조화된 질의 언어라는 뜻으로 관계형 데이터베이스에서 사용되는 언어. 표준 SQL을 배우면 대부분의 DBMS를 사용할 수 있다. DB(데이터베이스)를 한 마디로 정의하면 ‘데이터의 집합’이라고 할 수 있다. DB에는 일상생활 대부분의 정보가 저장되고 관리된다. 이런 DB 관리하고 운영하는 소프트웨어를 DBMS(Database Management System)라고 합니다. 다양한 정보 저장되어 있는 DB 여러 명의 사용자나 응용 프로그램과 공유하고 동시에 접근이 가능해야. DBMS의 대표적인 예로는 MySQL, 오라클(Oracle), SQL 서버, MariaDB 등이 있다. 

 

3. MVC 패턴은 하나의 앱을 구성할 때의 구성요소를 세가지로 구분한 것으로서 Model View Controller를 의미한다.

- Model : 앱의 정보, 데이터를 의미한다. 데이터베이스, 초기화된 변수등이 이에 해당한다.
- View : 사용자의 인터페이스 요소를 의미하며, input텍스트 체크박스같은 html의 요소가 이에 포함된다. 데이터의 입력 및 출력을 나타내는 역할이다.
- Controller : 데이터와 뷰를 연결하는 다리 역할이다. 사용자가 요청한 데이터를 가공하여 요청된 정보를 처리한다.