캡슐화란, 변경 될 수 있는 것은 어떤것이라도 감춘다는 것이다. 이상적으로 캡슐화가 잘되어 있다고 말하는 설계는, 응집도는 높고 결합도는 낮다. 다른 말로는 확장에는 열려있고, 수정에 대해서는 닫혀있다.(개방 폐쇄 원칙, OCP) 각 객체들은 스스로 역할과 책임을 충실히 하기 때문에, 기능이 변경되어도 수정할 수 있는 부분을 최소한으로 할 수 있다. 즉, 캡술화의 핵심은 변경될 수 있는 부분은 외부로 최대한 노출시키지 않고 협력에 의한 인터페이스로(메시지)만 소통을 하는 것이다. 잘못된 예제 (너무 많은 참견을 하는 객체) 극장 이라는 클래스를 보자 관객이 초대권이 있냐 없냐에 따라서 분기되고 있으며 중요한 부분은 아래 코드다. Ticket ticket = ticketSeller.getTicketOffi..
로그인 처리를 하던 도중 세션과 토큰의 차이점에 대해서 정리해 보고자 한다. 서버(세션) 기존 인증 시스템은 서버 기반의 인증 방식으로 서버 측에서 사용자의 정보를 기억해야 한다. 서버가 사용자들의 정보를 기억하기 위해서 세션을 유지해야 하는데, 메모리 또는 디비를 통해 관리한다. 이러한 서버를 Sateful 서버라고 한다. 이러한 세션 인증 방식은 다음과 같은 문제점을 가지고 있다. 세션 사용자가 인증을 할 때 서버는, 이 정보를 저장해야 하고, 이를 세션이라고 부른다. 대부분의 경우에는 메모리에 저장하는데, 로그인 중인 사용자가 늘어날 때, 서버의 RAM 에 부하가 걸리게 된다. 이를 위해 디비에 저장하고 하는데, 디비에 무리를 줄 수 있다. 확장성 더 많은 트래픽을 처리해야 할 때, 세션을 사용한다..
최근에 서블릿 JSP 를 사용한 MVC 패턴을 사용하면서, redirection 과 forword 의 개념이 헷갈려 애를 먹었던 기억이 있다.. 때문에 오늘 리다이렉션을 한번 정리하고자 한다. 리다이렉션 먼저 리다이렉션은 HTTP 300번대 상태코드로 요청을 완료하기 위해서 유저에게 추가적인 조치가 필요한 상태를 말한다. 말로 하면 이해가 어렵기 때문에 그림과 함께 설명해 보도록 하겠다! 첫번째, 클라이언트가 서버에 요청을 보내게 되면, 서버는 300번대 리다이렉션 상태코드를 반환하게 된다. 두번째, 이때 서버는 Location을 통해서 새로 이동해야 할 위치를 알려주게 되고, 세번째, 클라이언트는 서버에게 받은 위치 정보를 참고해, 새로운 URL 로 접근하게 되는 것이다! (후,, 최대한 쉽게 설명해보..
컴퓨터가 가까이에 유선으로 연결되어 있다면 어렵지 않게 통신할 수 있겠지만, 우리는 인터넷을 통해서 통신하는 세상에 살고있다. 그렇다면 컴퓨터는 인터넷 상에서 어떻게 통신하는 것일까? 인터넷에 검색해보면 아래와 같이 이해하기 힘든 그림들이 너무 많은데 김영한님의 강의를 통해 쉽게 정리 할 수 있었다. 먼저 컴퓨터가 인터넷 상에서 통신을 하기 위해서 가장 기본적인 것은 다들 한번쯤은 들어봤을 법한, IP(인터넷 프로토콜) 이다. 우리의 컴퓨터는 인터넷을 통해 목적하는 IP 주소로 이동하며, 그 사이사이에 노드 단위로 이동한다. 데이터를 전달할때는 데이터를 패킷이라는 단위로 전달하는데, 패킷에는 기본적으로 출발지IP, 도착지IP, 전송 데이터로 이루어져 있다고 생각하면 된다. 이 IP에는 한계가 존재하는데 ..
오늘은 포트포워딩에 대한 이야기를 다뤄보고자 합니다. 들어가며 과거에는 대부분 집에서 인터넷을 사용하는 기기가 컴퓨터 하나였기 때문에, 인터넷을 설치한다고 하면 모뎀 한개로 인터넷이 연결될 수 있었습니다. 하지만 최근에는 인터넷을 사용하는 기기가 컴퓨터 뿐 아니라, 스마트폰, 테블릿, 등등.. 다양해 졌기 때문에 다양한 기기들이 인터넷을 사용하기 위해서 유무선 공유기를 설치하는 것을 볼 수 있습니다. 하지만 어떤 서버를 구축하게 된다면 공유기는 큰 문제가 됩니다. 왜 이런일이 생기며, 포트포워딩을 통해서 어떻게 이 문제를 해결할 수 있는지 알아보겠습니다. 공유기 - 공인IP, 사설IP 전세계적으로 인터넷을 사용하기 위해서는 목적지에 해당하는 IP주소를 가지고 있어야 합니다. 우리가 흔히 알고있는 127...