SpringSecurity MockMvc테스트시 발생

MockMvc 설정

//            val delegatingFilterProxy = DelegatingFilterProxy()
//            delegatingFilterProxy.init(MockFilterConfig(context.servletContext, BeanIds.SPRING_SECURITY_FILTER_CHAIN))
            this.mockMvc = MockMvcBuilders
                .webAppContextSetup(context)
//                .apply<DefaultMockMvcBuilder>(springSecurity())
//                .addFilters<DefaultMockMvcBuilder>(delegatingFilterProxy)
                .addFilters<DefaultMockMvcBuilder>(CharacterEncodingFilter("UTF-8", true))
                .alwaysDo<DefaultMockMvcBuilder>(MockMvcResultHandlers.print())
                .build()

test 설정

@WithMockKeycloakAuth(~~~)
@WithUserDetails("user1")
@Test
fun test() {
}

상태? 문제?

  1. Header인증을 사용하는 경우 no header -> jwt같은건 직접 header에 넣어줘야한다
    그렇다면 @Withannotation을 사용하기 힘들다는 뜻
  2. controller에 parameter로 Authentication을 받는경우 null – null… 어떻게 하지?
    SecurityContextHolder, TestSecurityContextHolder엔 들어있다
    WithSecurityContextTestExecutionListener: TestExecutionListener은 동작된다.
    principal = TestSecurityContextHolder.getContext()
  3. ???또 뭐가 있었던가

서비스 규모에 따른 인프라 결정

개요

경험이 없는 팀은 서비스 초반에 인프라 결정장애를 겪는다

좋아보이는거 다 쓰면 정말 끝도 없다 이슈해결도 안되고

잘 하는 인프라가 있는 경우 상관없지만
아닌 경우에 따를 수 있는 규칙

쿠버네티스는 관련인프라 필요한게 너무 많다

인프라 결정 기준

  • 개발인원에 따라 1~5인, 10인, 100인…
  • 서비스 사용자 규모 100명, 1000명
  • 인프라 비용
  • 무정전 서비스가 필요

다양한 요건이 있는데 인프라 비용에 따라 결정하는게 속편하고 빠르다.

기준도 명확하고
기준을 넘어서는 경우 다음 단계로 올라가기 위한 작업을 하면 된다

결정이고 뭐고 필수사항

  • Container – 보통 Docker
  • IaC – 인프라 코드화
  • Git – github을 많이 쓰는데 gitlab.com은 무료에 빠르다
  • 로깅 – Sentry

인프라 월비용에 따른 결정

간단한 웹서비스의 경우

무료 ~ 30만원

헤로쿠 heroku.com

30만원 ~ 100만원

서서히 기술욕심이 생기는 단계
매니지드 k8s를 사용해볼만하다
헤로쿠는 국내서버 제공이 안되고 느리기도 하니까

GCP, AWS, AZURE, DigitalOcean 매니지드 k8s

금지항목

  • EB(ElasticBeanstalk)
  • ECS
  • GoogleAppEngine

위 항목은 속터지는 것에 비해 편리하지 않다

CloudFunctions, Lambda 등은 생각보다 설계 자체가 어렵고 디버깅도 어렵고 관리도 힘들다
연습용 으로 한두개 추가하기는 괜찮느데 초기 서비스에는 오히려 적합하지 않다

100만원 ~ 1000만원

서버 비용을 걱정하기 시작해야 할 단계

중소 클라우드 업체랑 계약 잘 하면
몇달정도 공짜로 쓰게 해준다
다 쓰고나서 눌러앉아도 되고 옮겨도 된다
어차피 k8s는 다 있으니까 상관없다

네이버 클라우드같은 경우는 IaC가 잘 안되는 문제가 있다.
많이 쓰는 TerraForm 지원이 거의 없다.

서버 API는 잘 돼 있긴한가 모르겠다

1000만원 ~

멀티클라우드

[도서] 도메인 주도 설계로 시작하는 마이크로서비스 개발, 핵심 개념과 패턴, 설계, 구현으로 배우는 DDD와 MSA

깊은 지식을 얻는다기보다는 그냥 관련기술을 훑어보기 좋다

DDD 이론서 보고 어떻게 할지 모르겠는 사람들을 위한 책이라고 봐야하려나

기존에 좀 하고 있던 사람들에게는 별로 얻을건 없고

다른 사람도 같은 고민을 하고 있었구나 하는걸 알 수 있다

주요내용

아키텍처

  • 레이어드 아키텍처
  • 헥사고날 아키텍처
  • 클린 아키텍처

https://engineering-skcc.github.io/microservice%20inner%20achitecture/inner-architecture-2/

이벤트 스토밍

도메인 이벤트Orange발생한 사건 pp로 표현
커맨드Blue도메인 이벤트 트리거
외부시스템Pink도메인 이벤트가 호출하거나 관계가 있는 레거시 또는 외부 시스템
액터Yellow개인 또는 조직의 역할
애그리거트Yellow도메인 이ㄴ트와 커맨드가 처리하는 데이터
상태가 변경되는 데이터
정책Lilac이벤트 조건에 따라 진행되는 결정
when, then
읽기모델Green도메인 이벤트 엑터에게 제공되는 데이터
사용자 인터페이스White스케치 형태의 화면 레이아웃
핫스팟Purple의문, 질문, 미결정 사항

jhipster

추천도서

아키텍처

  • 마이크로 서비스 패턴
  • 클린 아키텍처
  • 엔터프라이즈 애플리케이션 아키텍처 패턴

개발 프로세스

  • 소프트웨어 장인

설계

  • UML 패턴의 적용
  • 도메인 주도 설계, 위키북스 2011
  • 도메인 주도 설계 핵심 이론, 에이콘 2017
  • 도메인 주도 설계 철저 입문, 위키북스 2020
  • Introducing Event Storming, Leanpub 2019

개발영역

  • 자바 ORM 표준 JPA 프로그래밍, 에이콘 2015