본문 바로가기

AWS 기본 환경 실습

(10)
4. DB 서버 병목 원인과 대책 DB 서버 병목의 경우에도 각각의 원인은 다음과 같이 분류할 수 있다. ㅇ DB 설계 문제 ㅇ DB 사용 애플리케이션 문제 ㅇ 서버 리소스 부족 어느 경우에서도 먼저 실제 실행 시간이 걸리는 쿼리를 찾아내는 것이 가장 중요하다. ㅁ DB 설계 문제 실행 속도를 떨어뜨리기 쉬운 패턴을 3가지 꼽으라면 다음과 같다. ㅇ 인덱스 문제 인덱스 설정이 잘못되면 RDB는 매우 비효율적으로 실행된다. MySQL의 경우 SHOW CREATE INDEX로 테이블에 생성된 인덱스를 확인할 수 있다. 인덱스를 생성하는 칼럼의 기준은 다음과 같은 내용이 있지만, 실제 쿼리 실행 계획을 EXPLAIN으로 확인하면서 필요한 인덱스를 추가한다. * WHERE 절 조건으로 자주 사용되는 칼럼 * JOIN 키가 되는 칼럼 * Card..
3. 캐시 서버 병목 원인과 대책 캐시 서버가 병목이 되는 경우는 다음 두 가지이다. ㅁ 캐시 사용 방법 문제 캐시 사용 시에 웹 서버와 캐시 서버간 지속적인 접속을 사용하지 않았을 때 캐시 서버 족 CPU 리소스 사용률은 낮은 수준을 유지하지만, 캐시 사용 부분의 latency가 느려져 전체 시스템에 영향을 주는 경우가 있다. 이런 경우 캐시 서버 접속에 있어 지속적인 접속 사용을 검토하는 것이 좋다. ㅁ 서버 리소스 부족 * CPU 리소스 부족 * 메모리 리소스 부족 캐시 서버 리소스를 모니터링했을 때 CPU나 메모리 리소스 부족이 확인되면 캐시 서버의 스케일 업 또는 스케일 아웃을 검토하기 바란다. 그리고 캐시 서버의 스케일 업이나 스케일 아웃은 온라인 상태에서는 어렵고 구성 변경 중에는 캐시가 히트하지 않는 상황이 발생하기 때문에..
2. 웹 서버 병목 원인과 대책 웹 서버가 병목인 경우 다음과 같은 내용을 위에서부터 순차적으로 확인한다. 이 순서는 대책 방안을 적용했을 대 영향도가 큰 순서로 정렬한 것이다. 웹 서버를 튜닝하고 병목을 제거하면 웹 서버 Throughput이 향상 되기 때문에 웹 서버보다 저렴한 인스턴스와 더 작은 인스턴스 수로도 시스템 전체로 보게 되면 같은 성능을 낼 수 있게 된다. - 운영체제와 미들웨어 설정 문제 - 웹 프레임워크 문제 - 애플리케이션 문제 - 서버 리소스 성능 부족 ㅁ 운영체제와 미들웨어 설정 문제 Apache와 Nginx 등의 HTTP 서버나 사용 중인 프로그래밍 언어 설정을 수정한다. ㅇ TCP 포트 부족 테스트 도구와 같이 웹 서버에서 외부 서버(DB 서버나 웹 서버)와 통신을 할 때 많은 부하가 장시간 발생하면 TCP..
1. 부하 테스트 도구 병목 원인과 대책 단게별 테스트에서 병목이 부하 테스트 도구에 있다고 해도 그 원인은 다양하고 원인별 대응 방법도 다르다. 여기서는 대표적인 원인과 처리 방법을 소개 한다. ㅁ 서버와 부하 테스트 도구 설정 준비 부족 이 경우는 다음과 같은 패턴이 있다 ㅇ 파일 디스크립터 부족 파일 디스크립터(DESCRIPTOR)란 프로그램이 접근하는 파일이나 표준 출력에 할당된 식별자를 말한다. 부하가 없을 때는 문제가 되지 않지만, 많은 부하가 연속적으로 발생하게 되면 Linux에서는 부하 테스트 도중에 테스트 도구에서 사용할 수 있는 파일 디스크립터가 부족해 질 수 있다. 파일 디스크립터가 부족하게 되면 파일 오픈이 안되는 에러가 발생하지만, ulimit 명령어를 사용하여 해당 셀(shell)에서 사용 가능한 파일 디스크립터 수를 ..
S3 Bucket object lock Test object lock 설정을 적용한 s3의 bucket이 바로 삭제되는지 확인을 위한 테스트를 진행한다. 결론은 아래와 같다. Step Versioning Object 파일 보유시 bucket 삭제 가능 파일 전체 삭제 시 bucket 삭제 가능 Empty Bucket 후 삭제 가능 1차 Enable Enable 불가 불가 가능 2차 Enable Disable 불가 불가 가능 3차 Disable Disable 불가 가능 가능 아래는 테스트 이력 1차. Versioning + Object Lock Enable ㅁ Bucket 이름 : delete-test-bucket-versioning-lock 으로 생성 아래는 구성 내용 확인 ㅁ 해당 bucket에 폴더 생성 후 파일 2개 업로드 ㅁ 삭제 시도 ㅁ 파일..
03. AMI를 통해 EC2 생성 기존에 만들었던 AMI를 통해 신규 EC2를 Private 망에 생성해 보자 구성은 아래와 같다. bastion은 이미 존재하고 bastion을 통해 만든 AMI를 통해 신규 서버를 private 망에 구성한다. AMIs에서 Launch를 클릭한다. ㅇ VPC: sdshim-vpc-01 (기존에 구성했던 VPC) ㅇ subnet: private-subnet-a-01 (private망으로 구성한 subnet) ㅇ network interface IP: 고정 IP 기반이 아닌 DHCP로 설정 (Auto-Assign) ㅇ IAM: 다른 자원 사용시 적절한 권한 부여 필요, 이번에는 불필요하므로 현재는 생략한다. User data 부분은 아래와 같이 설정 #!/bin/bash sudo yum -y update ..
02. VPC에서 기본 서버 구성 기본 서버로 먼저 Bastion Host 서버를 구성해 보고 이 서버로 Amazon EC2의 Default Image인 AMI를 생성한다. 해당 서버는 public subnet에 구성하여 외부에서 접속하도록 하고 이 서버를 통해 모든 Private subnet에 있는 리소스에 접속할 수 있도록 한다. 전체적인 Flow는 ㅇ EC2 생성 (key-pair 포함) ㅇ EIP 할당 ㅇ EC2 접속 및 유저 설정 (신규 게정 생성, 패스워드 로그인 설정) ㅇ AMI 생성 이다. AWS > Service > ec2 로 검색하여 Lauch Instances를 Click하여 최초 생성으로 들어간다. ec2 생성은 1. Choose AMI > 2. Choose Instance Type > 3. Configure Ins..
AWS Lambda의 서비스 모델 AWS Lambda의 주요 구현 방법은 다음과 같다. 구분 서비스 모델 구현 사례 Synchronous (Push) Amazon API Gateway와 연동으로 웹 애플리케이션을 통한 Request 수신 및 처리 결과에 대한 Feedback 제공(양방향) 웹 애플리케이션, 모바일 백앤드, IoT 백앤드 Asynchronous (Event) Amazon SNS, Amazon S3 등의 이벤트 수신을 통해 트리거되어, 요청에 대한 처리 후 결과를 별도 저장 및 다른 서비스로 전송 처리 파일 또는 이미지 변환, 실시간 요청 처리, 타서비스 연동 및 전달 Stream-Base Amazon DynamoDB, Amazon Kinesis로부터 상태 변경에 따른 트리거나 스트림베이스트의 요청에 따른 사항 처리 및 타 ..