본문 바로가기

전체보기

(73)
[AWS] EC2에 Spring boot 배포 하기 먼저 EC2에 spring boot를 배포하기 위해서 Java8과 Maven을 설치가 안되여 있으면 설치해주자 git 설치 필자는 git에 코드를 먼저 올려놓은 상태이다. 그래서 먼저 git을 깔아주기로 하자 sudo yum install -y git 이제 git을 설치 했으면 git 저장소를 만들어주기 위해서 폴더를 하나 만들어주기로 하자 mkdir ./git cd ./git 이제 git에 있는 코드를 끌고 오자 필자는 이미 올려놓은 git을 끌고 오겠다 git clone '주소' 이제 git에 있는 코드를 가져왔다 혹 application.properties이 없을 경우 새로 파일을 만들어서 설정을 넣어서 해주자 이제 준비는 다 되었다 Maven을 패키지해서 배포만 하면 된다. Maven packag..
vi,ls, ssh 등 터미널에서 명령어를 찾을 수 없을 경우 터미널창에 다음과 같이 적어준다. export PATH=%PATH:/bin:/usr/local/bin:/usr/bin 이제 vi,ls 등의 명령어 사용이 가능하다 유저 디렉터리에서 .bash_profile을 수정해주자 vi .bash_profile export PATH=%PATH:/bin:/usr/local/bin:/usr/bin 이제 수정한 것을 반영을 해주자 source .bash_profile
[AWS] EC2에 Maven 설치하기 이번 시간에는 EC2에 Maven을 설치 해보기로 하자 메이븐 설치를 메이븐 프로젝트로 들어가 download로 들어가자 스크롤을 내려서 archives 클릭해주자 버전트리가 나오는 것을 볼 수가 있다. 본인이 원하는 버전의 경로를 들어가주면 된다. 필자는 3.6.3을 설치 할 것이다. 버전 선택한 후에 binaries도 선택을 해주자 tar 파일을 wget으로 받을 예정이니 링크주소를 복사해주자 이제 Maven을 다운 받을 준비를 다 했으니 이제 EC2 접속해주자 접속 한 다음에 다음과 같이 명령어를 실행 해주자 wget https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz wget maven ..
[AWS] EC2에 Java8 설치하기 현재(2018.03.0) EC2 (Amazon Linux)가 Java7이 기본 버전이라 Java8로 버전업 하는 방법을 알아보자 AWS EC2에 접속한 다음에 아래와 같은 명령어를 실행 해보자 java -version 그러면 아래와 같이 자바 버전을 확인 할 수 있다. Java7이라는것을 확인 했으니 자바8을 설치 해보자 아래와 같은 명령어를 실행을 해보자 sudo yum install -y java-1.8.0-openjdk-devel.x86_64 설치가 완료되었으면 인스턴스의 Java 버전을 8로 변경을 해보자 sudo /usr/sbin/alternatives --config java 위와 같이 했으면 다시 자바 버전을 해보자 맨 처음 입력했던 명령어를 입력하면 된다. 이제 사용하지 않은 Java7을 ..
[조대협 대용량 아키텍처]성능 엔지니어링이 필요한것들 이번에는 성능 엔지니어링을 하는데 필요한 것들이 무엇이 있을까 알아보는 시간을 가져보자 먼저 도구적인 측면부터 살펴보자 부하 테스트기 : 가장 기초적으로 필요한 것은 부하 발생 도구이다. nGrinder와 같은 오픈소스 기반의 대규모 부하 발생 도구 SOAP UI 같은 마이크로 벤치마크 테스트 도구를 이용해서 소규모 부하를 발생 필요에 따라서는 간단하게 파이썬 등의 스크립트 언어로 부하를 발생 가능 모니터링 도구 : 어느 구간이 문제가 있는 현상이 어떤지를 파악하려면 여러 형태의 모니터링 도구 필요 프로파일링 도구 : 문제가 되는 부분을 발견 했을 때 문제에 대한 근본적인 원인을 찾기 위한 프로파일링 도구 다음으로는 엔지니어로서의 역량이나 지식적인 부분에 대해서 알아보자 역량 기술적인 역량은 필수적이다...
[조대협 대용량 아키텍처]성능 튜닝 지난 시간에 성능에 대한 병목을 찾았다. 이제 해당 병목 문제를 해결 및 반영해야한다. 튜닝은 병목 구간이 발생한 부분에 대한 전문적인 지식이 필요하지만, 기본적인 접근 방법은 거의 같다고 보면 된다. 문제의 정의 성능 개선의 가장 기본은 문제 자체를 제대로 정의하는 것이다. "그냥 느려요"가 아니라 "성능 목표가 350TPS에 1초 내의 응답 시간인데, 현재 60TPS에 5초의 응답 시간에 애플리케이션 서버의 CPU 점유율이 100%입니다."와 같이 명확해야 하며 문제점은 재현 가능하다. 특히 재현 가능성은 매주 중요한 점인데 테스트 환경이 잘못되었거나 외부적인 요인에 따라 결과가 다르게 나올 수 있기 때문에 문제 자체를 명확하게 정의할 필요가 있다. Break down (문제 분리) 문제가 발생하는 ..
[조대협 대용량 아키텍처]성능 엔지니어링 절차 이번 시간에는 성능과 용량을 측정하고 개선하는 절차에 대해서 알아보도록 하자 목표와 모델의 정의 주요 업무 패턴이나 튜닝의 대상이 되는 시나리오의 개별 성능 목표를 정의해보자 예를 들면 전체 성능 목표가 동시 사용자 1,000명에 대해서 응답 시간 1초 내의 시스템이 전체 성능 목표라고 가정하고 전체 성능 목표를 대략 1,000 TPS라고 하자 1000 TPS가 바로 성능 목표가 된다. 다음은 성능 모델의 정의해야 한다. 해당 시스템의 주요 사용자 시나리오가 여러 개 있을 때 각 시나리오의 사용 비중을 정의해야 한다. 예를 들면 사진을 저장하는 클라우드 서비스 시나리오가 있다고 하면 이 서비스의 주요 사용자 시나 오리는 다음과 같을 수 있다. 로그인 사진 리스트 사진 업로드 사진 보기 사진 다운로드 로그..
[조대협 대용량 아키텍처]성능 엔지니어링 성능 엔지니어링(Performance Engineering) : 시스템의 목표 성능(응답 시간과 동시 접속자 수)을 정의하고 이를 달성하기 위해서 시스템의 구조를 반복적으로 개선하는 작업 성능 엔지니어링은 언제 해야 하는가? 분석 단계 디자인 단계 개발 단계 테스트 단계 운영 단계 분석 단계 초기 요구 사항 분석 및 시스템 기획 단계에서는 성능에 대한 목표를 정해야 한다. 목표 시간은 어떻게 되는지 시스템을 사용할 총 사용자 수와 시스템을 사용하는 동시 접속자 수가 어떻게 되는지 와 같은 성능 목표를 정의한다. 또한 고려해야 하는 사항 중의 하나는 성능 모델이다. 시스템에 부하가 어떤 패턴으로 들어오는지를 정의할 필요가 있다. 예를 들면 게임 시스템으로 가정하자 게임 종류마다 다르겠지만 리그 오브 레전드..