### 목차
- [(서문) 개발공정](https://ohhoonim.blogspot.com/2024/02/blog-post_62.html)
- [1. 이벤트스토밍](https://ohhoonim.blogspot.com/2024/02/blog-post_47.html)
- [2. 유스케이스 구현](https://ohhoonim.blogspot.com/2024/02/blog-post_92.html)
- [3. 인프라 테스트](https://ohhoonim.blogspot.com/2024/02/blog-post_39.html)
- [4. UI 구현](https://ohhoonim.blogspot.com/2024/02/ui_21.html) <- 현재문서
## abstract
사용자가 애플리케이션을 이용하는 방법에는 화면(그래픽)을 제공하거나, 명령어 형태가 있다. 여기서는 프로그래밍을 잘 모르는 일반 사용자를 대상으로 하는 웹브라우저 그래픽 UI 구현으로 한정한다.
## tool
- Html / Css / Javascript : 브라우저에서 그래픽 화면을 제공하기 위한 필수 프로그래밍 언어이다.
- Nodejs : Javascript 를 브라우저가 아닌 서버 환경에서도 동작할 수 있게해준다.
- Vuejs : 화면 애플리케이션을 제작하는 프레임워크이다. 화면 애플리케이션을 Front-end라고도 부르는데 Front-end 애플리케이션을 제작하기 위한 프레임워크로는 Reactjs, Angularjs 등이 있다.
- Visual Studio Code : Front-end를 개발할 때 사용하는 대표적인 [[개발용어#^9f3a50|IDE]]이다.
- Typescript : Javascript는 객체 타입 정의와 관련한 문법이 존재하지 않는다. 이를 보완하는 superset 언어이다.
- Chrome Browser : 크롬 브라우저의 dev tool은 개발자를 위한 편의 기능을 제공한다. 브라우저의 개발 도구는 Edge, Firefox, Safari 에서도 사용할 수 있다.
## activity
- UX 디자인
- [[유스케이스 구현]] 공정에서 도출된 유스케이스를 기준으로 사용자가 UI를 이용하는 성향(경험)을 분석하고 적절한 UI 요소들의 배치를 디자인한다.
- UI 구현
- UX 디자인에서 제시한 가이드를 기준으로 컴포넌트를 구현한다. Material Design과 같이 잘 알려진 프레임워크를 사용할 수 도 있다.
- 대부분 유스케이스를 기준으로 화면이 제작되지만 그렇지 않는 경우도 다수 발생한다.
- Back-end의 Api 연결
- E2E 테스트
- Front-end to Back-end
- 전 구간에 대해 실무자가 애플리케이션을 테스트한다.
## output
- 디자인 가이드
- 애플리케이션의 UI에 대한 일관된 가이드를 제공한다.
- UX 컴포넌트
- 공유하여 사용할 공통 컴포넌트이다.
- 애플리케이션 시나리오
- 실 사용자가 애플리케이션을 사용하기 위한 가이드 시나리오이다.
- E2E 테스트에서도 그대로 활용 된다.
- 화면
## 구현사례
- [[회원가입 UI 구현]]
Session 대신 JWT를 사용하는 이유 실 서버는 하나의 인스턴트로만 동작하지 않는다. 서버의 고가용성(high availabliity, HA)을 확보하기 위해 두 개 이상의 병렬서버로 운영하게 된다. 서버가 병렬로 운영되는 상황에서 세션을 사용하면 각 서버간의 세션을 동기화하는 문제가 발생한다. 이를 해결하기 위해 공유 데이터베이스를 이용한 세션공유 기법들을 사용하기도 한다. 서버가 많아지면 세션동기는 더 어렵다. JWT를 사용하면 세션사용으로 인한 서버 자체에 부담도 줄이면서 공유 세션에 대한 관리가 한층 수월하다. 스프링 시큐리티 - SecurityConfig.java session을 사용하지 않도록 설정 jwtAuthFilter 추가 httpBasic 제거 - JwtAuthenticationFilter.java config.filter 패키지에 파일 추가 jwt dependency 추가 (3개). gradle refresh하는 거 까먹지 말기 config.service 패키지에 [JwtService.java](http://JwtService.java) 추가 jwtService와 UserDetailService final field 추가. @RequiredArgsConstructor 까먹지 말기 - config.service.JwtService 소스 참조해서 파일 작성 - controller, service 수정 User 를 리턴하면 pwd가 그대로 노출되므로 AuthResponse와 AuthRequest로 교체 Github https://github.com/ohhoonim/factory.git 유튜브 영상 스프링부트 - 보안 JWT JWT - refresh 토큰과 logout
Inlay Hint > Parameter names java.inlayHints.parameterNames.enabled: literals java.inlayHints.parameterTypes.enabled java.inlayHints.variableTypes.enabled editor.inlayHints.enabled: offUnlessPressed Code lens editor.codeLens: true editor.codeLensFontSize java.referencesCodeLens.enabled java.implementationCodeLens: all ligature 폰트 설정 editor.fontFamily: 'D2Coding ligature’ "editor.fontLigatures": true, 편집기 확대 축소 단축키 설정 zoom 으로 검색 Google Style Formatter 설정 java.format.settings.url https://raw.githubusercontent.com/google/styleguide/gh-pages/eclipse-java-google-style.xml JDK 설정 java.configuration.detectJdksAtStart Language Server JAVA_HOME 설정 java.jdt.ls.java.home Gradle JAVA_HOME 설정 java.import.gradle.java.home Installed JDK 설정 java.configuration.runtimes Static 클래스, 메서드 import java.completion.favoriteStaticMembers "org.springframework.test.web.client.match.MockRestRequestMatchers. ", "...
# 5-Step Architecture Spec 이 문서는 헥사고날 아키텍처를 실무적으로 변형하고, DDD의 전략적 설계를 극대화한 5-Step Architecture의 표준 공정을 정의한다. 샘플 리파지토리 : https://github.com/ohhoonim/smart-factory/tree/main/back/factory-api-module ### Core Philosophy > "Service는 배달부(Messenger)일 뿐, 뇌(Brain)는 **Model**에, 법(Law)은 **Policy**에 둔다." > --- ## The 5-Step Standard Process ### Step 1: 도메인 자아 확립 (Domain Model Discovery) 비즈니스의 핵심 상태와 행위를 관리하는 Aggregate Root(AR)를 정의한다. - **원칙**: 데이터 필드가 아닌 '상태 변화의 규칙'과 '생애주기'에 집중한다. - **핵심**: AR 내부에서만 상태 변경이 가능하도록 캡슐화하며, 외부로부터의 직접적인 필드 수정을 금지한다. ### Step 2: 법전 정의 (Policy Abstraction) 비즈니스 제약 조건 중 변하기 쉬운 규칙(보안, 한도, 계산 로직)을 인터페이스로 추상화한다. - **원칙**: 도메인 모델이 프레임워크(Spring)나 환경 설정에 오염되지 않도록 보호한다. - **효과**: 정책의 변경이 모델이나 서비스의 코드 수정을 유발하지 않도록 결합도를 낮춘다. ### Step 3: 도구 제작 (Activity Implementation) 도메인이 외부 세계와 소통하기 위한 구체적인 기술(DB, Storage, 외부 API)을 구현한다. - **원칙**: 헥사고날의 **Output Adapter** 역할을 수행하며, 기술적 복잡성을 이 계층에 가둔다. - **명칭**: `QueryActivity`(조회), `CommandActivity`(...
댓글
댓글 쓰기