본문 바로가기

내일배움캠프 Node 4기/TIL

내배캠 12/29 TIL

3 layered architecture

- 어플리케이션 설계시 3층으로 나누어 설계하는 방식을 일컫는다

 

내가 지금 공부하는 Node에서의 3계층은

리포지토리, 서비스, 컨트롤러 이 셋으로 나누어 서버를 관리한다는 뜻인데

 

리포지토리는 DB접근관련 파트로, 서비스는 비즈니스 로직, 컨트롤러는 라우터 관련 한 기능을 따로 구현해 관리하는 방식이다.

 

로직을 함수나 Class로 만들어 export한 다음 사용하면 

해당 파트에 수정사항이나 오류 발생시 그저 해당 부분만 고치거나 수정하면 되므로 편리하고, 이번 팀 프로젝트에서 실시한 테스트코드 작성시에도 기능별로 테스트를 진행할수 있기 때문에 수월하다.

 

이번 팀 프로젝트에도 이 방식을 이용해 진행할 것이다

Cache 

이 역시 효율적 자원운용(귀차니즘)의 고려로 탄생한 개념이다

일반적으로 CPU의 성능향상을 위해 고안되었는데,  자주 쓰이는 데이터를 굳이 메인 메모리까지 가지 않고, 캐시에 저장하고 쉽게 (빠르게) 이용하기 위한 일종의 서브 메모리라고 생각하면 된다.

 

최근 CPU 코어 갯수의 증가로 인해 다중 코어 즉 다중 캐시 방식이 보편적인데, 쿼드코어의 경우 
코어 1 부터 코어 4까지 각각의 캐시메모리와, 코어 1,2 코어 3,4를 담당하는 2층 캐시,
코어 1~4까지 모두 담당하는 3층 캐시같이 다층형 캐시를 사용하는데, 당연히 층수가 높아질수록 크기도 커질 뿐더러, 캐시 미스(원하는 자료가 캐시에 없음)가 발생할 확률도 적지만, 레이턴시(Latency) 즉 접근속도는 느려지기 마련이다. 

여기서 또한 발생한 문제가 캐시 코히런스 문제인데, 각각 코어에 붙은 캐시들이 메모리에 있는 어떠한 변수(예를들어 1234)를 모두 캐싱했는데, 값이 업데이트가 되어 1111로 변하였지만, 쿼드코어 캐시들 중 한곳만 업데이트가 되고, 나머지는 이전 업데이트의 값으로 유지가 되고 있으면 여기서 '불일치'현상이 발생하는 것이다. 이는 MSI 프로토콜로 해결이 가능한데, M 은 Modified, S는 shared I 는 Invalid 상태라는 뜻이다.

 

예를들어 코어1, 코어2가 S상태로 아무 문제없이 있다가, 한쪽이 값을 갖게되거나 수정이되면, 해당 코어 2를 가정하여 코어 2는 M상태로 변경이 된다. 그와 동시에 다른 캐시들에게 '나 캐시 바꿨으니까 캐시 물어봐도 아무것도 하지마!'라고 I상태로 변환되는 일종의 통제를 하고, 다른 캐시들도 똑같이 변경되면 다시 S상태로 돌아오게 된다.

'내일배움캠프 Node 4기 > TIL' 카테고리의 다른 글

내배캠 1/26 TIL  (0) 2023.01.26
내배캠 12/30 TIL  (0) 2022.12.30
내배캠 12/28 TIL  (0) 2022.12.29
내배캠 12/27 TIL  (0) 2022.12.29
내배캠 12/26 TIL  (0) 2022.12.26