CS 지식
-
해당 문제는 AWS EC2에 올려 운영 배포 중이던 서버가 중간중간 죽는 문제를 겪게 되면서 이를 해결하기 위해 시도했던 방식들을 바탕으로 글을 작성해보았습니다. 아직도 정확한 원인은 파악하지 못해 계속해서 찾아보고 있는 중이며, 관련된 내용에 대해 의심이 가는 부분이 있다면 댓글로 남겨주시면 감사하겠습니다 :) 1. 문제 상황AWS EC2에 클라우드 환경을 구축하여 NestJS, NextJS, MySQL, Nginx를 Docker를 통해 컨테이너로 띄워 서비스를 운영을 하던 와중이었습니다. 실제 사용자를 받아 운영 중이던 서비스였고 사용자를 정식으로 받기 전부터 3명 정도가 미리 사용해보면서 문제가 되는 부분을 수정하는 느낌으로 미리 QA도 진행하여 성공적으로 서비스 런칭을 하게 되었습니다. 서버 스..
[AWS] 서버가 갑자기 다운되는 문제 (CPU 점유율 100%, Memeory 부족)해당 문제는 AWS EC2에 올려 운영 배포 중이던 서버가 중간중간 죽는 문제를 겪게 되면서 이를 해결하기 위해 시도했던 방식들을 바탕으로 글을 작성해보았습니다. 아직도 정확한 원인은 파악하지 못해 계속해서 찾아보고 있는 중이며, 관련된 내용에 대해 의심이 가는 부분이 있다면 댓글로 남겨주시면 감사하겠습니다 :) 1. 문제 상황AWS EC2에 클라우드 환경을 구축하여 NestJS, NextJS, MySQL, Nginx를 Docker를 통해 컨테이너로 띄워 서비스를 운영을 하던 와중이었습니다. 실제 사용자를 받아 운영 중이던 서비스였고 사용자를 정식으로 받기 전부터 3명 정도가 미리 사용해보면서 문제가 되는 부분을 수정하는 느낌으로 미리 QA도 진행하여 성공적으로 서비스 런칭을 하게 되었습니다. 서버 스..
2024.11.13 -
이 글은 최근 다양한 기업들의 기술 스택을 보면서 GraphQL이 많이 보이는 현상에 대한 궁금증으로부터 비롯되어 왜 요즘 많이 사용되고 있는 기술이며 어떻게 발전되었는지 그 과정들을 함께 살펴보려고 합니다. 1. "API를 위한 쿼리 언어""API를 위한 쿼리 언어" GraphQL 공식문서에 들어가보면 첫 페이지에 대문짝만하게 박혀있어서 가장 먼저 볼 수 있는 문장입니다.GraphQL은 API를 위한 쿼리 언어이며 이미 존재하는 데이터로 쿼리를 수행하기 위한 런타임입니다. GraphQL은 API에 있는 데이터에 대한 완벽하고 이해하기 쉬운 설명을 제공하고 클라이언트에게 필요한 것을 정확하게 요청할 수 있는 기능을 제공하며 시간이 지남에 따라 API를 쉽게 진화시키고 강력한 개발자 도구를 지원합니다.- ..
[CS 지식] GraphQL이 뜨는 이유(feat. RESTful API 와 다른 점은?)이 글은 최근 다양한 기업들의 기술 스택을 보면서 GraphQL이 많이 보이는 현상에 대한 궁금증으로부터 비롯되어 왜 요즘 많이 사용되고 있는 기술이며 어떻게 발전되었는지 그 과정들을 함께 살펴보려고 합니다. 1. "API를 위한 쿼리 언어""API를 위한 쿼리 언어" GraphQL 공식문서에 들어가보면 첫 페이지에 대문짝만하게 박혀있어서 가장 먼저 볼 수 있는 문장입니다.GraphQL은 API를 위한 쿼리 언어이며 이미 존재하는 데이터로 쿼리를 수행하기 위한 런타임입니다. GraphQL은 API에 있는 데이터에 대한 완벽하고 이해하기 쉬운 설명을 제공하고 클라이언트에게 필요한 것을 정확하게 요청할 수 있는 기능을 제공하며 시간이 지남에 따라 API를 쉽게 진화시키고 강력한 개발자 도구를 지원합니다.- ..
2024.11.07 -
1. 들어가며그동안 많은 프로젝트에서 대부분 토큰 방식의 인증 방식을 채택하여 진행을 한 경우가 많았는데, 최근 진행한 프로젝트에서는 세션 방식의 인증을 사용해보았습니다. 카카오 OAuth2 로그인을 제공하는 Spring Security의 강력한 기능으로 백엔드에서도 적은 코드 양으로 구현을 할 수 있었지만 프론트엔드에서 토큰 관리를 따로 해줄 필요가 없다보니 너무 편해서 로그인에 거의 시간을 소모하지 않아 다른 기능에 온전한 집중을 할 수 있어 굉장히 큰 메리트로 다가왔었습니다. 하지만 서버 측에서 관리하는 세션이다보니 k8s 배포 환경에서 여러 가지 문제가 생기는 것을 볼 수 있었는데, JWT를 사용했을 때도 그러한 문제가 전혀 없던 것은 아니었기 때문에 이와 관련된 인사이트를 얻고자 올라온 글 중..
JWT는 안전할까?1. 들어가며그동안 많은 프로젝트에서 대부분 토큰 방식의 인증 방식을 채택하여 진행을 한 경우가 많았는데, 최근 진행한 프로젝트에서는 세션 방식의 인증을 사용해보았습니다. 카카오 OAuth2 로그인을 제공하는 Spring Security의 강력한 기능으로 백엔드에서도 적은 코드 양으로 구현을 할 수 있었지만 프론트엔드에서 토큰 관리를 따로 해줄 필요가 없다보니 너무 편해서 로그인에 거의 시간을 소모하지 않아 다른 기능에 온전한 집중을 할 수 있어 굉장히 큰 메리트로 다가왔었습니다. 하지만 서버 측에서 관리하는 세션이다보니 k8s 배포 환경에서 여러 가지 문제가 생기는 것을 볼 수 있었는데, JWT를 사용했을 때도 그러한 문제가 전혀 없던 것은 아니었기 때문에 이와 관련된 인사이트를 얻고자 올라온 글 중..
2024.10.05 -
🔎진행 및 완료 사항1. 문제 정의: RDBMS를 활용한 데이터베이스 설계 및 최적화의 필요성 및 목적 정의애플리케이션은 날이 갈수록 보다 더 많은 데이터를 수용해야 하고 그러한 수많은 데이터를 효율적으로 저장하고 검색할 수 있는 강력한 데이터베이스 시스템에 의존할 수밖에 없다. 그러나 이러한 데이터베이스 시스템 중에서도 관계형 데이터베이스 관리 시스템(RDBMS)은 데이터의 무결성, 일관성, 안정성 등을 보장하며, 다양한 비즈니스 요구사항을 충족시킬 수 있는 강력한 기능을 제공하여 많이 선택되는 데이터베이스 방식 중 하나이다.하지만, 데이터베이스의 성능이 떨어지면 전체 시스템의 성능에도 큰 영향을 미치기 때문에 데이터베이스의 설계 및 최적화는 매우 중요한 작업이다.RDBMS를 활용한 데이터베이스 설계..
[데이터베이스] RDBMS를 활용한 데이터베이스 설계 및 최적화🔎진행 및 완료 사항1. 문제 정의: RDBMS를 활용한 데이터베이스 설계 및 최적화의 필요성 및 목적 정의애플리케이션은 날이 갈수록 보다 더 많은 데이터를 수용해야 하고 그러한 수많은 데이터를 효율적으로 저장하고 검색할 수 있는 강력한 데이터베이스 시스템에 의존할 수밖에 없다. 그러나 이러한 데이터베이스 시스템 중에서도 관계형 데이터베이스 관리 시스템(RDBMS)은 데이터의 무결성, 일관성, 안정성 등을 보장하며, 다양한 비즈니스 요구사항을 충족시킬 수 있는 강력한 기능을 제공하여 많이 선택되는 데이터베이스 방식 중 하나이다.하지만, 데이터베이스의 성능이 떨어지면 전체 시스템의 성능에도 큰 영향을 미치기 때문에 데이터베이스의 설계 및 최적화는 매우 중요한 작업이다.RDBMS를 활용한 데이터베이스 설계..
2024.09.03 -
1. 분산데이터베이스(Distributed Database) - 1 분산 데이터베이스 데이터가 다른 physical location에 저장되는 데이터베이스 분산 데이터베이스의 장점 Fault tolerance High performance Low cost 해결해야 할 이슈들 data 분산 분산 데이터를 활용한 병렬처리 Distributed Transaction / Distributed Locking Semi join Distributed Database 분산 데이터베이스의 종류 Homogeneous distributed database 각 distributed node에 같은 종류의 DBMS 가 실행 Heterogeneous distributed database 각 distributed node에 다른 ..
[데이터베이스-simple 버전] 10. 데이터베이스 최신기술1. 분산데이터베이스(Distributed Database) - 1 분산 데이터베이스 데이터가 다른 physical location에 저장되는 데이터베이스 분산 데이터베이스의 장점 Fault tolerance High performance Low cost 해결해야 할 이슈들 data 분산 분산 데이터를 활용한 병렬처리 Distributed Transaction / Distributed Locking Semi join Distributed Database 분산 데이터베이스의 종류 Homogeneous distributed database 각 distributed node에 같은 종류의 DBMS 가 실행 Heterogeneous distributed database 각 distributed node에 다른 ..
2023.11.07 -
1. DBMS의 쿼리프로세싱 Query processing Query processing in DBMS Parser SQL 문장을 분석해서 syntax 체크 및 catalog을 이용해서 sematic check등을 하여 annotated AST 생성 Optimizer AST를 분석하여 execution plan을 생성 AST에 따라 가능한 execution plan리스트를 만들고 그 중에서 최저 비용을 가지는 execution plan 을 선택 Rule-Based Optimizer 미리 정해 놓은 rule에 따라 logical access 경로를 비교하며 최적의 plan을 생성 Cost-based Optimizer Plan의 각 실행 operator의 cost를 미리 정해놓고 예상 비용을 계산하여 최적의..
[데이터베이스-simple버전] 9. 쿼리 프로세싱과 최적화(Query processing & Optimization)1. DBMS의 쿼리프로세싱 Query processing Query processing in DBMS Parser SQL 문장을 분석해서 syntax 체크 및 catalog을 이용해서 sematic check등을 하여 annotated AST 생성 Optimizer AST를 분석하여 execution plan을 생성 AST에 따라 가능한 execution plan리스트를 만들고 그 중에서 최저 비용을 가지는 execution plan 을 선택 Rule-Based Optimizer 미리 정해 놓은 rule에 따라 logical access 경로를 비교하며 최적의 plan을 생성 Cost-based Optimizer Plan의 각 실행 operator의 cost를 미리 정해놓고 예상 비용을 계산하여 최적의..
2023.11.07 -
1. 스토리지와 파일구조 DBMS Storage DBMS Storage DBMS는 데이터를 “hard” disk에 저장 Disk access가 DBMS의 성능에 중요한 문제 READ : disk -> main memory 데이터 전송 WRITE : memory -> disk 데이터 전송 higher cost than memory access Main memory에 모두 저장 못 하는 이유 비용문제 메모리에 저장된 데이터는 volatile 효과적인 memory – disk 데이터 전송을 위한 Buffer management 가 필요 DBMS Storage Disk space management DBMS에서 가장 낮은 layer에서 disk의 space를 관리 상위 component에서 다음과 같은 requ..
[데이터베이스-simple버전] 8. 스토리지와 인덱스1. 스토리지와 파일구조 DBMS Storage DBMS Storage DBMS는 데이터를 “hard” disk에 저장 Disk access가 DBMS의 성능에 중요한 문제 READ : disk -> main memory 데이터 전송 WRITE : memory -> disk 데이터 전송 higher cost than memory access Main memory에 모두 저장 못 하는 이유 비용문제 메모리에 저장된 데이터는 volatile 효과적인 memory – disk 데이터 전송을 위한 Buffer management 가 필요 DBMS Storage Disk space management DBMS에서 가장 낮은 layer에서 disk의 space를 관리 상위 component에서 다음과 같은 requ..
2023.11.07 -
1. 트랜잭션 데이터 무결성 데이터 무결성 데이터 무결성을 유지하기 위해 해결해야 할 문제들 Atomic operation Concurrency control (병행 제어) 장애 후 Recovery (회복) Consistent database state 데이터 무결성이 유지되어 데이터베이스안의 데이터간의 모순점이 없는 상태 일시적으로 inconsistency가 발생할 수 있으나 결국은 일관된 값으로 유지되어야 함 예) 은행 계좌 이제 트랜잭션 데이터 무결성을 지킴으로써 데이터베이스를 일관된 상태 (consistent state)을 유지하기 위한 핵심 개념 Transaction Transaction 트랜잭션(Transaction)은 다음의 data processing의 집합을 포함한 atomic opera..
[데이터베이스-simple버전] 7. 트랜잭션 시스템1. 트랜잭션 데이터 무결성 데이터 무결성 데이터 무결성을 유지하기 위해 해결해야 할 문제들 Atomic operation Concurrency control (병행 제어) 장애 후 Recovery (회복) Consistent database state 데이터 무결성이 유지되어 데이터베이스안의 데이터간의 모순점이 없는 상태 일시적으로 inconsistency가 발생할 수 있으나 결국은 일관된 값으로 유지되어야 함 예) 은행 계좌 이제 트랜잭션 데이터 무결성을 지킴으로써 데이터베이스를 일관된 상태 (consistent state)을 유지하기 위한 핵심 개념 Transaction Transaction 트랜잭션(Transaction)은 다음의 data processing의 집합을 포함한 atomic opera..
2023.11.07