Start-up이 AWS 이용시 고려사항

아래 모든내용 저작권은 본인에게 있으며 구성과 영문법에 다소 오류가 있을 수 있습니다.

A Small start-up company in the early states of their operations is not considered a lot of things. They don’t know exactly where they are going on and what to do next process.

We should recommend a scalable, elastic and redundant architecture that allows the start up to grow organically.

At first, to understand what this architecture means, you know Amazon Web Services (AWS) concepts. AWS provides a flexible, cost-effective, scalable, and easy-to-use cloud computing platform that is suitable for start-up company and organizations of all sizes.

We should clearly and succinctly present an analysis of the start-up’s requirements and describes the proposed architecture which based on Amazon Web Services.

A. Recommended Architecture Design
amazon archtecture

1. The user’s DNS requests are served by Amazon Route 53, a highly available Domain Name System (DNS) service. Network traffic is routed to infrastructure running in Amazon Web Services.
*AWS – Amazon Web Services (Common name for Amazon cloud)

2. For effective distributions of load, HTTP requests are first handled by Elastic Load Balancing, which automatically distributes incoming application traffic across multiple Amazon Elastic Compute Cloud (EC2) instances across Availability Zone (1A,1B,..AZs). It enables even greater fault tolerance in your applications, seamlessly providing the amount of load balancing capacity needed in response to incoming application traffic.
*EC2 : Elastic Compute Cloud, Range of virtual machine types m1, m2, c1, cc, cg. Varying memory, CPU and disk configurations
*Availability Zone : datacenter with own power and cooling hosting cloud instances. group of Availability zones name for Region.

3. Web servers(like to apache web, tomcat, Amazon Linux ) and application servers(like to PHP, Ruby, Python) are developed on Amazon EC2 instances. Most organizations will select an Amazon Machine Image (AMI) and then customize it to their needs. This custom AMI will then be used as the starting point for future web development.
*AMI : Amazon Machine Image ( Amazon Linux, Windows etc)

4. For ability to scale to meet demand, Web servers and application servers are deployed in an Auto Scaling group. Auto Scaling automatically adjusts your capacity up or down according to conditions you define. With Auto Scaling, you can ensure that the number of Amazon EC2 instances you’re using increases seamlessly during demand spikes to maintain performance and decreases automatically during demand lulls to minimize costs.

5. Amazon Relational Database Service (Amazon RDS) is a web service that it easier to set up, operate, and scale a relational database(like to MySQL) in the cloud. Relational Data Base (RDB) managed MySQL master and slaves. It provides cost-efficient, resizable capacity for an industry -standard relational database and manages common database administrator tasks.

6. Static and streaming content is delivered by Amazon CloudFront, a global network of edge locations. Requests are automatically routed to the nearest edge location, so content is delivered with the best possible performance.

7. Data backup options to S3 from on-site infrastructure, or from AWS. Figure 1 means to backup from AWS. Resources and static content and Log files used by the web application are stored on Amazon Simple Storage Service (S3), a highly durable storage infrastructure designed for mission-critical and primary data storage.

B. How to access this platform? and How do you get start with it?

It’s easy to access AWS cloud services via the internet. Just to sign up for AWS and then using AWS Management Console. You can view your total AWS service charges and switch between AWS accounts and regions from within web site. Image

*Tech News : Amazon on 4 January 2013 announced some significant table and mobile improvements to its AWS Management Console, which will be rolled out “on slightly different schedules” that the company did not specify.

Disaster Recovery with AWS

* Backup and Restore
* Pilot Light for Simple Recovery into AWS
* Warm Standby Solution
* Multi-site Solution

For systems running on AWS, customers or start-up companies also back up into Amazon S3. Alternatively, you can copy files directly into Amazon S3, or you can choose to create backup files and copy them to Amazon S. There are many backup solutions ( method A, B, C and D ) which store backup data in Amazon S3, and these can be used from Amazon EC2 system as well.

AWS gives you fine grained control and many building blocks to build the appropriate DR solution, given your DR objectives (RTO and RPO) and budget. The AWS services are available on-demand and you only pay for what you use. This is a key advantage for DR, where significant infrastructure is needed quickly, but only int the event of a disaster.

Hadoop 정의

A. Hadoop이란 무엇인가?

