티스토리 툴바


요즘 일이 바뻐서 블로그 포스팅을 거의 못하고 있습니다.
많이 버는 만큼, 그동안 충전해왔던 지식이나 노하우를 주로 방전하는 느낌입니다.

어쨌거나, 클라우드의 양대 산맥인 아마존 AWS와 Microsoft Azure에 대한 이야기를 해보려고 하는데..
Azure vs AWS의 승자가 누구이냐? 인데. 결론 부터 이야기 하면 AWS의 손을 들어주고 싶습니다.
Blob Storage나 DB 서비스와 같은 액세사리성 서비스는 양쪽다 어느정도 구색을 갖춰 놨다고 했을 때, 핵심인 Compute Service가 문제인데.
기본적으로 Azure는 .NET 기반의 PaaS만 지원하지만, Amazon은 모든 플랫폼을 올릴 수 있는 IaaS 수준 서비스를 제공합니다.
이말인즉슨, 내가 필요한 소프트웨어를 마음대로 올릴 수 있다는 겁니다. 단순하게 Java냐, .Net이냐 차이가 아니라
서비스를 하다보면 NFS가 필요할 수 도 있고, 제공해주는 NoSQL 서비스의 성능 문제로, Mongo나 Cassandra를 쓰고 싶을 수 도 있고, 빌드 환경을 만들어보고 싶을 수 도 있고, 여러가지 요구 사항이 존재하는데, Azure는 그게 안되고, 그냥 딱!! .NET 개발만 해야 한다는 것인데, 단순한 웹 애플리케이션 시나리오라면 모르겠지만
요즘과 같이 빅데이타나 분산 아키텍쳐가 유행하는 시절에 이것만으로는 부족하다는 말입니다.

기술적으로 Azure가 상당히 뛰어난점도 많은데, IaaS 단으로 오픈을해서, 조금 더 선택의 폭을 넓혀 줬으면 합니다.
이상 사견이었습니다.
저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 조대협
요즘 예전의 해왔던 일의 경험을 최대한 쏟아 부어서 열정적으로 일을 하고 있습니다.
서비스도 기획해보고, 분석도 해보고, 딜 네고도 해보고, 사람도 뽑고, 예산 관리도 하고, 일정 조정도 하고 사람 관리도 하고, 테스트도 하고,튜닝도 하고, 설계도 하고, 설득도하고... 코딩 빼놓고는 대부분 다하는 군요..

시점이 바뀌다 보니까는 사람을 보는 눈도 조금 바뀌지 않았나 싶습니다.
요즘 IT 인력, 특히 개발자가 없다 보니까는 개발자 단가는 올라가고, 일의 강도도 쉽게 높일 수 없어지는 것 같습니다. 이제야 제대로 IT 인력들이 대접받기 시작하지 않나 싶은데, 아마 많은 시니어 개발자들이 IT의 길을 떠나거나 앱쪽으로 전향을 하고, 새로운 주니어 인력의 충원이 적기 때문에 한참 노련한 30대 중반 개발자들이 시장에 별로 없습니다.

개발자들이 제대로 된 대우를 받기 시작한것은 고무적인 일이지만
반대로 개발자들에 거품과 허영이 생기는 시기가 아닌가 싶습니다.
프리로 들어와서 일하지 않거나, 무조건 NO라고 이야기 하면서 방어적이거나...
야근... 안하는게 좋습니다. 저도 야근 개인적으로 무지 싫어합니다. 그런데 이런 사람들이 하는 이야기들을 보면 "미국에는 야근 안한다... 월급 많이준다... 등등입니다..."
미국.. 야근 잘~~ 안합니다만 필요하면 합니다... 예전 M社나 O社에 있을때도 같이 야근을 하거나 밤샘을 한일도 많았고, 이 친구들은 일을 조절을 하는 거지 않하는게 아닙니다. 집에 가서도 Conf Call로 회의를 할때가 잦고 문서 만들어와서 아침에 회의하자고 덤벼듭니다.

