분류 전체보기
-
조회 성능 개선하기 ( ① 쿼리 최적화 )데이터베이스 2022. 4. 28. 00:07
이번엔 저번 화면 응답 개선에 이어 조회 성능을 개선하는 것을 배웠다! 먼저 쿼리 최적화에 대해서 정리하자. 쿼리 동작 방식 쿼리 캐싱 KEY : SQL문, VALUE : 쿼리의 실행결과 인 Map 데이터 변경시 모두 삭제되어 동시처리 성능저하를 일으키기 때문에 MySQL 8.0부터 사라졌다 Parsing 사용자로부터 요청된 SQL을 작게 만들어 서버가 이해할 수 있는 수준으로 분리 Preprocessor ( 전처리기 ) 해당쿼리의 문법을 확인하여 오류가 있다면 처리중단 (일괄 처리내에 있으면 일괄처리 전체 중단) 실제 존재하지 않거나 권한상 사용할 수 없는 개체의 토큰은 이 단계에서 걸러짐 Optimization 실행계획(Exception Plan)은 이 단계에서의 출력을 의미 사용자의 요청으로 들어온..
-
그림으로 공부하는 IT 인프라 구조 정리네트워크 & 인프라 2022. 4. 15. 22:05
이번 인프라 미션을 진행하면서 멘토님의 책 추천 목록에 있는 그림으로 공부하는 IT 인프라 구조라는 책을 함께 읽으며 병행하게 되었다! 네트워크에 대한 지식이 부족하여 어려웠는데 이번 미션 내용의 내용을 일부 책에서 설명해주는 부분도 있어서 함께 공부한게 좋은 선택인 것 같다😃 🙌! http://www.yes24.com/Product/Goods/95800974 그림으로 공부하는 IT 인프라 구조 - YES24 IT에 종사하는 사람이라면 반드시 읽어야 할 책!IT 인프라 전반에 대한 상식을 그림으로 쉽게 이해한다!이 책에는 다양한 환경에서 저자들이 직접 체득한 인프라 기술의 핵심을 포함해 아키텍처 www.yes24.com 웹 데이터의 흐름 웹 서버 : 복수의 프로세스가 분담해서 병렬 처리 AP 서버 : 복..
-
AWS Auto Scaling 적용하기 (Load balancer를 이용한 부하분산)네트워크 & 인프라 2022. 4. 14. 20:26
이번에는 AWS의 Auto Scaling을 이용하여 확장성에 문제가 있는 경우 scale out을 통해 부하분산이 이루어지도록 적용하자. 기존의 pulic 서버는 미리 모두 종료해두었다. 배포 스크립트 작성 먼저 부하분산된 서버에 배포할 배포스크립트를 작성해두었다. 배포스크립트는 꼭 먼저 일반 사이트에서 정상적으로 작동하는지 확인하자. #!/bin/bash git clone -b [브랜치] --single-branch [저장소 URL] sudo apt update sudo apt install -y default-jre sudo apt install -y default-jdk cd /home/ubuntu/infra-subway-deploy ./gradlew clean build nohup java -j..
-
화면 응답 개선하기네트워크 & 인프라 2022. 4. 14. 19:31
이번엔 화면응답속도를 개선하는 방법에 대해 알아보자. 화면 응답 속도를 개선하는 방법에는 인터넷구간 성능 개선을 통한 방법과 데이터 조회 성능 개선의 방법이 존재한다. 인터넷 구간 성능 개선하기 인터넷 구간 성능을 개선하기 위해서는 캐싱설정, CDN 사용, keep-alive 설정, gzip 압축, 이미지 압축, 불필요한 다운로드 제거, 불필요한 작업 지연로딩, 스크립트 병합하여 요청수 최소화, HTTP 프로토콜 개선 등의 방법이 존재한다. Reverse Proxy 캐싱설정 keep-alive 설정 gzip 압축 HTTP 프로토콜 개선 (HTTP2를 사용하여 하나의 TCP 연결로 다수의 클라이언트 요청 처리) JS 불필요한 다운로드 제거 불필요한 작업을 지연로딩 스크립트 병합하여 요청수 최소화 Appl..
-
서버 진단하기 ( + 로깅, 모니터링)네트워크 & 인프라 2022. 4. 14. 12:41
이번엔 서버를 진단하는 방법을 공부하였다. 서비스의 상태 진단 서버는 크게 CPU, Network Interface Card(NIC), RAM, Disk Drives 4가지로 구성되어있는데 각 자원들은 여유 또는 포화 상태를 가지게 된다. 획득할 수 있는 상태정보는 다음과 같다. 요약 : 단위시간 정보의 합계나 평균을 보여줌 (대략정인 상태만 파악) -> sar, vmstat 이벤트 기록 : 순차적으로 이벤트 기록 -> 패킷, 시스템콜 스냅샷 : 순간의 상태를 기록 (문제 발생 시 원인 조사에 사용됨) -> top 이벤트 기록은 장애상황에서 사용하기에 데이터가 방대하기때문에 문제상황 재현시에 사용된다. 즉 문제 발생시 로그, 요약 정보의 일정 수치등에 알람을 설정해두고 스냅샷을 통해 원인을 파악 하도록 ..
-
부하 테스트 ( + k6, grafana + influxdb, ngrinder)네트워크 & 인프라 2022. 4. 14. 11:40
이번엔 도구를 이용하여 부하테스트를 진행하는 방법을 배웠다. 부하테스트 부하테스트는 서버가 어느정도의 부하를 견딜 수 있는지 확인하기 위한 테스트 이다. 서버의 한계치를 확인함으로서 한계점을 넘어설 때 어떤 증상이 나타나는지 확인하고 장애 발생 시에 어떻게 대응하고 복구할 지 계획할 수 있다. Smoke Test VUser 1~2로 구성 최소한의 부하로 테스트 시나리오 오류 검증 및 시스템 오류 검증 Load Test 평소트래픽과 최대 트래픽에서의 성능 확인(서비스 배포 전에도 가설을 세워서 테스트 진행) 기능이 정상적으로 동작하는지 검증 배포, 인프라변경 (scale out, DB failover)시 성능 변화 확인 외부 요인(결제)등에 따른 예외 상황 확인 Stress Test 점진적으로 부하가 증가..
-
웹 성능 진단하기네트워크 & 인프라 2022. 4. 14. 11:39
이번엔 미션을 통해서 배포한 사이트의 성능을 진단하고 성능을 개선키도록 하였다. 먼저 웹 성능 진단을 알아보자. 서비스의 상태 진단 우선 서비스의 상태진단은 전구간, 인터넷구간, 브라우저 렌더링을 제외한 전 구간으로 실행할 수 있고 각각의 상태진단 방법은 다음과 같다. 전구간 : 브라우저로 직접 QA 인터넷 구간 : webpagespeed등의 도구 (브라우저 렌더링을 제외한) 전구간 : 부하테스트 가용성과 성능 먼저 가용성이란 시스템이 서비스를 정상적으로 제공할 수 있는 상태로 가용성을 높이기 위해선 단일 장애점(SPOF -> 서버장비가 장애 날 경우 서비스가 중단)를 없애고 다중화를 이용하여 장애가 발생하여도 시스템 기능을 계속할 수 있는 장애내성을 기르고 확장성 있는 서비스를 만들어야 한다. 성능이..
-
AWS 망 구성하고 서비스 배포하기네트워크 & 인프라 2022. 3. 28. 14:33
이번에는 AWS를 통해 망을 구성하고 서비스를 배포하는 미션을 진행했다. 배포부분은 heroku 배포를 제외하고는 진행해본 적이 없기에 이번 미션을 통해서 배포에 대해 많은 부분을 배울 수 있어 뿌듯했다! 👏 미션을 진행하던 도중 주의를 기울이지 않은 부분에서 문제가 발생한 부분도 있었지만 해당 부분을 해결하면서 더 많이 배울 수 있었다!😀 망 구성하기 망 생성 VPC 생성 Subnet 생성 외부망 : 64개씩 2개 (AZ 다르게 구성) (a, b) 내부망 : 32개씩 1개 (c) 관리용(bastion server) : 32개씩 1개 (d) 인터넷 게이트웨이 연결 라우팅 테이블 생성 (외부망용 1개, 내부망용 1개) 시큐어리티 그룹 설정 외부망 전체대역 : 8080 포트 오픈 관리망 : 22번 포트 오픈..