본문 바로가기

분류 전체보기11

Model 클래스에는 Setter가 꼭 필요한가? 개요 Model(DTO, VO 등) Object를 사용하면서 private 접근 제한자로 멤버 변수를 선언하고 접근자(getter)와 설정자(setter)를 통해서 객체의 멤버에 접근하는 것이 습관이 되어가던 찰나, "VO 나 DTO를 변경할 필요가 없다면 굳이 setter를 선언할 필요가 있을까?"라는 피드백을 받게 되어 생각해보게 되었습니다. 생각 없이 사용해온 접근자와 설정자를 왜 써야 하는지부터 알아보겠습니다. 직접 멤버 변수에 접근하지 않고 왜 번거로운 getter와 setter 메서드를 만들어서 사용하는 거야? java 서적을 보면, '클래스의 멤버 변수는 private 접근 제어자를 사용하고, getter와 setter를 통해 객체의 멤버 변수에 접근해야 한다.'는 말을 많이 접할 수 있습니.. 2020. 6. 9.
다중 서버 환경에서 Session은 어떻게 공유하고 관리할까? - 1편 (Scale-Up / Scale-Out이란?) 개요 지난 시간 세션과 쿠키를 이용한 로그인에 대해 알아보았습니다. 이러한 개념을 바탕으로 로그인 기능 개발을 들어가기 전에 생각해볼 문제가 생겼습니다. 현재 프로젝트의 사용자가 많아져서 가용 중인 서버로 수많은 클라이언트들을 감당할 수 없는 환경에 이르면 어떻게 해야 할까요? 지금부터 서버가 대량의 트래픽을 해결하는 방법에 대해서 알아보겠습니다. Scale-Up / Scale-Out에 대해 알아보자! 스케일 업이란 단일 서버(하드웨어)의 성능을 증가시켜서 더 많은 요청을 처리하는 방법을 의미합니다. 즉, 단일 하드웨어의 성능을 높이기 위해 CPU, 메모리, 하드디스크 등을 업그레이드하거나 추가하는 것을 의미합니다. 반면, 스케일 아웃은 동일한 사양의 새로운 서버를 추가하여 성능을 증가시키는 방법을 말합.. 2020. 5. 25.
HTTP 는 Stateless 한데 로그인은 어떻게 구현할 수 있을까? (세션/쿠키를 이용한 인증) 개요 소셜 네트워크 서비스 'AGORA'를 제작하면서 가장 먼저 개발한 기능은 회원가입/로그인 입니다. 혼자 사용하거나 모든 정보가 공개된 웹 어플리케이션이 아니라면 대부분의 웹 어플리케이션은 회원가입과 로그인 기능이 구현되어 있습니다. 이러한 인증 기능은 왜 필요할까요? 각각의 클라이언트는 웹 서비스에서 개별적인 컨텐츠를 소비합니다. 그러므로 Client에서 API를 요청하였을 때, 서버는 누구의 요청인지 정확하게 식별해야만 합니다. 즉, 서버는 각 클라이언트의 개인적인 정보들을 보관하고 이를 클라이언트의 요청에 맞추어 제공해야만 합니다. 이러한 과정 속에 '인증'(Authentication)이 이루어지지 않는다면 개인정보가 유출되거나 변조되는 등의 취약점이 발생할 수 있습니다. 지금부터 기본적이지만 .. 2020. 5. 11.