즉, '일'을 합니다. 자기 일에 대한 프라이드와 Owner ship이 있는데, 한국 개발자들은 떠넘기기, 방어하기에 바쁜것 같고.... 제대로 테스트가 되지 않은 코드로 QA를 밤새게 만들고, 튜닝에 들어가지 않아도 될 비용이 들어가게 합니다.

프로라면 실력을 가지고 자신이 맏은일에 필요한 역량을 발휘해야 하고, Commit한 목표에 대해서 ownership을 가지고 일하는 자세가 필요합니다.

요즘 IT 환경이 조금씩 변화되는 느낌을 받습니다만, 개발자들고 조금 더 프로스럽게 전향하는 모습들이 보였으면 합니다.
아마추어가 환경만 선진화 된것을 원하는 것은 부끄러운 일이 아닌가 싶습니다.

저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 조대협
TAG 개발자
언어는 Erlang을 많이 쓰는것 같고, 특히 Scale Out이나 Concurrency 처리가 용이하며, 에러 핸들링 처리 기능이 강력하다.
여기에 생산성 측면에서 Python이 사용되고 Native Handling을 위해서 C가 여전히 강세
맨 앞단에 Reverse Proxy 개념으로 nginx가 apache를 대처하면서 올라오고 있고,
DataGrid는 memcahed보다는 이제는 Redis를 많이 사용하는 것으로 보이고
NoSQL은 Dynamo 계열의 Riak이 많이 사용된다.
RDB야 여전히 MySQL이고

대규모 시스템이 자바로 짜여지는 일은 드문듯

앞으로 살아 남을려면 NoSQL 하나랑 Erlang정도는 기본으로 익혀야 할듯
저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 조대협
요즘 대규모 분산환경 관련 기술에 대해서 기웃거려 보고, 개발언어 관련해서도 자바는 아무래도 사양세 같아서 이것 저것 언어들을 살펴보고 있는데, Erlang이 자료도 적고, 유명하지는 않지만 요즘 해외에서 유난히 많이 언급되서 좀 찾아봤다.
일단 한마디로 하면.. "이건 턱시도 + 자바네...."

Functional Programming이라고 하는데, 알아서들 찾아보시고, 완전히 Tuxedo의 Service 개념이다. (SOA의 서비스 개념과도 비슷하고..) 구조또한 Tuxedo다. Process 단위로 구동하면서, 안에 Thread로 나눠서 돌고, 그로 인해서 장애 전파가 안되고, Process가 늘어나면서 Schedule Out이 가능하다.

또한, Function은 여러 서버에 Deployment하더라도 횡적으로 스케일 아웃이 가능하다. (Single Machine에 배포하는 프로그래밍이나, Multi Node에 배포하는 코드 자체가 똑 같다는..) 이건, Tuxedo의 경우 두대간에만 스케일 아웃이 가능한데, 요걸 무제한으로 만들어놨다는 소리...

Tuxedo에서도, 이런 프로세스나 서비스, 그리고 노드(Machine)간의 Communication을 위해서, IPC(특히 ShareMemory)를 사용했는데, Erlang도 보니 구조가 비슷한 것 같은데.. 역시 ShareMemory Locking 이슈가 있지 않을까..
저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 조대협
요즘 대규모 분산 환경이나 빅데이타 관련해서 NoSQL중에서 Riak이 많이 언급되는데...
생각보다 괜찮은 듯
http://nosql.mypopescu.com/post/632057783/riak-search-and-riak-full-text-indexing

주요 특징은
- Cassandra와 같은 Dynamo 계열
- ★ Secondary Index가 지원 된다.. (메이져 NoSQL 중에 유일하지 않을까?)
- ★ FTS (Full Text Searching)도 지원된다.

그리고, Commercial Support도 가능하다.

저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 조대협
ALM/Task Management2011/12/05 16:49
기존의 개발 프로세스에서는 요구 사항을 받아서 개발하는 형태였는데, 이 요구 사항이 완벽하지 않다는 것은 누가나 알고 있고, 이를 전재로 해서, 변경 가능한 요구 사항을 기반으로 개발하는 프로세스가 애자일 프로세스 이다.
관리 관점 뿐만 아니라, 요구 사항을 수집하는 관점도 변화가 필요한데

