본문 바로가기

아키텍처

(19)
[조대협의 소프트웨어 개발]애자일 개발 방법론 하나의 소프트웨어를 개발하기 위해서는 요구사항을 분석해서 디자인하고, 이 디자인을 나눠서 개발자들이 각자 개발을 진행. 개발된 컴포넌트는 테스트되고 마지막에는 서로 합쳐져서 하나의 유기적인 시스템을 이룬다. 이러한 개발 과정을 ‘개발 프로세스’라고 한다. 개발 프로세스에 조직 구조와 도구 셋을 포함하여 개발 방법론이라고 정의한다. 실용주의 방법론 변화를 수용한다 요구 사항 등이 변화 할것을 인정하고 진행하고, 요구 사항 변화를 수용하여 개발 범위를 조정하면서 프로젝트를 진행한다. 개발 과정을 짧은 조각으로 나누어서 반복적으로 개발 반복적 개발방법론이라고한다. 소프트웨어 이터레이션이라는 조각으로 나눈 다음에 각 이터레이션 별로 분석-설계-구현- 테스트를 반복 이터레이션이 끝날 때마다 소프트웨어를 릴리즈 한..
[조대협 대용량 아키텍처]성능 엔지니어링이 필요한것들 이번에는 성능 엔지니어링을 하는데 필요한 것들이 무엇이 있을까 알아보는 시간을 가져보자 먼저 도구적인 측면부터 살펴보자 부하 테스트기 : 가장 기초적으로 필요한 것은 부하 발생 도구이다. nGrinder와 같은 오픈소스 기반의 대규모 부하 발생 도구 SOAP UI 같은 마이크로 벤치마크 테스트 도구를 이용해서 소규모 부하를 발생 필요에 따라서는 간단하게 파이썬 등의 스크립트 언어로 부하를 발생 가능 모니터링 도구 : 어느 구간이 문제가 있는 현상이 어떤지를 파악하려면 여러 형태의 모니터링 도구 필요 프로파일링 도구 : 문제가 되는 부분을 발견 했을 때 문제에 대한 근본적인 원인을 찾기 위한 프로파일링 도구 다음으로는 엔지니어로서의 역량이나 지식적인 부분에 대해서 알아보자 역량 기술적인 역량은 필수적이다...
[조대협 대용량 아키텍처]성능 튜닝 지난 시간에 성능에 대한 병목을 찾았다. 이제 해당 병목 문제를 해결 및 반영해야한다. 튜닝은 병목 구간이 발생한 부분에 대한 전문적인 지식이 필요하지만, 기본적인 접근 방법은 거의 같다고 보면 된다. 문제의 정의 성능 개선의 가장 기본은 문제 자체를 제대로 정의하는 것이다. "그냥 느려요"가 아니라 "성능 목표가 350TPS에 1초 내의 응답 시간인데, 현재 60TPS에 5초의 응답 시간에 애플리케이션 서버의 CPU 점유율이 100%입니다."와 같이 명확해야 하며 문제점은 재현 가능하다. 특히 재현 가능성은 매주 중요한 점인데 테스트 환경이 잘못되었거나 외부적인 요인에 따라 결과가 다르게 나올 수 있기 때문에 문제 자체를 명확하게 정의할 필요가 있다. Break down (문제 분리) 문제가 발생하는 ..
[조대협 대용량 아키텍처]성능 엔지니어링 절차 이번 시간에는 성능과 용량을 측정하고 개선하는 절차에 대해서 알아보도록 하자 목표와 모델의 정의 주요 업무 패턴이나 튜닝의 대상이 되는 시나리오의 개별 성능 목표를 정의해보자 예를 들면 전체 성능 목표가 동시 사용자 1,000명에 대해서 응답 시간 1초 내의 시스템이 전체 성능 목표라고 가정하고 전체 성능 목표를 대략 1,000 TPS라고 하자 1000 TPS가 바로 성능 목표가 된다. 다음은 성능 모델의 정의해야 한다. 해당 시스템의 주요 사용자 시나리오가 여러 개 있을 때 각 시나리오의 사용 비중을 정의해야 한다. 예를 들면 사진을 저장하는 클라우드 서비스 시나리오가 있다고 하면 이 서비스의 주요 사용자 시나 오리는 다음과 같을 수 있다. 로그인 사진 리스트 사진 업로드 사진 보기 사진 다운로드 로그..
[조대협 대용량 아키텍처]성능 엔지니어링 성능 엔지니어링(Performance Engineering) : 시스템의 목표 성능(응답 시간과 동시 접속자 수)을 정의하고 이를 달성하기 위해서 시스템의 구조를 반복적으로 개선하는 작업 성능 엔지니어링은 언제 해야 하는가? 분석 단계 디자인 단계 개발 단계 테스트 단계 운영 단계 분석 단계 초기 요구 사항 분석 및 시스템 기획 단계에서는 성능에 대한 목표를 정해야 한다. 목표 시간은 어떻게 되는지 시스템을 사용할 총 사용자 수와 시스템을 사용하는 동시 접속자 수가 어떻게 되는지 와 같은 성능 목표를 정의한다. 또한 고려해야 하는 사항 중의 하나는 성능 모델이다. 시스템에 부하가 어떤 패턴으로 들어오는지를 정의할 필요가 있다. 예를 들면 게임 시스템으로 가정하자 게임 종류마다 다르겠지만 리그 오브 레전드..
[조대협 대용량 아키텍처]아키텍트 아키텍트는 전체 시스템을 디자인하고 설계하는 역할을 하는 사람이다. 아키텍처링은 비즈니스 아키텍처, 테크니컬 아키텍처로 나뉜다. 비즈니스 아키텍처 사업 전략, 비전, 요구 사항 분석과 같은 범주와 관련이 있다. 비즈니스 요건을 어떻게 시스템으로 구현하여 효과를 낼지는 IT 아키텍트의 역할 테크니컬 아키텍처 전체 시스템의 그림을 그리고 비즈니스 요건을 충족하기 위한 기술적인 설계를 하는 역할 비즈니스 요건을 잘 이해해야 한다. 아키텍트의 능력 숲을 보는 능력 아키텍트는 전체 시스템을 보는 능력이 매주 중요하다 기술에 대한 폭넓은 지식 어떤 기술이 적절한지 장단점과 위험요소는 무엇인지를 파악해서 적재적소에 알맞은 기술을 배치해야 한다. 현실을 인지하는 능력 좋은 아키텍처라도 비용과 수행하는 팀원의 능력에 맞..
[조대협 대용량 아키텍처]글로벌 서비스 아키텍처 글로벌 서비스를 할려면 국내에서 개발하는 것과 또 다른 접근이 필요하다 법적인 이슈에 대한 검토 시스템을 구축하고자 하는 지역의 법적인 제약 사항을 이해해야 한다. 미국이나 유럽은 사용자 정보가 반드시 해당 국가에 있어야하는 제약 사항이 있다. 중국은 'Great Fire Wall'이라는 방화벽으로 전체 인터넷을 감싸고 있어서 특정한 서비스를 갑자기 막아 버릴 수 있다.그래서 중국 대상 서비스는 중국에 시스템을 놓는 것이 안전하다. 미국,유럽, 중국 3개 지역이 주요 데이터 센터의 선정지가 된다. 시스템 위치 선정 글로벌 시스템을 구축할 때 센터의 위치 선정도 또한 중요한 이슈 유럽, 미국 중 한곳에 두는게 일반적이며 아시아 커버리지를 위해서 싱가폴,홍콩, 일본 등에 센터를 구축 할 수 있다. 이 그림은..
[조대협 대용량 아키텍처]클라우드 인프라 서버나 네트워크 스토리지와 같은 컴퓨팅 자원을 언제 어디서든 원격의 공유된 풀에서 필요한 경우 요청하여 필요한 만큼 사용하는 모델이다. 대표적으로 개인 클라우드에는 애플의 iCloud, 네이버의 N드라이브, 기업 클라우드는 Amazone의 AWS 등이 있다. 클라우드 컴퓨팅의 배포 모델에 따른 분류 클라우드 컴퓨팅 플랫폼은 장소와 서비스 사용 제공/사용 주체에 따라서 크게 다음과 같이 3가지 형태로 분리 한다. Y축은 배포 장소를 의미하고 X축은 서비스 사용/ 제공 주체를 의미한다. Private Cloud 서비스 사용자가 기업 내부의 비즈니스 시스템을 위해서 자체적으로 클라우드 플랫폼을 구축하는 모델(on-premise) 클라우드 플랫폼이 회사 내부 또는 서드파티 데이터 센터에 독립적으로 구축 됨 ex..