일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 레디스
- Sharding
- 글또
- R Studio
- 인덱스 추가
- 다섯수치요약
- 데이터베이스
- 통계학개론
- 쿼리 실행계획
- DB 파티셔닝
- redis
- 다형성
- 데이터베이스 인덱스
- 복합인덱스
- axis interceptor
- scan
- 히스토그램
- 상자그림
- f45
- 인덱스 순서
- 데이터베이스 파티셔닝
- 오버로딩
- partitioning
- 샤딩
- Retry
- 파티셔닝
- axios
- 그래프
- 오버라이딩
- PostgreSQL
- Today
- Total
목록소프트웨어 공학 (9)
haileyjpark
모노레포를 더 효율적으로 관리할 수 있는 방법을 알아보던 중, yarn에서 제공하는 workspaces라는 도구를 발견하였고, 도입을 위해 몇 가지 시나리오의 패키지 버전 테스트를 진행한 내용을 지난 번 포스팅에 작성하였습니다. 이번 포스팅에서는 지난 번 포스팅에 이어 yarn workspaces의 특징인 호이스팅으로 인해 언젠가 누군가는 겪을 수 있고, 문제로 이어질 수도 있는 상황을 공유해보겠습니다. 본 포스팅에서는 packages 하위에 package-a, package-b 라는 프로젝트가 존재하고, 두 프로젝트가 공통으로 사용하는 서버를 shared-utils로 두는 구조를 예시로 살펴보았습니다. packages ┣― package-a ┣― shared-utils ┗― package-b packa..
모노레포를 효과적으로 관리하는 툴인 yarn workspace를 도입하기 위해, yarn workspace의 호이스팅에 관해 알아보았습니다. 모노레포의 장단점 모노레포의 장점 코드 공유 및 재사용 용이성 : 하나의 저장소에서 모든 코드를 관리하므로 코드를 쉽게 공유하고 재사용할 수 있습니다. 중복된 코드를 최소화하고 효율적으로 유지보수할 수 있습니다. 일관성 유지 : 하나의 저장소에서 모든 프로젝트를 관리하면 일관된 코딩 스타일, 디자인 패턴 및 프로젝트 구조를 적용하기가 더 쉽습니다. 종속성 관리 향상 : 공통된 의존성을 사용할 때, 버전 충돌 및 호환성 문제를 최소화할 수 있습니다. 이로써 프로젝트 간에 일관된 의존성을 관리할 수 있습니다. 테스트 용이성 : 여러 프로젝트 간에 통합 테스트를 수행하기..
* 컴퓨터 구조 수업을 듣고 정리한 내용입니다. 컴퓨터 명령어(instruction)는 컴퓨터가 수행해야 하는 일을 나타내기 위한 비트들의 집합으로 일정한 형식을 가집니다. 컴퓨터의 제어장치는 기억장치에 저장된 명령과 데이터를 읽어서 2진 코드를 해석한 후, 명령어 수행을 위한 마이크로 연산이 이루어지는 데 필요한 제어신호를 제공하는 기능을 수 프로그래머는 컴퓨터의 내부 구조를 이해할 필요 없이 컴퓨터가 수행해야 할 작업을 명시적으로 지시할 수 있도록 해줍니다. 컴퓨터가 2진신호로 작동하기 때문에 컴퓨터가 이해하고 실행할 수 있는 2진신호로 표현된 작업 지시입니다. 컴퓨터에서 명령어를 실행하기 위해서는 명령어의 오퍼랜드(operand)가 필요합니다. 오퍼랜드는 명령어의 실행에 필요한 데이터를 가리키는 주..
오늘은 JAVA를 배우면서 가장 기본적인 개념인 다형성과 이를 구현하는 방법 중 대표적인 오버로딩과 오버라이딩에 대해 알아보았습니다. 다형성이란? 다형성(Polymorphism)은 하나의 타입에서 여러 가지 타입으로 확장할 수 있는 성질을 말합니다. 다형성은 상속, 추상화와 더불어 객체지향 프로그래밍에서 중요한 특징 중 하나로, 다형성을 활용하면 기능을 확장하거나, 객체를 변경해야할 때 타입 변경 없이 객체 생성만으로 타입 변경이 일어나게 할 수 있습니다. 이러한 다형성을 구현하는 방법인 오버로딩과 오버라이딩을 개념과 단순한 사례를 통해 차근차근 살펴보겠습니다. 오버로딩이란? 오버로딩(Overloading)은 자바의 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메소드가 있더라도 매개변수의 개..
운영체제 수업 내용의 CPU 스케줄링 정책 중, 선점 스케줄링 정책과 라운드 로빈 알고리즘에 대해 정리해보았습니다. 선점 스케줄링 정책(preemptive scheduling policy) 선점 스케줄링 정책은 CPU 스케줄링의 한 종류로, 실행 중인 프로세스에 인터럽트를 걸고 다른 프로세스에 CPU를 할당할 수 있는 스케줄링 방식입니다. 현재 실행 중인 프로세스가 완료되지 않았더라도 다른 프로세스가 CPU를 선점하여 실행될 수 있도록 하기 때문에, 여러 개의 프로세스를 동시에 실행할 수 있으며, 우선순위가 높은 프로세스가 먼저 실행되도록 할 수 있습니다. 선점 방식은 높은 우선순위의 프로세스를 우선 처리해야 하는 경우에 유용하기 때문에, 일반적으로 실시간 시스템과 시분할 시스템에서 사용됩니다. 시분할 ..
서문 데이터 양, 데이터 복잡성, 데이터가 변하는 속도 등, 데이터가 주요 도전 과제인 애플리케이션을 데이터 중심적(data-intensive)이라고 말한다. 반대로 CPU 사이클이 병목인 경우 계산 중심적(compute-intensive)이라고 한다. 1장 신뢰할 수 있고 확장 가능하며 유지보수하기 쉬운 애플리케이션 데이터 시스템 데이터베이스, 큐, 캐시 등을 데이터 시스템이라는 포괄적 용어로 묶는 이유 최근에 만들어진 새로운 도구들은 다양한 use case에 최적화됐기 때문에 더이상 전통적인 분류에 딱 들어맞지 않고 분류가 흐려지고 있다. 예를 들어, 메시지 큐로 사용하는 datastore인 Redis가 있고, 데이터베이스처럼 지속성(durability)을 보장하는 메시지 큐인 아파치 카프카(Apac..
최근 Redis의 SCAN 명령어에 대해 알아보고 scanStream을 적용해보았는데, 새롭게 알게 된 것이라 정리해보고자 한다. * 글에 사용된 예시 코드는 TypeScript, NestJS로 작성되었다. 배경 유저가 로그인을 특정 횟수(여기서는 10번이라고 하겠다.)만큼 실패할 경우, 유저의 상태를 블락시키고 유저가 로그인을 할 수 없도록 제한하는 기능을 구현했었다. 이 과정에서 유저 로그인 시에 토큰과 sessionId가 발급되고, Redis와 cacheManager를 사용하여 의 형태로 저장했다. 이 sessionId를 서버와 클라이언트가 주고받다가 로그아웃 또는 유저 블락 시에 해당 sessionId를 redis에서 제거하는 방식이 사용되었다. 이 서비스에서는 동시접속을 허용하고 있었는데, 브라..
팀에 배치되기 전 교육과정 커리큘럼을 진행하면서 아래와 같은 피드백을 받았었고, 피드백을 받았던 부분을 중심으로 에러와 로그 처리 방식에 대해 간단하게 알아보았다. try-catch로 모든 레이어에서 처리해주는 것이 적절할지? 로그는 어떻게 남기면 좋을지? 어느 시점에서 에러/예외처리를 할 것인가? 모든 레이어에서 try-catch문을 쓰지 않더라도, 에러가 발생하는 코드 다음에 있던 코드들은 실행되지 않고, 발생한 에러는 Promise.reject 처리되어 상위 컨텍스트에서 비동기 에러로 처리된다. → 서비스 레이어에서 상위 컨텍스트로 에러를 전파하기 위해 async 함수의 내부를 try-catch로 묶는 것은 불필요한 코드이다. 하지만, controller 레이어는 에러가 발생하거나 성공을 하는 것에..