요구 사항은 고객이 정해주는 것이 아니라, 스스로 정하는 것이다.
고객에게 요구 사항을 받은 것이 완벽하다고 판단하지 말고, 요구 사항이 부족한 부분은 Develop하고, 완벽하게 만들어 나갈것. 즉 고객이나 다른 사람에게 요구 사항 정의에 대해 의존하지 말고, 커뮤니케이션, 가정, 레퍼런스를 통하여 스스로 요구 사항을 정리할 수 있도록 해야 한다.
완벽하지 않은 요구 사항에 대해서는
1. 고객에게 요구 사항을 커뮤케이션을 통해서 물어볼 것.
2. 고객의 요구 사항이 확실하지 않다면, 유사 레퍼런스를 통해서 요구 사항을 정의하여, 고객과 협의한다.
3. 또는 요구 사항을 가정하되, 가정의 원칙을 고객의 비지니스 밸류(가치)를 우선으로 한다.

요구 사항은 변경이될 수 도, 바뀔 수 도 있다. 그러나 원칙이 되는 것은 고객이 얻고자 하는 비지니스 밸류가 되어야 하며, 개발팀 역시 고객의 비지니스를 이해하고 이를 통해서 요구 사항을 함께 정의해야 한다. 최고의 요구 사항은 "고객의 비지니스 가치이다."

요구 사항의 정의 기법은 Scrum UserStory나 다른 기법에서도 여러 방법으로 표현하고 있지만, 요약해보면
적절한 요구 사항 정의는,
"누가? 왜? 이 행위를 원하는 것이며" - Who & Why
"이 행위의 결과로 얻을 수 있는 비지니스 가치는 무엇인가" - What
그리고, "이 비지니스 가치를 얻기 위해 하는 행위가 무엇인가가 명확하게 정의되어야 한다" - How

저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 조대협

애플리케이션 기반의 플랫폼 레퍼런스

http://www.cloudbees.com/platform-overview.cb

단순하지만 쓸만한거 같고,
특징은 개발/빌드 환경을 체계화 해놨다는 건, 다른 클라우드에서는 이런 환경을 PaaS 수준으로 제공하는 것은 없는 걸로 아는데, 일단 CloudBees는 Jekins(Hudson)을 사용한다는 것
저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 조대협

Google의 BigTable에서 시작된 것들
- HBase (Java)
- HyperTable (C++)
주로 대규모 분산처리 특히 Map&Reduce에 알맞고, 동시 대규모 클라이언트를 지원하는데 뛰어 나다

Amazon Dynamo 로 부터 시작된 것들
- Voldemork
- Riak

FaceBook에서 시작된것
- Cassandra
Write에 Optimize되었으며, Read는 Write에 비해 느림. 대규모 데이타 저장에 최적화됨

그밖에 Mongo 계열
-MongoDB 쉽다. 그리고 AutoSharding과 Balacing 제공. 10gen에서 Commercial Support
-CouchDB : MongoDB와 특성은 유사하나 내부 기술 구조는 다름
저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 조대협

Redis는 Memcached의 대안으로 사용할 수 있는 솔루션이다.
성능이나 구조도 memcached에 비해서 나은 것 같은 것 같고, 클러스터, Pub/Sub 기능도 있다.

Redis Tutorial
http://simonwillison.net/static/2010/redis-tutorial/

Redis Cluster
http://redis.io/presentation/Redis_Cluster.pdf

저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 조대협
nginx가 요즘 마음에 들어서 계속 살펴보는 중인데, module 개발도 apache 보다는 쉬워 보인다. apache 처럼 module 개발 가이드 책은 없는 것 같지만 그래도 이정도 정리된 문서가 있는 것도 다행인듯.
 

Module 개발 문서 - http://www.evanmiller.org/nginx-modules-guide.html

Module 개발 Advanced Topic http://www.evanmiller.org/nginx-modules-guide-advanced.html

 

저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 조대협