일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- JPA예제
- 코테준비
- 카프카
- JPA공부
- 플러터 개발
- Flutter
- 기술공부
- 알고리즘공부
- 스프링
- Kafka
- K8S
- 스프링부트공부
- 스프링 공부
- JPA 공부
- nestjs스터디
- 자바공부
- 플러터 공부
- nestjs공부
- JPA스터디
- 기술면접공부
- Axon framework
- 자료구조공부
- 프로그래머스
- 스프링부트
- querydsl
- JPA
- 코테공부
- nestjs
- DDD
- 스프링공부
- Today
- Total
목록Develop (320)
DevBoi
Mybatis를 쓰다가, 대부분 모델 ResultMap으로 사용해서 쓰는데 뭔가 간단하고 단순히 매번 모델을 만들어서 ResultMap으로 꾸리기 귀찮다. 예를 들면 바인딩.... 솔직히 매번 모델 만들기 너무 귀찮다.... 그래서 찾아보니.. parameterType="java.util.Map" resultType="kr.co.esjee.icedu.util.CamelListMap" 요 녀석이 있다. 이 녀석이 뭐냐? 디비에서 컬럼을 카멜이름으로 바꿔서 ListMap으로 resutl 해주는것이다. 예를 들어서 RESULT_MAP 이라는 컬럼을 select로 뽑으면, resultMap으로 바꿔서 Map 결과로 바꿔주는 것이다. 은근히... 사용할일이 많고, 편하다 카멜 케이스도 거의 모든 곳에서 표준이니...
무료로 사용할 수 있는 오픈소스이며, 분산 메모리 캐싱 시스템 DB나 API 호출 또는 렌더링 등에서 받아오는 결과 데이터를 작은 key-value 형태로 메모리에 저장하는 방식 1)장점 필요량 보다 많은 메모리를 가졌을때 시스템으로부터 메모리를 사용하고, 필요로하는 메모리가 부족한 경우 이를 쉽게 더 가져다 사용할 수 있도록 만들어준다. 위 두가지는 memcache를 사용하고, 안하고에 따라 다른 것이다. 사용하지 않는 경우, 각 웹서버가 분리된 메모리에서 할당된 크기만큼 사용할 수 있지만 memcache를 사용하는 경우는 논리적 결합으로 인해 각 웹서버는 전체 메모리캐시만큼 용량을 사용할 수 있다. 메모리 캐시를 사용하는 경우, 모든 서버는 동일한 가상 메모리 풀을 공유한다. 특정항목이 주어졌을때, ..
우선 구조를 살짝 바꿨다. 인터셉터는 그대로두고 한 메서드에서 로그인 하면 Admin type 에 따라서, 다른 view를 띄워주는 방식으로 모델부분이다. SuperAdmin과 NormalAdmin의 두 부분을 나눠서 make하였다. 생성자를 별도로 만들지 않은 이유, 빌더를 만들지 않은 이유는 JPA에서는 메서드명을 생각없이 지으면 나중에 운영관리하기 빡세기 때문,... 무튼 이제 두가지 화면을 구성해야한다. 1. NormalAdmin으로 사용자 정보를받아서, 디비에 넣는것 2. SuperAdmin으로 들어가면, 사용자 정보에 맞춰서 버튼 누르면 다음 사람에게 알림톡 나가는 것 1번부터 해보자 우선 등록을 완료하면, 등록이 완료한다. User에서 statCd 별로 유저를 관리하고 입장전 10. 입장 후..
우선, 요새 회사출근과 기타등등 .. 너무 힘든 개인 업무가 많았어서 잠시 프로젝트를 쉬었다.. 공부도 쉬고... 다시 해보자... 우선 화면 단의 기초 개발 구성이 필요하다. 늘 반복하는거지만 기본적인 화면 구성을 해보자 우선 로그인 컨트롤러다. 위와 같이 로그인 컨트롤러를구현하여, view에서 로그인 호출 로직을 콜하자 성공하면 쿠키에 값을 넣자, 이는 인터셉터에서 체크하기 위함이다. 물론 redis에 넣거나,세션에 넣거나 세션에 넣고 redis에서 키를 관리하는게 일반적이지만 우선은 서비스를 다 만들고 차차 한모듈씩 업그레이드 하는걸로... 위와 같은 방식으로 로그인 체크를 하고, return 해주도록하자 아주 간단하게.. 우선은 구현을 해보자 성공적으로 화면이 돌아간것을 확인했고, 이제 쿠키의 값..
프로젝트의 진행이 조금 더뎌졌다... 이직과 이직한 회사에서의... 신규 기술 학습으로 인해... 무튼 오늘 진행한 내용 별건없지만, 다시 마음을 다잡기로 해서, 다시 첫번째 커밋을 진행하였다. 1) 모델 구현 admin, user admin은 패스워드와 , 아이디 user는 대기를 등록하고 알림메시지를 받을 모델로 구현했다. 자체적으로 PK는 시퀀스로 등록을 했고, admin 의 id,pw는 서로 validation체크를 하지 않게끔 우선은 설계를 하였다. 넣을때 해도되고, 아니면 PK를 추가적으로 잡아도되니... 우선 이렇게 진행을 하기로하였다. 2) 초기 로드시, 기본 관리자 계정 생성 어떻게 보면, 슈퍼 admin이다. 로드할때 특정 아이디와 비번으로 계정을 생성한다. 이는 메모리 디비이기 때문에..
실제 적용된 소스를 보면서 공부를 해보자 우선 대부분의 MSA소스에서, 그렇듯이 실습으로 구현 및 살펴볼 Gateway소스 또한 , config 와 service discovery 서버가 따로 띄워져있다고 가정하자 우선 Gateway 플젝을 생성한다. 이정도 디펜던시 정도만 추가해서 생성한다. 별다른건 없고, 빠르게 라우트를 추가해보자 http://localhost:8080/google/test 로 접속시에, google의 test로 검색했을때의 화면으로 리다이렉트 되게 끔 처리해보자 predicates는 path에 대한 검사이다. 만약 해당 url로 들어오면, googel.com으로 리다이렉트하고, filter를 통해서, requestparam이 추가, https://www.google.com/sear..
Gateway 관련 얕게 구현해봤고, 공부를 대충 해봤다. 이제 개념을 다시 익히고, 다시 공부를 시작해보면서 좀 더 깊게 개발을 진행해보자 API- Gateway는 클라이언트와 백엔드 서비스 사이에 위치하는 리버스 프록시 역할을 한다. 인증, 속도제어, 서킷브레이커,모니터링 등 다양한 공통 관리 모듈을 추가하여, 모든 API들의 관문의 역할을 하는 서비스 이다. 우선 Gateway는 Netty를 사용한다. 모든 요청이 통과하는 곳이기 때문에 성능적인 측면이 매우 중요하며, 기존의 1Thread/ 1 Request방식인 MVC를 사용하면 이슈가 발생한다. Netty 는 비동기 Was이고, 1Thread / Many Request이기 때문에 기존 방식보다 더 많은 요청을 처리할 수있다. 동작 방식은 아래와..
Spring Cloud Gateway란? Spring Reactive 생태계 위에 Spring Cloud에서 구현한 Api Gateway이다. Api gateway? reverse proxy를 향상 시켰다. Netfilix zuul, Amazon Api Gateway, Spring cloud Gateway등이 있다. *Reverse Proxy란? Proxy는 클라이언트와 서버간의 중계기이다. Proxy는 크게 Post Proxy 와 Reverse Proxy, 두가지가 존재한다. Post Proxy란, 사용자가 웹서버에 직접 접근 하는 것이 아니라, Proxy서버를 통해 간접적으로 요청 할 수 있게 해주는 것 Proxy 서버가 사용자 앞에 있는 것을 PostProxy라고 한다. Reverse Proxy는 ..
내가 담당하게 된 서비스 중 API-gateway의 모듈이 추가되었다. API-Gateway에 대해서 설명이 듣던중 서킷 브레이커 패턴에 대해서 듣게 되었고, 정확하게 몰라, 정리를 하면서 공부를 하려고한다. 대부분의 모놀리틱스 환경에서의 어플리케이션이다. 특정 서비스들은 서로를 호출하면서 영향을 주는 관계에 있다. 아니면 gateway를 사용하지 않는 msa의 환경에서도 이렇게 되어있다. 어떤 환경이냐면, 특정 서비스 A에서 B를 호출한다고 가정해보자 B가 행이찼거나 slow 현상이 발생하게 되면, 이는 A의 로드타임에도 영향을 미칠수있다. 두개면 두개로 간단하게 보이지만, 연관된게 점점 더 많아진다면? 더 많은 복잡한 장애가 발생하게 된다. 이를 "장애 전파"라고 한다. 서킷 브레이커는 하나의 패턴에..
유저정보를 관리하던, 테스트를 해보던 간에 JPA 설정 및 데이터베이스 연동은 필수이다. 추후 스프링 시큐리티를 적용하던 Redis로 테스트를 하던 데이터 베이스 연동을 하지 않고는 그냥 추상적인 구현이기 떄문에 우선 부랴부랴 연동 해보자 h2와 JPA를 maven 방식으로 추가해준다. 그리고 application.yml에서 해당 jpa 설정과 h2관련 설정을 추가해준다. 이러면 기동시에 jpa 관련 설정들과 h2의 경로를 알아서 설정해서 개발이 가능하게 Entity 별 테이블관리, JPA사용등등을 하게 해준다. 정상적으로 테스트가 됬는지 엔티티 하나를 생성해서 재기동해보자 JPA 관련 전략이 create이기 때문에 재기동할때마다 테이블이 신규 생성 및 초기화 될 것 이다. 재기동할때 테이블 생성 쿼리가..