-
Couldn't load subscription status.
- Fork 27
feat: 아키텍처 및 프로세스 개선사항 분석 (ASIS) #7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
rolroralra
wants to merge
1
commit into
next-step:rolroralra
Choose a base branch
from
rolroralra:step1
base: rolroralra
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,96 @@ | ||
| # 요구사항 | ||
| - [x] 담당 하는 업무에서 비효율적인 프로세스나 기술적 개선을 하고 싶은 부분의 현재 구조를 문서화 한다. | ||
| - [x] 비효율적인 부분에 대한 분석내용을 정리한다. | ||
| - [x] 비효율적인 부분에 대한 프로세스 또는 시스템 구조를 그려본다. | ||
|
|
||
|
|
||
| # 🚀미션 | ||
| - 이름 : 김신영 | ||
|
|
||
| # 개선포인트 분석 | ||
| - 절차지향적 프로그래밍으로 구현된 레거시 코드로 인해, 코드 분석에 많은 시간이 소요되고 유지보수성이 떨어진다. | ||
| - 외부 도메인 데이터를 따로 DB에 저장하고 있어서, 동기화 처리 요청이 매일 5~30건 수동으로 처리되고 있다. | ||
| - 개발 업무 진행시, 문서화가 부족하여 개발자들이 서로 다른 방식으로 개발을 진행하고 있다. | ||
| - 현재 테스트 코드가 모두 개발 DB(MySQL)에 의존하고 있어서, 테스트 코드를 실행하기 위해 개발 DB에 접근하는 것이 필수적이다. | ||
| - 개발 DB에 접근하기 위해서는 개발 서버에 접속해야 하고, 개발 서버에 접속하기 위해서는 VPN 접속이 필요하다. | ||
| - 개발 서버에 접속하기 위해서는 개발 서버에 접속할 수 있는 IP를 가진 PC가 필요하다. | ||
| - Github Actions를 통해 CI/CD를 구축하고 있지만, 테스트 코드를 실행하기 위해 개발 서버에 접속하는 과정은 자동화되어 있지 않다. | ||
| - 이에 따라, Github PR을 올렸을 때 자동으로 테스트를 실행하지 못하고 있다. | ||
| - Test Container와 Flyway를 이용하여 테스트 코드를 실행하기 위한 개발 DB를 자동으로 생성하는 방안을 고려하고 있다. | ||
|
|
||
| # 프로세스 | ||
| ## 레거시 코드 유지보수성 관련 프로세스 | ||
| - 도메인 모델링이 제대로 되어 있지 않아서, 기능을 추가하거나 수정할 때 마다 코드 분석에 많은 시간이 소요된다. | ||
| - 기능을 추가하거나 수정할 때 마다, 수많은 if 분기문과 하드 코딩으로 인해 코드가 점점 더 커지고 복잡해진다. | ||
| - 코드 리팩터링을 통해 도메인 모델링을 제대로 하고, 기능을 추가하거나 수정할 때 마다 코드 분석에 소요되는 시간을 최소화하고 싶다. | ||
|
|
||
| ```mermaid | ||
| flowchart TD | ||
| A[기능요청] --> B(해당 기능 코드 분석) | ||
| B --> C(수많은 if 분기문, 하드 코딩) | ||
| C --> D(리팩터링, 도메인 모델링 필요) | ||
| C --> F(요청사항 구현) | ||
| D -- 시간부족 --> E(백로그 생성) | ||
| E --> H(무수히 많은 정리되지 않은 백로그) | ||
| F -- 더 넓어지고 커지는 레거시 코드 --> B | ||
| ``` | ||
|
|
||
| ## 외부 도메인 데이터 동기화 관련 프로세스 | ||
| - 외부 도메인 데이터에 대한 데이터 동기화를 수동으로 처리하지 않고 자동화할 수는 없을까? | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 수동으로 처리하는 시간이 얼마나 소요되는지 측정할 수 있을까요? |
||
| - 안정성, 가용성, 데이터 정합성을 고려하여 어떤 방식으로 구현할 수 있을까? | ||
|
|
||
| ```mermaid | ||
| flowchart TD | ||
| USER_A("연관 도메인 사용자") --> Presentation2 | ||
| USER_B("담당 도메인 사용자") --> Presentation | ||
|
|
||
| subgraph 담당_도메인_서비스 | ||
| Presentation --> DomainService | ||
| DomainService(Domain Service) --> Repository[( Repository )] | ||
|
|
||
|
|
||
| end | ||
|
|
||
| subgraph 연관_도메인_서비스 | ||
| Presentation2(Presentation) --> OtherDomainService | ||
| OtherDomainService(Domain Service) --> Repository2[( Repository )] | ||
|
|
||
| Batch -- 매일 아침 7시마다 데이터 주입 --> Repository | ||
|
|
||
| Repository2 --> Batch | ||
| end | ||
|
|
||
| Repository <-- 데이터 정합성 불일치 --> Repository2 | ||
| ``` | ||
|
|
||
| ## 개발 진행 시 문서화와 테스트 코드 관련 프로세스 | ||
| - 개발 업무 수행시, 개발 문서 템플릿 작성 자동화할 순 없을까? | ||
| - 개발 진행 후, Github에서 PR올릴 때 자동으로 테스트 코드 실행할 순 없을까? | ||
| - Infra 의존성을 최소화하고, 테스트 코드를 실행할 수는 없을까? | ||
|
|
||
| ```mermaid | ||
| flowchart TD | ||
| A[개발 미션 시작] -- 개발 문서 수동 작성 --> 개발_문서_작성 | ||
| 개발_문서_작성 -- JIRA 티켓으로부터 브랜치 생성 --> 개발_수행 | ||
| 개발_수행 --> 배포 | ||
| 배포 --> J(개발 미션 결과 작성: What?) | ||
| J --> K(개발 미션 종료) | ||
|
|
||
| subgraph 개발_문서_작성 | ||
| B(개발 요청 사항 작성: Why?) | ||
| B --> C(개발 진행 계획 작성: How?) | ||
| end | ||
|
|
||
| subgraph 개발_수행 | ||
| direction TB | ||
| E -- 코드 리뷰 반영 --> D | ||
| D(개발 진행) --> F(개발 진행 관련 테스트 코드 수행) | ||
| F --> E(코드 리뷰) | ||
| end | ||
|
|
||
| subgraph 배포 | ||
| direction LR | ||
| G(PR Merge) -- 테스트 코드 수행 X --> H(배포) | ||
| H --> I(모니터링) | ||
| end | ||
| ``` | ||
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
전체 구성원들의 참여가 필요해 보입니다.
리펙토링 이후에도 지속적으로 clean code를 하는 개발문화 정착도 필요해 보이네요.
리더를 하고 있기에 개인적인 개선과제를 이런 개발 문화 정착을 위한 것으로 잡아봐도 좋을것 같긴한데 과정기간동안에 진행 하기는 어려울 것 같긴 합니다.
개선 과제를 선정할때 이런 부분에 대한 의견도 고민해 주시면 좋을 것 같아요.