일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- JPA공부
- JPA 공부
- 코테공부
- JPA예제
- 알고리즘공부
- 카프카
- 플러터 공부
- 자료구조공부
- DDD
- nestjs공부
- 스프링
- 기술면접공부
- 스프링 공부
- 플러터 개발
- 스프링부트공부
- nestjs
- 프로그래머스
- Kafka
- querydsl
- Axon framework
- 스프링공부
- K8S
- 기술공부
- nestjs스터디
- JPA
- Flutter
- JPA스터디
- 스프링부트
- 코테준비
- 자바공부
- Today
- Total
목록분류 전체보기 (715)
DevBoi
사내 도서대여시스템 이라고 가정하고 모델링 실습을 해보자 요구 사항은 아래와 같다. Miro라는 툴로 이벤트 스토밍을 진행할 수 있다. 온라인 이벤트스토밍 툴이다. Domain Event - 시스템에서 발생하는 중요한 이벤트 - 데이터가 아닌 비즈니스 프로세스에 집중 - 과거형 동사로 표현 Hot Spot - 질문,가정,경고,의견 수렴이 필요한 내용 - 병목 구간,자동화 필요한 수작업, 도메인지식이 없는 경우 - 완전히 정의되지 않은 영역, 해결해야 하는 문제 - 필요한 곳 어디에나 부착 가능 Command - 이벤트를 트리거 하는 명령 - 현재동사로 표현 Actor - Command를 동작하게 하는 사용자/역할 - 사람이나 역할의 이름을 명사로 표현 Policy - 다른 바운디드 컨텍스트에 영향을 주는..
크게 상태가 있거나, 없는 상태로 만들수 있다. Stateless,Stateful 이 두가지 방식으로 개발을 할 수 있다. 아래의 과정을 한번 보자 주문접수자는 주문목록을 가지고 있고, 바리스타는 주문접수자가 넘겨준, 제작 목록에 남겨서 커피를 만들어서 별개의 병행으로 작업을 하고 이벤트로 진동벨에 전달을 한다. 이벤트 생성, 이벤트 대응하는 모듈을 분리하고 상호 독립적으로 동작하여, 병령처리를 촉진한다. 발신자,수신자를 장소와 시간에서 쉽게 분리가 가능하다. 또한 각 모듈간의 필요에 의해 스케일 아웃 등의 확장에용이하고 동기,비동기가 선택이 가능하다. 비동기로 선택했을때 관련 문제들이 발생할 수 있다. - 네트워크 장애, 중요한 순간 서버 장애, 이벤트 순서가 꼬임, 이벤트 중복 등 - 데이터 소실 처..
* 명령 조회 책임 분리 * 커맨드 실행 모델 : 비즈니스 로직 구현, 강력한 일관성 * 읽기 모델 : 인메모리 캐시, 일반 파일, materialized view, 읽기 전용 * 동기화 필요 : 동기식, 비 동기식 * 확장, 읽기 성능,다양한 저장소 커맨드에서 들어온 저장소와, 읽기에서 들어간 저장소가 다른것이 좋은데 이 두개 다른 저장소에 대한 일관성을 유지해주는 것이 좋다. 따라서 쓰기 데이터 저장소와 읽기 데이터 저장소를 분리하지만, 해당 데이터에 대한 일관성은 유지해주는 것이 좋다. 데이터 동기화는 동기식이던, 비동기식이던 필요하다. 두개는 비동기식으로는 메시지 큐를 이용해도되고, CDC를 이용해서 동기식으로 해도된다. 일단 CQRS의 가장 큰 이유는 커맨드에 따른 일관적인 데이터 쓰기 이고 읽..
레이어드아키텍처의 개선방향으로 아키텍처에 대한게 두가지 정도있다. 비즈니스 로직은 내부영역에 놓고, 외부영역에 즉 가변적인 영역을 외부에 놓는다. 클린아키텍처는 아래와 같다. 서비스는 유스케이스에 해당 된다. 원리는 헥사고날과 비슷하다. 가변적인 영역을 외부에 놓고, 비즈니스 로직을 내부에 놓는다. 외부 서비스에서 Aggregate를 호출하고, 혹은 프록시나 이벤트를 사용한다. 서비스는 필요시에 비즈니스 도메인인 Aggregate를 호출하고 이는 엔티티나 VO를 호출하게된다.
마이크로서비스 내부 구조 정의는 어떻게 해야할까 전술적 패턴은 비즈니스 로직을 모델링하고, 구현하는 다양한 방법이다. 가장 고전적인 아키텍처는 3계층으로 구현하는 것이다. 프리젠테이션 레이어, 비지니스 로직 레이어, 데이터 엑세스 레이어 이렇게 3가지 레이어가 존재한다. 레이어드 아키텍처 근접 레이어만 접근 가능하다 Top-down 아래로 의존적이고 순방향이다. 흔히아는 MVC컨트롤러는 프리젠테이션 계층에 속한다. 가장 중요한 계층은 비즈로직 계층이다. 레이어드 아키텍처 다양한 변종이 존재한다. 레이어드 아키텍처는 비즈니스 로직과 데이터 접근 계층간의 의존성이 있다. 비즈 로직 구현이 트랜잭션 스크립트, 엑티브 레코드인 경우 적합한 아키텍처이다. 그렇지만, 결국 데이터 처리에 비지니스 로직이 점점 몰리게..
AWS S3는 참 사용이 간단하다. S3가서 신규 버킷을 새엉하면 되고, 퍼블릭 엑세스를 키면 된다. 다만 주의 할것은 그런다고 누구나 쓰거나 읽을수있는 것이 아니다. 가능하게 하려면 아래의 권한에 스크립트를 넣어야하는데 아래 내용을 넣어주면 된다. { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1405592139000", "Effect": "Allow", "Principal": "*", "Action": "s3:*", "Resource": [ "arn:aws:s3:::innapp/*", "arn:aws:s3:::innapp" ] } ] } 이렇게 되면, 누구나 사용이가능하게끔 가능하다. S3에 디렉토리 처럼 업로드가 가능하고, 이 업로드한 내용을 S..
1. 앱 식별자 등록 developer.apple.com > 식별자 관리 > Bundle Id에 대한 추가를 해줘야 한다. 아래와 같이 만들고, 새앱으로 이동해준다. 2.신규 앱 등록 해당 신규 앱을 추가하면, 아까 식별자로 등록한 번들 ID가 목록에 노출되며, 등록이 가능하다. 테스트 플라이트 화면을 보면 빌드를 업로드 해야하는데, 이때 Flutter 를 사용해서 빌드를 올리는 법을 알아보자 어차피 테스트던 릴리즈던 전부 같은 빌드 파일을 생성해야한다. 1. 디펜던시 설치 flutterproject / ios / 하위의 경로에서 아래 명령어로, 필요한 디펜던시를 깔아준다. pod install 2. 프로젝트 폴더 이동 후 Runner.xcworkspace를 입력해서 xcode를 열어준다. Product..
Guard는 허용된 유저가 아니면, 요청 자체를 막아버리는 것이다. 서버의 리소스를 허용된 유저가 아니면 사용할 수 없도록 하는 것이고, 서버의 자원 낭비를 막을수 있게 된다. decorator 문법을 사용하고, ts에서 실험기능에 포험되어있다고한다. 일단 가이드로 통용되고있는 구현체를 구현해보자 Guard의 기본로직은 아래와 같다. 1. 회원가입 2. 사용자 정보와 대응하는 jwt생성 3. 사용자가 서버에 요청을 보낼때 Header에 jwt를 담아서 보낸다. 4. Guard에서 확인 5. 유효한 값이면 통과, 아니면 에러를 일으킨다. 1. Authorization guard 사용자 인증은 가드의 대표적인 예시이다. AuthGuard는 사용자의 헤더에 특정 토근이 제대로 들어있는지를 확인하는 것이다. G..
일단 플러터 기반으로 빌드함. 옛날에는 스무스하게 진행했는데, 다시 해보니까 바뀐것도 좀 있고 그래서 이슈가 많음 그래서, 정리함 나중에 또 고생하기 싫은 나를 위해... 콘솔 플레이스토어 접속 및 앱을 만듬, 패키지 정보를 넣는거나 기타 앱 정보를 넣는 그런건 인터넷에도 많고 그냥 찾아서 할 수 있음 중요한건 appbundle을 빌드하는데 오류가 많음 Appbundle 빌드 1. 키 생성 이렇게 생성하지 않으면, 나중에 빌드할때 알고리즘 관련 이슈가 발생함 keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key -storetype JKS 빌드 파일 관련된 내용은 크게 아래와 같음 app/buil..
잘 없는 내용이 길래... 공식문서를 봐도 잘 없고 무튼 키클락 사용하다가, 보안 쪽 관련 설정할게 있었다. 로그인 실패횟수 초과시 계정을 잠그는 거다. 키클락 관련 설정을 찾아봐도, 뭔가 이렇다할 글이 없어서 적는다. 대부분 브루트 포스 공격 (무차별 대입)을 막기 위해서 많이 방어를 하는데, 키클락을 사용하면 이걸 별도로 개발해야할까? 제공안할까? 찾아본 결과 제공한다. 해당 /auth/admin 콘솔로 들어가게 되면, Realm Settings가 있고, 해당 하위에 Security Dfense가있다. 여기서 브루트 포스 에대한 설정을 키면, 아래와 같이 로그인 실패 횟수에 대한 방어를 할 수 있다. max를 5로 두고, 실패시 1분을 기다리고 테스트 해보자 실패를 하면, 아래와 같이 계정이 잠겨서 ..