콘텐츠로 건너뛰기

리덕스 아키텍처 Best practice

리덕스 아키텍처 Best practice

리덕스를 사용하고 있는 어플리케이션에서 모든 상태관리를 리덕스를 통해 해야 할까? 아니면 적절하게 어떤건 리덕스에, 어떤건 컴포넌트에 저장해놓고 사용하면 될까? 적절하게의 기준은 뭘까? 리덕스 툴킷 공식 홈페이지에서 제시한 리덕스 아키텍처 best practice에 에 대하여 알아보고자 합니다. 리액트에서 state는 두 가지 성격으로 나눌 수 있는데, 전역 state와 로컬 state로 나뉜다고 볼 있습니다. 리덕스는 전역 state상태 관리를 도와주는 툴로 가장 대중적으로 사용되는 라이브러리다.

그리고 리덕스 툴킷은 기존에 리덕스를 작성하기 위해 요구되었던 불편함들을 해소하고 리덕스를 쓰는 표준 방법을 제공하기 위해 만드러진 라이브러리다. 리덕스보다. 사용이 간편하고 보일러플레이트도 더 적다는 혜택이 있습니다.


AWS Config
AWS Config

AWS Config

AWS Resource를 관리하기 위한 용도의 서비스. provides a detailed view of how AWS resources are configured in your AWS account. how resources are related to one another, how they were configured in the past changes over time can apply rules for how those resources are configured. Resource Administration 어떤 리소스가 create, modified, deleted 되었는지를 api polling 없이도 모니터링할 있습니다.

CloudTrail
CloudTrail

CloudTrail

monitors records account activity across your AWS infrastructure, like storage analysis remediation.

이벤트는 AWS Console, AWS CLI, AWS SDK, API 전부 포함됨 EC2에서 호스팅되는 애플리케이션이 호출하는 api 같은 정보는 포함하지 않습니다. 보통 api 호출 이후 15분 정도 시차를 두고 반영됨 Organization trail을 설정하면, 해당 org에 소속된 모든 account의 trail 정보가 자동으로 기록됩니다.

member는 trail 정보를 조회할 수는 있으나, 변경하거나 삭제할 수 없습니다..

AWS Control Tower

Automates Accounts Deployment. 비유하자면 AWS Account Vending Machine. AWS Service Catalog는 runs within one account. AWS Control Tower는 account creation deploy Service Catalog 등등 account에 필요한 것들을 account 생성 시점에 세팅.

Landing Zone을 설정하면, new account가 생성될 때 자동으로 실행할 CloudFormation을 지정할 있습니다.

Manual setting이 필요 없도록 전부 자동화하는 것. 계정의 접근 권한이나 설정을 Standardize할 있습니다.

Build in Docker

지금까지는 Dockerfile 외부에서 빌드를 하고, 빌드된 결과만을 복사해서 쓰는 방법을 살펴봤습니다. 그렇게되면 빌드조차 각 사용자의 영향을 받는다. 빌드 명령어를 각자 다르게 입력 혹은 빌드 환경이 달라진다 따라서, spring boot 빌드 자체도 Dockerfile에 녹이는게 좋습니다. 이로써 얻는 장점은 다음과 같다. 빌드까지 따로 할 필요가 없으니, 하나의 Dockerfile로 진정한 이미지가 완성됩니다.

CI 도구와 통합할 필요가 없습니다.. (연동할 필요가 없습니다.. ) 빌드 명령어 또한 형상관리가 가능합니다. Dockerfile을 작성하면 다음과 같다.

Dashboard UI향상에 이롭게 하는 redux

대시보드처럼 여러가지 수치 데이터를 그래프에 뿌려줘야 하는 경우에 리덕스를 사용하면 좋습니다. 특히 데이터가 자주 fetch되어야 한다면 말입니다. 아래를 보시면 대시보드페이지가 5초마다. 데이터를 fetch한 후 setState함수를 통해 데이터를 업데이트해주고, 이 데이터를 자식 컴포넌트인 그래프 1~4컴포넌트에 물려주고 있습니다. 자식 그래프 컴포넌트들은 부모에게 받은 데이터를 그래프로 그리고 있습니다.

이곳에서 문제점은 setState가 일어날 때 부모 컴포넌트에서 UI리렌더링이 일어난다는 것입니다. 자식 컴포넌트는 부모 컴포넌트가 리랜더링 될 때 함께 리랜더링이 됩니다. 원치않는 깜빡임이 일어날 수 있는 부분입니다.

자주 묻는 질문

AWS Config

AWS Resource를 관리하기 위한 용도의 서비스. 궁금한 사항은 본문을 참고하시기 바랍니다.

CloudTrail

monitors records account activity across your AWS infrastructure, like storage analysis remediation. 더 알고싶으시면 본문을 클릭해주세요.

AWS Control

Automates Accounts Deployment. 구체적인 내용은 본문을 참고 해주시기 바랍니다.