본문 바로가기

728x90

전체 글

(86)
MongoDB의 구조 (1/2) 1. MongoDB의 구조 기본적인 구조는 비슷하나, 명칭이 다르다. NoSQL은 3가지 database가 있다. admin: 권한 부여 & 일부 관리 작업을 하려면 admin Database 접근이 필요하다. local: 모든 인스턴스는 local database를 소유한다. local database 자체는 복제되지 않는다. config: shared cluster에서 각 shard 정보를 저장한다. DBA 입장에서는 admin을 사용하고, local은 멤버 개별적으로 필요한 정보를 저장한다. 운영이 아닌 개발만 하는 경우. 위의 DB가 보일수도 안 보일수도 있다. 2. 왜 대세가 됐을까? RDS에서 하지 못한 걸 했더니 인기가 많아졌다. MongoDB는 Storage Engine이 있는데 데이터가 ..
SQL VS NoSQL 차이 및 MongoDB란? ※ 패스트캠퍼스의 대용량 데이터 & 트래픽 처리 초격차 패키지 강의 내용을 정리한 글입니다. 1. SQL vs NoSQL 현대의 서비스는 너무 복잡해졌고, 다양한 형태의 데이터를 저장해야 한다. 예를 들어서 테이블 형태로 저장해보면. SNS가 인스타그램, 트위터 등. 각각 다르기에 문제가 발생한다. 이런식으로 빈칸이 발생한다. 그러므로 표현이 어렵고, 관리하는 게 힘들다. 그래서 보통 관계형은 정규화를 통해서 이런 문제를 해결한다. 그러나 이러면 단점이 많이 생긴다. 하나의 레코드를 확인하기 위해 여러 테이블을 Join하여 가시성이 떨어진다. 스키마가 엄격해서 변경에 대한 관련 사람이 많이 필요하다. 너무 많은 테이블을 조인하면 성능이 떨어진다. 반면 이러한 SQL을 NoSQL로 만들면 아래와 같은 장점..
SQL 쿼리 성능 향상 방법(1/2) 1. 전체범위 처리 & 부분범위 처리 전체범위 혹은 부분범위 처리라는 단어를 들어본 적이 있는가? 퀴즈를 한 번 내보겠다. SELECT * FROM 테이블명(WHERE절 X) 위의 SQL문은 전체범위일까? 부분범위일까? 정답은 부분범위이다. 테이블 전체를 다 읽으니까 대다수 사람들은 전체범위로 생각한다. 그러나 데이터를 처리하는 입장에서 테이블을 끝까지 가서 화면에 보여줄 필요가 없이, 테이블에 들어가 있는 데이터를 그대로 보여주기 때문에 부분범위 처리가 된다. SELECT를 할 때, SQL 데이터는 한 번에 다 가져가서 보여주는 게 아니라 Array size로 차곡차곡 상자 같은 곳에 담아서 화면에 출력이 된다. 전체 범위 처리는 전체 데이터를 다 읽고, 화면에 보여준다. 반면 부분 범위 처리는 내가 ..
특정 제품만 조작이 가능하게끔 권한 주기. 1. 특정 병원 번호만 어떻게 조작이 가능하게 할 것인가? 이걸 어떻게 구현할지 감이 안 온 나는, 우아한형제들 기술이사 김영한 님의 강의를 평소에 보고 있어서 아래와 같은 조언을 얻었다. 어떤 방법을 사용하든 권한 체크는 서버에서 추가로 해주어야 한다. 병원의 고유 번호(ex.5764)를 가진 사람이 5764번 병원만 정보를 수정하게끔 할 수 있는가 없는가에 대한 판단도 서버에서 모두 계산해서 클라이언트로 내려주는 것이 좋다. 2. 테이블 설계 먼저 아래와 같이 테이블을 설계했다. MemberAuthority 엔티티의 hospitalNo는 병원 번호를 뜻한다. ROLE_MANAGER(병원 관계자) 권한을 가진 사용자만 병원 번호를 가질 수 있다. 멤버는 권한에 따라 여러 개의 권한을 가진다. 예를 들어..
대규모 트래픽 처리를 위한 클라우드 DB 활용 (삼성/쿠팡) ※ 본 내용은 AWS Summit 2023 내용을 정리한 글입니다. 1. 목적별 데이터베이스 현대 Application은 매우 복잡하다. 사용자가 수백만명이고 볼륨이 많이 필요하다. 이로 인해 1개의 DB 운영은 매우 어렵다. 여러 용도에 맞게 DB를 선택하는 게 중요하고, 자신의 시스템에 최적화된 DB를 선택해야 한다. 이를 Cloud Native를 통해 손쉽게 해결할 수 있다. 위의 그림처럼 AWS는 다양한 DB를 제공한다. 2. 삼성의 사례 Rich Communication Service. 삼성의 차세대 메시지 플랫폼에서 하루 5천만 건의 메시지를 처리해야 하는 상황. 모놀리식 아키텍처이고, 클러스터당 1,000,000명의 사용자가 있다. 각 사업자에 대해 10~20개의 클러스트가 있다. 클러스터가..
AWS 네트워킹의 등장과 다양한 기능들 (1/2) ※ 본 내용은 AWS Summit 2023 내용을 정리한 글입니다. 1. AWS 등장 배경 전통적인 데이터센터 네트워크는 아래와 같다. 데이터 센터 연결 라우터/방화벽으로 외부망 연결 전용선, VPN을 이용한 연결 네트워크 보안 방화벽, IP 기반 접근 통제(ACL) 웹방화벽, DDOS 방어 등 확장성/가용성 L4/L7 부하 분산(LB) 개별 장비 업그레이드 재해복구 센터(DR) 추가 연결 위의 인프라를 구축하기 위해서 네트워크 운영자는 고민이 많다. 1) 보안, 2) 클라우드 환경과의 연결성, 3) 새 네트워크 환경에서의 민첩성 이 많은 걸 고려하면서 처음부터 개발한다? 개발, 유지 보수 비용이 장난이 아닐 것이다. 2. VPC Amazon Virtual Private Cloud(Amazon VPC)는..
도커의 원리와 가상화 1. Process 도커를 알아보기 전에 Process에 대해 알아보겠다. 프로세스는 프로그램이 실행된 단위이다. 작업 표시줄에 들어가보면 위의 그림처럼 프로그램이 실행된 프로세스들을 볼 수 있다. 그러면 Chrome이 왜 여러 개 띄어져있을까? Multi- tasking 때문이다. 위의 사진처럼 크롬은 멀티 태스킹을 제공하여 여러 개의 브라우저 탭을 동시에 사용할 수 있다. 이 포스팅은 도커에 관한 포스팅이라서 멀티 태스킹의 자세한 설명은 생략하겠다. 다시 프로세스로 돌아가서 기존에는 프로세스가 위의 사진처럼 실행이 된다. User 계층에서 프로세스가 실행되고, PID는 프로세스 고유의 ID를 나타낸다. Kernel 계층에서 프로세스를 관리하고, H/W 계층에서는 CPU와 RAM에 메모리를 할당받는다...
EC2에 SonarQube 설치 & Jenkins로 코드 분석하기 1. SonarQube란? 소스 코드의 실행 없이 정적으로 프로그램의 문제를 찾는 정적 분석 도구입니다. 지속적인 통합과 분석을 할 때 사용되는 솔루션으로 코드의 품질을 높이기 위해서 코드의 이슈, 복잡성 등을 분석해서 코드가 사용할 수 있는 가용 범위 혹은 문제가 있는 코드를 분석해 줍니다. 버그를 찾는다든가 아니면 취약성 있는 코드를 찾을 수 있다. 또한, 코드 smell을 감지하여 불필요한 코드와 코드의 이상 여부를 체크할 수 있습니다. 이러한 작업을 통해서 코드의 품질을 높일 수 있습니다. 다양한 언어에 SonarQube가 사용이 되고, 특히 CI/CD 부분에서 자주 사용이 됩니다. 2. 프로젝트에 SonarQube 적용 기존 프로젝트의 build.gradle 파일을 수정해줍니다. 기존 plugi..

728x90