🕹️ Programming/개발상식

이번 글에서는 소프트웨어 디자인 패턴 중 하나인 MVC 패턴에 대해 기록해보려고 한다. MVC 패턴이란 MVC는 Model-View-Controller의 약자로, 애플리케이션을 3가지 역할로 구분하는 디자인 패턴이다. 이렇게 역할을 분리하는 이유는 무엇일까? 화면과 데이터 처리를 분리해 코드 간의 종속성을 줄이고 구성 요소 간의 역할을 명확하게 함으로써 코드 분리가 쉽고 유지보수가 용이하기 때문이다. 이해하기 쉽도록 실생활로 예를 들어보자면, 하나의 회사에서 마케팅 업무를 하는 직원, 디자인 업무를 하는 직원, 개발 업무를 하는 직원, 기획 업무를 하는 직원이 모두 한 공간에서 작업을 진행한다고 생각해보자. 만약 특정 디자인에 수정이 필요할 때, 그 복잡한 환경에서 해당 디자인 업무를 담당하는 직원들을 ..
Model은 Controller와 View에 의존하지 않아야 한다. 이말은 즉, 모델 내부에 컨트롤러와 뷰에 관련된 코드가 있으면 안된다는 것이다. 이를 확인하는 쉬운 방법은 모델에서 컨트롤러와 뷰 클래스를 import해서 사용하는지 확인하는 것이다. 모델은 데이터가 관련된 부분이다 보니언제든 깔끔하고 정제된 데이터를 꺼내 쓸 수 있도록 뷰나 컨트롤러 코드를 섞지 않는 것이 좋다. public class Friend { private String name; private int age; pubic Friend(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public i..
JWT는 Authentication(인증)보다는 Authorization(인가)와 연관된 기술이다. 로그인을 구현함에 있어서 로그인된 상태가 유지되도록 하는 것은 매우 중요하다. 어떤 사이트나 서비스에 사용자가 로그인해있다는 사실을 서버가 인지할 수 있도록 하는 방법을 어떤 것이 있을까? Session 우선 기존에 많이 사용하던 세션 방식을 생각해보자. 사용자가 로그인에 성공하면, 서버는 Session ID라는 걸 발급한다. 쉽게 비유를 해보자면 Session ID를 영화티켓이라 보고, 서버는 영화티켓을 발급한뒤 반쪽은 사용자의 브라우저(클라이언트)로 보내고 반쪽은 자기 책상, 즉 메모리에 올려두는 것이다. (경우에 따라서는 서랍인 하드디스크나, 창고인 데이터베이스에 올려두기도 한다.) 이때 표 반쪽을 ..
쿠키와 세션은 누구나 한번쯤은 들어본 단어일 것이다. 하지만 그 개념에 대해서는 헷갈리는 경우가 많아 간단하게 정리해보려고 한다. HTTP에서 쿠키와 세션을 사용하는 이유 HTTP 프로토콜의 특징이자 약점을 보완하기 위해 쿠키 또는 세션을 사용한다. 현재 우리가 인터넷에서 사용하고 있는 HTTP 프로토콜 환경은 connectionless, stateless한 특징을 가지기 때문에 서버는 클라이언트가 누구인지 매번 확인해야 한다는 문제가 있다. 이러한 문제를 해결하기 위해 쿠키와 세션을 사용한다. 예를 들어 쿠키와 세션을 사용하지 않고 HTTP 연결만으로 사이트를 구성한다면, 쇼핑몰에 옷을 구매하기 위해 로그인을 했음에도 페이지를 이동할 때 마다 로그인 정보가 유지되지 않아 계속 다시 로그인을 해야 한다...
두 용어가 자주 등장하기 때문에 나중에 다시 혼동하지 않기 위해..! 정리해두려고 한다. Authentication 인증에 관한 설정 로그인인 관련 처리 → 로그인 자격 증명을 확인하여 로그인한 사용자를 인식 Authorization 권한에 관한 설정 로그인한 사용자의 권한을 처리 → 액세스 제어로 사용자가 읽기, 수정, 삭제를 허용하는지 여부를 확인 권한의 부여는 사용자의 인증(로그인)이 성공적으로 이뤄진 후 발생한다. Reference Authentication vs Authorization
an2z
'🕹️ Programming/개발상식' 카테고리의 글 목록