인터넷이 폭발적으로 성장한 지난 10년간 엄청난 변화가 있었다. 데이터 저장, 관리, 처리에 근본적인 변화가 필요했다. 이전보다 더 많은 정보와 소스를 축척하기 시작해서 엄청난 데이터를 나름 분석하여 회사수익을 위해 환원하기 위해 수많은 기업들이 노력해왔다. 그러나 최근 역설적이게도 데이터를 찾고 저장하는 것은 물론이고 매일 수없이 쌓이는 데이터를 처리하는것에 근본적인 문제가 생긴것이다. 데이터 규모, 속도 그리고 다양한 측면에서 가공하고 분석하는데 사용하는 인력과 비용 대신 새로운 어플리케이션과 플랫폼 도입이 필요하게 된것 이다. 이를 간파한 구글은 구글 파일 시스템과 맵리듀스라는 기술을 이용해 전세계에서 모은 데이터를 가장 빠르게 가공하여 글로벌 검색 서비스를 제공하고 있다. 이제는 구글 뿐만 아니라 수많은 대기업에서 조차 이런 문제에 직면하게 되었고 이를 해결하고자 머리를 맞대고 고민한다.
비록 그 영감은 구글에서 얻었으나 아파치재단이 늦게나마 뛰어들어 하둡(Hadoop)이라는 에코시스템을 제시하게 되었다.

애플리케이션 구축에 실용적이고 확장성 있는 인프라를 저비용으로 제공하는 플랫폼으로 아파치 하둡의 반은 하둡 분산 파일시스템(HDFS)이라 불리는 파일시스템이고 나머지 반은 맵리듀스다.
*Hadoop = HDFS + MapReduce

하둡을 알기전에 먼저 파일에 대해서 보자. 파일이란?
*파일 = 메타데이터(파일이름, 소유자, 권한, 디렉토리 등등) + 데이터(파일 내용)

이 메타데이터와 데이터를 담고 있는 블록 크기는 보통 4KB or 8KB. 그러나 하둡은 기본 블록 크기가 64MB이며 심지어 128MB, 256MB 심지어 1GB까지 늘릴 수 있다. 블럭 크기가 증가하면 데이터를 더 큰 청크(chunk) 단위로 순차적으로 저장할 수 있고, 그렇게 되면 더 큰 단위로 데이터를 읽고 쓸수 있으므로 성능도 좋다.

*HDFS(Hadoop Distribution File System) 이란? 말 그대로 하둡 분산 파일 시스템이다.
구글의 2003년에 발표한 첫 논문. 데용량 데이터에 최적화된 실용적이며 확장 가능한 분산 파일시스템, 즉 구글 파일 시스템(GFS)에서 영감을 얻어 개발된 분산 시스템이다.
바로 특정 스토로지의 하위 시스템에 의존하지 않고, 클러스트의 여러 머신에 이 하둡 데이터 블록을 복제한다. 이 복제된 블록의 사본을 레플리카라고 하는데 레플리카가 다수의 시스템에 분산되면 비록 시스템 하나가 실패해도 큰 문제가 없게 되고, 애플리케이션은 네트워크상에서 가장 가까운 머신의 레플리카에서 데이터를 가져오는 장점도 갖게 된다.
HDFS는 레플리카들의 상태를 파악하고 관리하는 기능이 있다. 예를 들면 사본의 개수가 지정한 복제 인수(replication factor) 이하로 줄어드면, 남아있는 레플리카 중 하나에 새로운 사본(new copy)을 자동을 생성한다.
*새로운 사본(new copy)? 기존 사본을 새로운 레플리카에 전송하고 저장한다는 뜻.

HDFS의 강력한 특징으로 반드시 RAID 스토로지를 사용하지 않아도 되도록 설계되었다는 점이다. 이는 저가 범용 하드웨어를 지원하는 목표를 만족시키고 클러스터 규모 증가시 발생하는 비용도 감소시킨다는 이점이 있다. 다수의 머신에 블록 데이터를 분산해서 저장하기 때문이다.

HDFS 데몬에는 세개의 데몬이 존재한다.
1. 네임노드
2. 보조 네임노드
3. 데이터 노드

쉽게 파일시스템의 메터데이터를 저장하고 파일 시스템의 전체 이미지를 관리한다. 애플리케이션이 파일시스템 조작을 위해서는 먼저 네임노드와 연결한다. 네임노드는 데이터 노드의 생존 여부와 가용 블록 등 전체적인 상황을 파악하고 있다. 빠른조회와 검색을 위해 네임노드는 파일시스템 메타데이터 전부를 메모리에 저장한다.

네임노드 예시
파일명 : /user/comeddy/foo.txt
소유자 : comeddy,
그룹 : hadoop_devteam
블록 : […]


데이터노드는 처음 시작할 때와 매시간 블록 리포트를 네임노드에 보낸다. 블록 리포트(block report)는 데이터노드의 디스크에 저장된 블록의 전체 목록으로 네임노드는 그 변경 내용을 관리한다.

