CS
-
한 학기동안 열심히 후꾸루마꾸루 프로젝트를 말았는데요. 끝나고 나니까 개선할게 좀 보이더라구요. 저희 AI 기반 감정 케어 다이어리 서비스인 "토닥"은 포인트 로그를 조회할 수 있습니다. 포인트는 출석해도 주고, 일기 써도 주고, 댓글 써도 주고사용은 나무 성장 시킬 때 쓸 수 있습니다. 그만큼 분류 기준이 많은데, 로그가 많아지면 사용자가 분류기준으로 검색했을 때 시간이 좀 오래 걸릴 거 같더라구요. MySQL로 EXPLAIN 분석해보니 역시나 조회하려 하면 Full Table Scan이 발생하네요.비용이 상당합니다 아주. 근데 지금 로그에 여러 칼럼이 있습니다.user_id, point_type, point_status, created_at 이 있는데, 어떤 순서로 복합 인덱스를 적용해야할까요? ..
이건 첫 번째 레슨, 복합 인덱스 쓰기한 학기동안 열심히 후꾸루마꾸루 프로젝트를 말았는데요. 끝나고 나니까 개선할게 좀 보이더라구요. 저희 AI 기반 감정 케어 다이어리 서비스인 "토닥"은 포인트 로그를 조회할 수 있습니다. 포인트는 출석해도 주고, 일기 써도 주고, 댓글 써도 주고사용은 나무 성장 시킬 때 쓸 수 있습니다. 그만큼 분류 기준이 많은데, 로그가 많아지면 사용자가 분류기준으로 검색했을 때 시간이 좀 오래 걸릴 거 같더라구요. MySQL로 EXPLAIN 분석해보니 역시나 조회하려 하면 Full Table Scan이 발생하네요.비용이 상당합니다 아주. 근데 지금 로그에 여러 칼럼이 있습니다.user_id, point_type, point_status, created_at 이 있는데, 어떤 순서로 복합 인덱스를 적용해야할까요? ..
2025.07.29 -
프로세스와 스레드란? 프로세스는 운영체제 안에서 실행 중인 프로그램을 뜻하며 다르게 말하면 프로세스는 실행 중인 프로그램의 인스턴스이다. 이때 각 프로세스는 독립적인 작업공간을 가지며 서로 격리되어 관리되기 때문에 서로 영향을 미치지 않는다. 즉 프로세스 A에 심각한 문제가 발생해도 프로세스 B에는 영향을 주지 않는다. 프로세스는 코드 영역, 힙(메모리) 영역, 스택 영역, 그리고 기타(데이터) 영역으로 나뉜다. 코드 영역은 실행할 프로그램의 코드가 저장되는 부분, 힙 영역은 동적으로 할당되는 메모리 영역, 스택은 메서드 호출 시 생성되는 지역 변수 및 반환 주소가 저장되는 영역 그리고 데이터 영역은 전역 및 정적 변수(static)가 저장되는 부분이다. 스레드는 프로세스 내에서 실행되는 작업의 단위로..
프로세스와 스레드 : 컨텍스트 스위칭에 대해프로세스와 스레드란? 프로세스는 운영체제 안에서 실행 중인 프로그램을 뜻하며 다르게 말하면 프로세스는 실행 중인 프로그램의 인스턴스이다. 이때 각 프로세스는 독립적인 작업공간을 가지며 서로 격리되어 관리되기 때문에 서로 영향을 미치지 않는다. 즉 프로세스 A에 심각한 문제가 발생해도 프로세스 B에는 영향을 주지 않는다. 프로세스는 코드 영역, 힙(메모리) 영역, 스택 영역, 그리고 기타(데이터) 영역으로 나뉜다. 코드 영역은 실행할 프로그램의 코드가 저장되는 부분, 힙 영역은 동적으로 할당되는 메모리 영역, 스택은 메서드 호출 시 생성되는 지역 변수 및 반환 주소가 저장되는 영역 그리고 데이터 영역은 전역 및 정적 변수(static)가 저장되는 부분이다. 스레드는 프로세스 내에서 실행되는 작업의 단위로..
2025.03.03 -
트랜잭션은 데이터베이스에서 작업이 수행되는 하나의 단위로 이러한 작업들이 안전하게 수행되는 것을 보장하기 위한 ACID라는 성질이 존재한다. ACID는 순서대로 Atomicity(원자성), Consistency(일관성), Isolation(격리성), Durability(지속성)을 의미한다.Atomicity Atomicity(원자성)은 트랜잭션 내부 연산들이 모두 성공하던지 혹은 모두 실패해야 한다는 것이다. 예를 들어 A 계좌에서 1000원 출금B 계좌로 1000원 입금 위와 같은 트랜잭션이 존재한다면 출금과 입금이 모두 성공하던지 혹은 모두 실패해야 한다.Consistency Consistency(일관성)은 트랜잭션이 성공하면 해당 데이터베이스가 일관된 상태로 유지되는 것을 보장하는 것이다. 만약 트랜..
ACID란?트랜잭션은 데이터베이스에서 작업이 수행되는 하나의 단위로 이러한 작업들이 안전하게 수행되는 것을 보장하기 위한 ACID라는 성질이 존재한다. ACID는 순서대로 Atomicity(원자성), Consistency(일관성), Isolation(격리성), Durability(지속성)을 의미한다.Atomicity Atomicity(원자성)은 트랜잭션 내부 연산들이 모두 성공하던지 혹은 모두 실패해야 한다는 것이다. 예를 들어 A 계좌에서 1000원 출금B 계좌로 1000원 입금 위와 같은 트랜잭션이 존재한다면 출금과 입금이 모두 성공하던지 혹은 모두 실패해야 한다.Consistency Consistency(일관성)은 트랜잭션이 성공하면 해당 데이터베이스가 일관된 상태로 유지되는 것을 보장하는 것이다. 만약 트랜..
2025.02.27 -
REST(Representational State Transfer)는 자원의 표현을 이용하여 상태를 주고받는 것으로, 자원은 소프트웨어가 관리하는 모든 것, 자원의 표현은 자원을 나타내기 위한 이름을 의미한다. 예를 들어 서버가 관리하는 회원 데이터는 Member라 표현할 수 있고, 최근에는 일반적으로 자원의 상태를 나타내기 위해 JSON을 사용한다. 즉, REST는 네트워크 상에서 클라이언트와 서버가 통신하는 방법 중 하나이며 HTTP를 사용한다. 이때 HTTP URI를 사용하여 자원을 명시하고 HTTP METHOD를 통해 CRUD 연산을 적용한다. URI는 Uniform Resource Identifier, 즉 리소스 그 자체를 말하는 것이고, URI는 URL(Uniform Resource Locat..
REST란?REST(Representational State Transfer)는 자원의 표현을 이용하여 상태를 주고받는 것으로, 자원은 소프트웨어가 관리하는 모든 것, 자원의 표현은 자원을 나타내기 위한 이름을 의미한다. 예를 들어 서버가 관리하는 회원 데이터는 Member라 표현할 수 있고, 최근에는 일반적으로 자원의 상태를 나타내기 위해 JSON을 사용한다. 즉, REST는 네트워크 상에서 클라이언트와 서버가 통신하는 방법 중 하나이며 HTTP를 사용한다. 이때 HTTP URI를 사용하여 자원을 명시하고 HTTP METHOD를 통해 CRUD 연산을 적용한다. URI는 Uniform Resource Identifier, 즉 리소스 그 자체를 말하는 것이고, URI는 URL(Uniform Resource Locat..
2025.02.26 -
캐시는 컴퓨터 과학에서 데이터나 값을 미리 복사해 놓는 임시 장소로, 이를 통해 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근할 수 있다. 이러한 캐시를 통해 성능을 향상하고 부하를 감소할 수 있지만 캐시를 사용하는 방식에 따라 서비스에 다른 영향을 미칠 수도 있다.Cache Aside(Lazy Loading) Cache Aside(Lazy Loading) 방식은 캐시 히트, 즉 캐시에 데이터가 존재하면 캐시에서 데이터를 불러오고 그렇지 않으면(캐시 미스) 원본 데이터베이스에서 조회하여 반환하는 방식으로 이때 조회한 데이터를 캐시에 적재한다. 해당 방식은 실제 요청된 데이터만 캐시에 저장하므로 불필요한 캐싱을 줄일 수 있지만, 초기에 대량의 캐시 미스로 인해 데이터베이스에 부하가 발생할 수 있다..
캐싱 전략에 대해캐시는 컴퓨터 과학에서 데이터나 값을 미리 복사해 놓는 임시 장소로, 이를 통해 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근할 수 있다. 이러한 캐시를 통해 성능을 향상하고 부하를 감소할 수 있지만 캐시를 사용하는 방식에 따라 서비스에 다른 영향을 미칠 수도 있다.Cache Aside(Lazy Loading) Cache Aside(Lazy Loading) 방식은 캐시 히트, 즉 캐시에 데이터가 존재하면 캐시에서 데이터를 불러오고 그렇지 않으면(캐시 미스) 원본 데이터베이스에서 조회하여 반환하는 방식으로 이때 조회한 데이터를 캐시에 적재한다. 해당 방식은 실제 요청된 데이터만 캐시에 저장하므로 불필요한 캐싱을 줄일 수 있지만, 초기에 대량의 캐시 미스로 인해 데이터베이스에 부하가 발생할 수 있다..
2025.02.25 -
로드 밸런싱이란? [매일메일] 다중 서버 환경에서 세션 기반 인증 방식을 사용하는 경우 발생할 수 있는 문제점은?세션 불일치 문제란? 기존 서버의 사양을 업그레이드하여 시스템을 확장하는 방식인 스케일 업(Scale-Up)과는 달리 서버를 여러 대 추가하여 시스템을 확장하는 방식인 스케일 아웃(Scale-Out) 사dockerel.tistory.com 이전에 올렸던 다중 서버 환경에서 스티키 세션 방식의 경우 로드 밸런서에 의해 요청이 각 서버에 분배되게 된다. 이를 로드 밸런싱이라 하는데, 이는 애플리케이션에 들어오는 네트워크 요청(트래픽)을 균등하게 분산시키는 것을 말한다. 위 사진과 같이 로드 밸런서는 서버들의 앞단에 존재하며 이를 통해 애플리케이션의 가용성, 확장성 그리고 보안 및 성능을 확보할..
로드 밸런싱에 대해...로드 밸런싱이란? [매일메일] 다중 서버 환경에서 세션 기반 인증 방식을 사용하는 경우 발생할 수 있는 문제점은?세션 불일치 문제란? 기존 서버의 사양을 업그레이드하여 시스템을 확장하는 방식인 스케일 업(Scale-Up)과는 달리 서버를 여러 대 추가하여 시스템을 확장하는 방식인 스케일 아웃(Scale-Out) 사dockerel.tistory.com 이전에 올렸던 다중 서버 환경에서 스티키 세션 방식의 경우 로드 밸런서에 의해 요청이 각 서버에 분배되게 된다. 이를 로드 밸런싱이라 하는데, 이는 애플리케이션에 들어오는 네트워크 요청(트래픽)을 균등하게 분산시키는 것을 말한다. 위 사진과 같이 로드 밸런서는 서버들의 앞단에 존재하며 이를 통해 애플리케이션의 가용성, 확장성 그리고 보안 및 성능을 확보할..
2025.02.21