본문 바로가기

Develop

(317)
4. Spring Data JPA, H2 Setting 유저정보를 관리하던, 테스트를 해보던 간에 JPA 설정 및 데이터베이스 연동은 필수이다. 추후 스프링 시큐리티를 적용하던 Redis로 테스트를 하던 데이터 베이스 연동을 하지 않고는 그냥 추상적인 구현이기 떄문에 우선 부랴부랴 연동 해보자 h2와 JPA를 maven 방식으로 추가해준다. 그리고 application.yml에서 해당 jpa 설정과 h2관련 설정을 추가해준다. 이러면 기동시에 jpa 관련 설정들과 h2의 경로를 알아서 설정해서 개발이 가능하게 Entity 별 테이블관리, JPA사용등등을 하게 해준다. 정상적으로 테스트가 됬는지 엔티티 하나를 생성해서 재기동해보자 JPA 관련 전략이 create이기 때문에 재기동할때마다 테이블이 신규 생성 및 초기화 될 것 이다. 재기동할때 테이블 생성 쿼리가..
3. Spring core Setting - 1 인터셉터를 오랜만에 구현해볼겸, 로깅 및 로그인 여부 체크 용도의 인터셉터 두개를 구현해보자 단순한 LoggingInterceptor를 생성 하여 빈으로 등록하고, WebConfig를 별도로 생성 및 빈으로 등록하여, 해당 인터셉터를 등록해준다. 우선 간단하게 사용자가 요청하는 URI과 Ip 정보를 로그로 찍게 한다. 단순히 로깅용 인터셉터만 생성하는 것이 아닌, 별도로 로그인 여부를 판별하는 인터셉터도 생성해보자 우선 Redis나 스프링 시큐리티를 사용하기 전 이니까, 로그인 성공시에 쿠키에만 해당 쿠키값을 저장 해놓고 해당 쿠키값을 체크해서 로깅을 해보자 로그인 성공 시에 단순히 쿠키에 값을 넣고, 인터셉터로 쿠키 값의 이름을 체크해서, 값 이있는지 있다면, 그 값이 Y인지를 체크하는 인터셉터를 생성..
2. admin 화면 로그인 화면 단순 구현 + Spring admin 간단하고도 하고 내가 싫어하는 프론트 단 무료 공개 코드로 적용 간단하게 index html을 생성 플리마켓에서 운용하는 컴퓨터 한대가 아니라 여러대에서 접속해서 대기표를 받을 수 있게하려면? 대기표 받는 페이지를 여러 곳에서 접속한다면? 어플리케이션 기본 모니터링 설정도 하는게 조음 왜냐? 여러대의 트래픽이 몰릴 수 있기 때문에! Spring boot actuator를 적용해보자! implementation 'org.springframework.boot:spring-boot-starter-actuator' management: endpoints: web: base-path: /management exposure: include: - "*" localhost:8080/management 를 입력하면, 이..
Spring Camp 1 1. Gradle vs Maven 빌드 관리 도구? (프로젝트 생성, 테스트 빌드,배포, 외부라이브러리 다운로드) 우선 빌드 자동화 도구는, 프로젝트 내에서 작성한 Java코드와 프로젝트 내에 필요한 각종 xml, properties, jar파일들을 JVM이나 WAS가 인식할 수 있도로고 패키징 해주는 과정을 빌드 자동화 도구라고 할 수 있다. -프로젝트 생성, 테스트 빌드, 배포 등의 작업을 위한 전용 프로그램이라고 할 수 있다. -애플리케이션 개발을 하면서, 일반적으로 개발에 필요한 외부 라이브러리를 다운로드하고 해당 라이브러리를 사용하여 개발해야하는 상황이 많다. 이때 각 라이브러리 들을 번거롭게 모두 다운받을 필요없이, 빌드도구 설정파일에 필요한 라이브러리 종류와 버전들 종속성 정보를 명시하여, ..
[MSA] Service Discovery (Eureak) 각 서비스는 해당 주소와 포트번호가 다르다. 이러한 마이크로 서비스들은 Discovery Service에 저장된다. 외부에서 다른 서비스들이 마이크로 서비스를 검색하기 위해 사용되는 개념이며, 전화번호 책과 같은 느낌이다. 각각의 마이크로 서비스가 어디에 누가 저장되어있으며 요청 정보가 들어왔을때 요청 정보에 따라서 필요한 서비스의 위치를 알려주는 역할을 등록/검색 해주는 것을 Discovery Service라고 하면 유레카를 통해 구현이 가능하다. 우선 유레카 서버 구성이다. 서버는 실질적으로 간단하다. 단순히 포트 번호 지정하고, 해당 서버가 클라이언트가 되지 않게 옵션에서 false를 주면 끝난다. 유레카 라이브러리가 포함되어있으면 기본적으로 client의 역할로 등록하는 작업을 시도한다. 서버는 ..
[MSA] Api Gateway 개념 & Logging Filter 적용 Msa에서 게이트웨이 역할을 하는 Api gateway에 대해서 알아보자 관련 설정은 이전 포스팅에 자세히 다뤘으니, 이번에는 개념과 필요성 그리고 전반적인 개념에 대해서 알아보자 MSA는 큰 서비스를 잘게 쪼개어 개발/운영 하는 아키텍쳐이다. 하나의 큰 여러 서비스를 클라이언트가 직접 호출하는 형태라면? 아래와같은 이슈가 발생한다. -각각의 서비스마다 인증/인가 등 공통된 로직을 구현해야한다. -수많은 API 호출을 기록,관리 해야한다. -클라이언트에서 여러 마이크로 서비스에 대한 번거로운 호출을 해야한다. -내부 비즈니스 로직이 드러나게 된다. 이건, 서비스 개수가 많아질수록 기하급수적으로 늘어난다. 그래서! 이렇게 API gateway를 하나 두는 것이 효과적이다. API gateway는 soa의 ..
[MSA] MSA 구조? 스프링 클라우드 구조? 공부 리스트! 우선 느끼는건... 스프링 클라우드와 쿠버네티스, 도커에 대한 책을 좀 사서 공부를 해야겠다는 생각이들었다. 그래서 어느정도 대략적인 개념을 잡고 책을 사서 보도록하자 우선 SOA는 서비스 지향 설계 방식이다. 서비스 단위로 개발을 하고, 개발된 서비스들을 공유함으로써 재가용성을 늘리고 유연성을 확보한다. Msa는 마이크로 서비스 설계 방식이고 MSA 또한 아주 작은 단위의 서비스로, 소프트웨어를 구성함으로써 민첩하고 유연한 설계하는 것을 목표로 한다. 크게 말하면, 재가용성이다 SOA는 공통의 서비스를 esb에 모아, 사업 측면에서 공통 서비스 형식으로 서비스 제공을 하고 MSA는 각 독립된 서비스가 노출된 rest api를 사용한다. 무튼 나는 MSA를 공부하는거니까 이전에 알았던 유레카, api g..
[MSA] APi gateway? Application Programing Interface + GateWay Api 인증 절차, 모니터링, 과도한 사용에 대한 제어의 기능을 해주는 Api gateway이다. 또한 msa구조에서 gateway 패턴은 가장 흔하고 유용하게 쓰는 패턴중 하나이다. API gateway는 하나의 모든 클라이언트의 요청이 하나의 서버로 들어와, 해당 서버에서 요청이 정제 되거나 조작되어 각자 목적에 맞는 서비스를 찾아가도록 도와주는 방식이다. 즉, 분배,인증,로깅 등등을 통합적으로 앞단에서 관리해주는 역할을 한다. 좀더 자세히 얘기하면 1. 프록시의 역할과 로드밸런싱 2. 인증 서버로의 기능 3. 로깅 서버로서의 기능 단점으로는 아래와 같다. 1. 병목현상 (전체 시스템의 성능이나 용량이 하나의 구성요소로 인해..