22.12.05~12.11

유수민·2022년 12월 12일
0

인사이트

목록 보기
6/15
post-thumbnail

일주일간 나의 흥미를 끈 인사이트는??

📌목록

도서 :
『유난한 도전:경계를 부수는 사람들, 토스팀 이야기』

📌감상

1. CPU캐시의 원리

https://ezbeat.tistory.com/455
캐시에 대한 개념이 약해서 해당 글을 읽는데 이해하기가 엄청 힘들었다. 본 글에서의 내용을 정리하자면
데이터저장 구조 방식으로 Full associate, set associate, direct map이 있다. 캐시라인은 주메모리의 데이터를 읽어들이는 최소단위를 말한다. 캐시는 프로세서의 로드나 스토어 명령이 요구하는 1~8 byte 데이터만을 메모리에서 가져오는 것이 아닌 캐시라인 단위로 모아서 가져온다.
1) full associate
-- 태그 일치 체크 (=데이터 주소와 일치하는지 체크)
-- 전체 체크는 속도가 느리기 때문에 비교회로를 장착해서 일치여부를 병렬적으로 체크한다
-- 주어진 블록을 찾기 위해서는 캐시 내의 모든 엔트리를 검색해야 한다.
2) Direct map
-- 메모리 주소의 중간 비트값을 사용하는 캐시라인을 선택해 액세스할 메모리 주소에 따라 사용할 수 있는 캐시 라인이 정해진다.
-- 캐시 라인의 인덱스 = 메인메모리주소 modify 키시의 라인 개수
-- 단점 : thrashing (캐시 라인 쟁탈에 의한 성능 저하)
modify 계산에 의해 다른 메모리 주소여도 결과값이 같아 같은 캐시라인을 공유하게 되어 나타나는 문제점이다.
3) set associate 방식
direct map이 1-way set-associative cache이다. 즉, set associate은 N-way seet-associative라고 볼수 있다.

2. WAS 프로세스가 다진 마음은 루트와 헤어질 결심

https://yozm.wishket.com/magazine/detail/1811/
루트 계정으로 접근하면 안된다는 것은 aws를 공부하면서 알고 있었지만 루트계정이라는 개념이 was 프로세스에도 있는지 몰랐다. 다른 것보다도 spring boot도 jdk 기반 프로젝트로 jar이나 war파일을 실행하는 프로세스가 was프로세스이기 때문에 루트계정이 존재하고 jar이나 war파일의 소유권을 root가 아닌 서비스계정으로 변경하여 프로세스를 실행하는 것을 이번에 알았다.

3. PostgreSQL Vacuum에 대한 거의 모든 것

https://techblog.woowahan.com/9478/
DB중에 PostgreSQL가 존재한다는 것만 알았지만, 직접 써보지 않아서 잘 몰랐는데 이번 기회에 어떤 것이 있는지 알게 되었다. 무엇보다 놀랐던 것은 Vacuum이다. DB에 GC의 역할을 하는 것이 있다니!!! 그것이 바로 Vaccum이다. Vaccum에 알려면 mvcc를 알아야 한다. mvcc는 multi-version concurrenct control인데 동시에 여러 트랜잭션이 수행되는 환경에서 각 트랜잭션에게 쿼리 수행 시점의 데이터를 제공하여 읽기 일관성을 보장하고, Read/Write간의 충돌 및 lock을 방지하여 동시성을 높일 수 있는 기능이다. 몰랐는데 배부분의 DBMS에서 제공한다고 한다. postgreSQL은 데이터 페이지 내에 변경되기 전과 신규 를 같은 page에 저장하고 tuple별로 생성된 시점과 변경된 시점을 기록 및 비교하는 방식이기 때문에 이전 tuple을 지워야하는 과정이 필요하기 때문에 vacuum이 필요하다. 즉, dead tuple을 정리하기 위한 것이다.

4. 디자인 패턴

https://refactoring.guru/ko
1)싱글턴 : 클래스에 인스턴스가 하나만 있도록 하여 이 인스턴스에 대한 전역접근(액세스) 지점을 제공하는 생성 디자인패턴
-- 장점 : 메모리 낭비 방지.
-- 문제점 : 개방 폐쇄 원칙에 위배. 멀티쓰레드 환경에서는 동시성 문제 발생.
2) 프록시 패턴

  • 사용처
    -- 서비스 객체에 대한 요청들의 기록을 유지하려는 경우
    -- 지연의 초기화 ( 앱이 시작될 때 객체를 생성하는 대신, 실제로 초기화가 필요한 시점까지 지연하기)
    -- 접근제한 ( 어떤 정해진 기준과 일치하는 경우에만 서비스 객체에 요청 전달 )

3) 퍼사드 패턴
수십개의 프레임 워크 클래스들과 작업하도록 할 수 있게 하는 것. 라이브러리/프레임워크/다른 클래스의 복잡한 집합에 대한 단순화된 인터페이스를 제공한다.

profile
배우는 것이 즐겁다!

0개의 댓글