Spring

    프로젝트 패키지 구조는 어떻게 나누는게 좋을까

    어떻게 구조를 나눌까 고민하다 작은 프로젝트는 굳이 패키지를 디테일하게 나눌 필요가 없을 것 같은데?라는 생각이 들어 어떤 식으로 나누면 좋을지 찾아보았다. 처음 찾아본 글은 인프런에서의 질문에 대한 김영한 님의 답변이였다. 정답은 없다고 하셨다. 프로젝트를 진행할 때마다 어떤 식으로 나누고 시작하면 좋을지 해당 프로젝트에는 어떤식으로 나누는 게 좋을지 고민하신다고 한다. 현재 프로젝트의 상황과 규모에 따라서, 거기에 맞는 유지보수하고 확장하기 쉬운 구조가 있기 때문이다. 그러면 어떤 방식으로 나누는 방법이 있는지 알아보자. 패키지 구성은 크게 레이어 계층형, 도메인형 이렇게 2가지 유형이 있다. 계층형 └── src ├── main │ ├── java │ │ └── com │ │ └── example ..

    [Spring] 왜 Service 와 ServiceImpl로 나누는걸까

    프로젝트를 진행하면서 설계할 때 자연스럽게 service와 serviceImpl로 설계를 했다. 큰 생각이 없다가 강의를 들으면서 문득 왜 나누는 거지란 의문이 들어서 블로그를 찾아보며 정리해 보았다. 이유 이유는 인터페이스와 구현체를 분리함으로 코드의 구조화, 확장성, 유지보수성을 개선하기 위함으로 생각된다. 일반적으로 Service는 비즈니스 로직을 처리하는 인터페이스를 의미하고, ServiceImpl은 실제 비즈니스 로직을 구현하는 클래스이다. 코드의 구조화: Service 인터페이스와 ServiceImpl 구현 클래스를 사용하여 코드를 논리적으로 구조화함으로 코드를 더 읽기 쉽고 이해하기 쉬운 형태로 구성할 수 있다. 확장성: Service 인터페이스를 기반으로 다양한 구현체를 만들 수 있다. 이..

    OAuth

    OAuth Open Authorization의 약자이다. 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로써 사용되는, 접근 위임을 위한 개방형 표준이다. 이 매커니즘은 여러 기업들에 의해 사용되고 있다.(페이스북, 카카오, 구글 등등) OAuth가 사용되기 전에는 인증방식의 표준이 없었기 때문에 기존의 기본인증인 아이디와 비밀번호를 사용하였는데, 이는 보안상 취약한 구조일 가능성이 매우 많다. 기본 인증이 아닐 경우는 각 애플리케이션들의 각자의 개발한 회사의 방법대로 사용자를 확인하였다. 예로는 구글의 AuthSub, 야후의 BBAuth, 아마존의 웹서비스 API 등이 있다. OAuth는 이렇게 제..

    Redis

    Redis 란? Redis는 Remote Dictionary Server의 약자로서 Key, Value(키 값) 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터베이스 관리시스템(DBMS)이다. 2009년 살바토르 산필리포가 처음 개발했다. DB-Engines.com 의 월간 랭킹에 따르면, 레디스는 가장 인기있는 키-값 저장소이다. 데이터 구조 앞에서 말했듯 Redis는 Key-Value 구조를 기반으로 데이터를 저장하며, 다양한 데이터 구조를 지원한다. Redis에서 지원하는 데이터 구조이다. String 가장 기본적인 데이터 구조로, 문자열, 정수, 부동소수점 숫자 등을 저장할 수 있다. 각각의 Key에 하나의 Value만 저장 가능하다. Hash Key와 Value로..