*맵리듀스 이란?
구글이 발표한 ‘대용량 클러스터의 단순한 데이터 처리’ 논문(수백 테라바이트의 데이터 처리를 지원하는 프로그래밍 모델과 프레임워크를 설명하고 있다.)에서 영감을 얻은 프로그램 기술이다.
맵리듀스는 대용량, 분산, 내고장성 데이터 처리 프로그램을 개발자가 쉽게 개발하도록 설계한 최적의 애플리케이션 기술이다. 서블릿 개발자가 소켓I/O, 이벤트 처리, 복잡한 스레드 관리 등 저수준 영역을 직접 개발할 필요가 없는 것처럼 맵리듀스 개발자는 잘 정의 된 간단한 인터페이스를 이용하여 프로그램을 작성하고 컨테이너에 작업을 넘기면 된다.

*맵리듀스(MapReduce) = Map Function + Reduce Function

맵 함수(Map Function)란?
– 레코드들을 하나씩 처리하여 임시 KEY-VALUE 쌍을 만드는 과정.

리듀스 함수(Reduce Function)란?
– 임시 KEY-VALUE 쌍에서 동일한 KEY값을 가진 모든 VALUE를 하나로 합친 후, 그 VALUE들을 처리하여 결과에 출력하는 과정.

맵리듀스는 데이터가 저장된 머신에서 계산이 실행되는데 이른 데이터 내장성(data locality)라고 한다. SAN이나 NAS와 같은 대용량 중앙 집중 공유 스토로지 경우 데이터를 가져와서 처리하는 방식을 취하는데 맵리듀스는 데이터의 저장소와 계산위치가 서로 같다.

하둡 맵리듀스 데몬 = 잡트래커 데몬(jobtracker) + 태스크트래커 데몬(tasktracker)
두개 중요한 데몬이 있다.

B. 하둡 베스트 하드웨어 스팩

1. Dual processor/dual core machines with 4~8GB of RAM using ECC memory
2. Database class SAS drives, >10GB RAM, dual or quad x quad core, $20K
3. 2 X 250GB SATA drives, 4~12GB RAM, Dual x dual core CPU’s(=Dell 1950). $2~5K

총 20~25대 운영예산 $50K

위 글 저작권은 본인에게 있으며 다음은 Hadoop 설치 과정을 살펴보겠습니다.

Download JAVA 7 on Mac OSX Mountain Lion

Mountain Lion 버전을 사용하고 있는 맥유저라면 자바버전이 1.6.x 다음과 같이 나온다.


자바 7이 마이그레이션을 주저하고 있다면 바로 안전하게 실행하자. 

1. Download the Java 7 JDK from the Java SE Site
Mac 32bits와 64bits 둘중 64bits 선택해서 다운로드 받고 설치 하기.



2. Mac OSX 자바현재버전 링크 교체
In Terminal, navigate to the following location:

cd /System/Library/Frameworks/JavaVM.framework/Versions/
ls -al 

현재 CurrentJDK 링크는 여전히 이전 자바버전(1.6.0)을 가르키고 있는데 이를 해결하기 위해선 먼저 심벌링크를 삭제하고 새로운 자바버전으로 링크교체를 한다.


rm CurrentJDK
ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_XX.jdk/Contents/ CurrentJDK

This fixed it for me. To confirm, check the Java version once again in Terminal:
java -version


[참고 블로그]


WordPress에서 Syntax Highlighter 사용하기

블로그를 서핑하다보면 티스토리 웹사이트에서 매우 정렬된 프로그램 코드를 접하게 된다. NHN 개발자사이트에서도 코드설명시 넘버링된 코드라인이 눈에 띄는데 Syntax Highlighter라는 자바스크립트를 다운받아 웹디렉토리에 넣으면 되지만 워드프레스에서는 한줄 코드만으로도 삽입하면 이 기능을 사용할수 있다. 쉽게 프린트도 지원한다.


import java.lang.reflect.Constructor;
import java.lang.reflect.Method;

 * @author comeddy
public class FindMethod {
	private int f1(Object p, int x) 
		if(p == null)
			throw new NullPointerException();
		return x;

	 * @param args
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
			Class cls = Class.forName("FindMethod");
			Method methlist[] = cls.getDeclaredMethods();
			for(int i= 0; i < methlist.length; i++)
				Method m = methlist[i];
				System.out.println("decl class = " + m.getDeclaringClass());
				System.out.println("name = " + m.getName());	// get method name
				Class pvec[] = m.getParameterTypes();
				for (int j= 0; j < pvec.length; j++) 
					System.out.println("param #" +j+ " "+ pvec[j]);
				Class evec[] = m.getExceptionTypes();
				for (int j= 0; j < evec.length; j++)
					System.out.println("exc #" +j+ " "+ evec[j]);
				System.out.println("return type=" + m.getReturnType());
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block

decl class = class FindMethod
name = main
param #0 class [Ljava.lang.String;
return type=void
decl class = class FindMethod
name = f1
param #0 class java.lang.Object
param #1 int
return type=int