리액트+리덕스 배우는 중인데 궁금한점

1. 앱 state를 사실상 어느 곳에서나 접근 가능하다는 부분이 싱글턴이랑 같은데 이건 디자인에 문제있는거 아닌지? 예를들면 접근 하지 말아야 할 장소에서 state를 접근 한다던지, 바꾼다던지 이런걸 어떻게 막음?

2. 앱이 커질수록 성능 문제가 심해지지 않을까 싶음 조그만거 바꾸는데도 모든 reducer가 호출되고, 엮여있는 모든 컴포넌트가 호출됨 (다시 랜더하지 않을지라도 랜더할지 말지는 결정해야되자너) 이게 맞게 이해한거임?