전체 글

기분이 좋아지는 가장 쉬운 방법은 할 일을 하는 것이다
TIL

23.09.01

1. 책 [가상 면접 사례로 배우는 대규모 시스템 설계 기초]의 [2장. 개략적인 규모 추정]을 읽었다. 📍개략적인 규모 추정 보편적으로 통용되는 성능 추시상에서 사고 실험을 행하여 추정치를 계산하는 행위 어떤 설계가 요구사항에 부합할 것인지를 보기 위한 것 📍 2의 제곱수 데이터 볼륨의 단위를 2의 제곱수를 표현하면 어떻게 되는지를 우선 알아야 한다. 1바이트 = 8비트 (최소 단위)(ASCII 문자 하나가 차지하는 메모리 크기) 축약형 2의 제곱 근사치 이름 1KB 2^10B 1,000(1천) 1킬로바이트 1MB 2^20B 1,000,000(1백만) 1메가바이트 1GB 2^30B 1,000,000,000(10억) 1기가바이트 1TB 2^40B 1,000,000,000,000(1조) 1테라바이트 1PB..

TIL

23.08.31

1. (어제 듣다 남은) 영한님의 JPA 활용2편의 [섹션 4 : API 개발 고급 - 컬렉션 조회 최적화] 강의를 들었다. 📍 v3.1 엔티티를 DTO로 변환 - 페이징과 한계 돌파 컬렉션을 페치 조인하면 페이징이 불가능하다. 컬렉션을 페치 조인하면 일대다 조인이 발생하므로 데이터가 예측할 수 없이 증가한다. 일대다에서 일(1)을 기준으로 페이징을 하는 것이 목적이다. 그런데 데이터는 다(N)를 기준으로 row 가 생성된다. Order를 기준으로 페이징 하고 싶은데, 다(N)인 OrderItem을 조인하면 OrderItem이 기준이 되어 버린다. 이 경우 하이버네이트는 경고 로그를 남기고 모든 DB 데이터를 읽어서 메모리에서 페이징을 시도한다. 최악의 경우 장애로 이어질 수 있다. 그러면 페이징 + 컬..

TIL

23.08.30

1. [가상 면접 사례로 배우는 대규모 시스템 설계 기초]의 [1장. 사용자 수에 따른 규모 확장성]을 읽었다. 이 책 진짜진짜 재밌다!! 너무 재밌고 어렵지도 않아서 술술 읽히고 즐겁다 ㅎㅎㅎ 📍 어떤 데이터베이스를 사용할 것인가 관계형 데이터베이스 (RDBMS) .. join 아무래도 보통 얘를 쓴다 비 관계형 데이터베이스 (NoSQL) NoSQL이 바람직한 상황 아주 낮은 응답 지연시간(latency) 요구될 때 다루는 데이터가 비정형(unstructured)라 관계형 데이터가 아닐 때 데이터(JSON, YML, XML 등)를 직렬화하거나 역직렬화 할 수 있기만 하면 될 때 아주 많은 양의 데이터를 저장해야할 때 📍 수직적 규모 확장 vs 수평적 규모 확장 scale up (수직정 규모 확장) : ..

TIL

23.08.29

1. 3번째 레벨 인터뷰를 진행했다. 우테코에서는 매 레벨을 마무리하며 '레벨 인터뷰'를 진행한다. 레벨 인터뷰란 각 레벨에서 학습한 내용을 인터뷰 형식으로 진행하는 말하기 활동이다. 📍 받은 질문 - 팀 서비스 소개 - 톰캣의 JSESSIONID를 사용했는데 이게 무엇인가요? 또한 어떻게 사용했나요? - 토큰 대신 세션을 사용한 이유는? - 세션 클러스터링을 만드셨나요? 세션 클러스터링을 적용한다면 어떻게 적용할 예정이었나요? - 인프라 구조에 대해 간략히 설명해주세요 - 젠킨스를 사용한 이유는? - 젠킨스에서 사용한 플러그인은 무엇인가요? - DB 서버 안에서 운영 DB와 개발 DB가 함께 있는데 어떻게 각각의 DB에 연결되도록 설정했는지? - 스프링 트랜잭션의 유의사항이 무엇이었나요? 어떻게 해결했..

TIL

23.08.28

1. 우테코 레벨3에 대한 레벨로그를 작성했다. 레벨3은 팀 프로젝트를 진행해서인지 뭔가 학습보다는 적용?실제 개발?위주로 진행한 것 같아서 레벨로그를 어떻게 써야할지 고민했다. 지난 2달간의 todo mate를 슥 보며 내가 공부한 토픽들을 나열해보았다. 최종적으로 제출한 레벨로그는 다음과 같다. JPA 영속성 컨텍스트 : 엔티티를 영구 저장하는 환경 1차 캐시 영속 엔티티의 동일성 보장 쓰기 지연 변경 감지 (더티 체킹) 지연 로딩 flush : 영속성 컨텍스트의 변경내용을 db에 반영 (쌓아놨던 sql들을 db에 전송) 스프링 트랜잭션 유의사항 트랜잭션 전파 옵션 톰캣의 JSESSIONID 인프라 CI/CD 구축 DB정보 숨기기 NGINX 모니터링 기타 인증 vs 인가 세션 vs 토큰 OAuth s..

TIL

23.08.27

1. (어제 듣다 남은) 영한님의 스프링 DB 1편 [섹션 6 : 스프링과 문제 해결 - 예외처리, 반복] 강의를 들었다. 스프링의 예외 추상화를 자세히 본 건 처음이라 신기했다!! 📍 스프링의 데이터 접근 관련 예외 추상화 스프링은 데이터 접근 계층에 대한 수십 가지 예외를 정리해서 일관된 예외 계층을 제공한다. 각각의 예외는 특정 기술에 종속적이지 않게 설계되어 있다. 따라서 서비스 계층에서도 스프링이 제공하는 예외를 사용하면 된다. 예를 들어서 JDBC 기술을 사용하든, JPA 기술을 사용하든 스프링이 제공하는 예외를 사용하면 된다. + JDBC나 JPA를 사용할 때 발생하는 예외를 스프링이 제공하는 예외로 변환해주는 역할도 스프링이 제공한다. 예외 최상위 계층은 org.springframework..

TIL

23.08.26

앞으로는 티스토리에 TIL을 올리려고 한다! 아자아자 화이팅~ 1. '실행중인 도커 컨테이너의 포트포워딩 변경`에 대한 글을 썼다. 레벨3 막바지에 로그 모니터링을 도입하는 과정에서 필요했던 내용! 당시에 이미 구축한 젠킨스 파이프라인을 다시 처음부터 만들어야할까봐 엄청 긴장상태로 진행했던 기억이 난다.. 근데 도커 너무 재밌어보인다. 레벨4 때 도커를 좀 더 본격적으로 사용해볼 수 있으면 좋겠다. https://velog.io/@hanueleee/Docker-%EC%8B%A4%ED%96%89%EC%A4%91%EC%9D%B8-%EB%8F%84%EC%BB%A4-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88%EC%9D%98-%ED%8F%AC%ED%8A%B8%ED%8F%AC%EC%9B%8C..

오잉머신
오잉의 공부 기록