2012. 1. 18. 15:17 IT

최근 chef에 대해 이야기를 들었다. 
그게 뭐지? puppet은 들어봤지만.

puppet, chef 는 인프라 구성 자동화 도구라고 하면 되겠다.   (cfengine, slack 이란것도 있다.  )

system 설정 자동화 listup : Bcfg2, cfengine, Chef, Puppet, SmartFrog
app 서비스 설정 자동화 : Capistrano, Fabric, Func, ControlTier, Glue 


puppet : http://puppetlabs.com/
Enterprise버전은 상용이나 10개 노드 이하는 Free 
고유 DSL 제공 
사례 :  징가, 트위터 
단점 : 새로 익혀야 하는 DSL

chef : APL
http://wiki.opscode.com/display/chef/Home
ruby 코드 
참고 :  https://www.ibm.com/developerworks/mydeveloperworks/blogs/9e635b49-09e9-4c23-8999-a4d461aeace2/entry/215
사례 :  RightScal

glue :  deployment and monitoring automation platform APL2.0
https://github.com/linkedin/glu 
소개글 :  http://linkedin.github.com/glu/slides/glu-tech-talk-201107.pdf 
-> 여기서 glue와 puppet을 비교하면서 puppet은 machine infra에 대한 configuration, glue는 dynamic application 에 대한 provisioning 에 좋다고 평한다. (물론 glue를 만든 사람이 하는 말이다.)
재미있는건 ZooKeeper를 이용하여 정보를 저장하고 이벤트 통지 등을 관리 한다는것.. 
 groovy 코드 
 
slack : 구글에서 쓴다고 하네요 

cf) 분산시스템 모니터링은  nagios, opsview, etc 
posted by smplnote
2012. 1. 18. 08:49 IT

블로깅 때문에 검색하다가 우연히 발견. 

http://grailsboston.com  

무려 h2 database로 운영한다 ㅎㅎ

플러그인 목록을 보면서 이것저것 생각하게 되는데 ( http://grailsboston.com/twittersearcher/plugin/list  )

(정말 작은 커뮤니티를 가지고 많이도 만들었네... )
 
posted by smplnote
2012. 1. 18. 08:20 IT

Jump Into Grails 2.0 스크린캐스트 ( http://grails.org/screencast/show/31 ) 를 따라해봄
 

1. 플러그인 추가
 

conf/BuildConfig.groovy
---------------------------
    plugins {
                ... 
runtime ":spring-security-core:1.2.7"
                ... 
    }

2. compile을 이용하여 플러그인 자동설치 
>grails compile

실행이 잘되면 "s2-quickstart" script를 실행하라는 메세지가 나온다. 

cf) 여기서 제대로 안되고 다운로드를 실패하면 바로 이전 글 "Grails에서 플러그인 설치실패" http://pffm.tistory.com/273  내용을 참고바람.

3. spring security 초기화 및 도메인 클래스 생성 
다음과 같이 실행하여 초기화 및 도메인 클래스를 생성하는 작업을 수행한다. 
>grails s2-quickstart org.example.demo User Role
 
작업이 끝나면 conf/Config.groovy 에 수정이 반영되었으니 확인하라는 메세지가 나온다. 

하단에 세줄이 추가된 것을 알 수 있다. 
conf/Config.groovy
 
---------------------------
grails.plugins.springsecurity.userLookup.userDomainClassName = 'org.example.demo.User'
grails.plugins.springsecurity.userLookup.authorityJoinClassName = 'org.example.demo.UserRole'
grails.plugins.springsecurity.authority.className = 'org.example.demo.Role'

여기에 한줄 더 추가 입력 (로긴 성공시 기본으로 갈 Url)
grails.plugins.springsecurity.successHandler.defaultTargetUrl = '/home' 


4. 테스트용 컨트롤러 생성
이제  home 과  publiccontroller 를 만들고.. 
>grails create-controller home
>grails create-controller  public


5. 각각 컨트롤러의 접근 권한을 다르게 부여

- 접근 권한이 불필요한곳
class PublicController{
    def index() { render 'public' }

- 명시적으로 접근권한 부여 (Secured annotation 사용)
import grails.plugins.springsecurity.Secured
@Secured(['ROLE_USER'])
class HomeController {
    def index() { render 'home' }

    @Secured(['ROLE_ADMIN'])
    def adminOnly() { render 'admin' }
}


6. 부트스트랩에 USER, ROLE  사전 등록작업  
 conf/BootStrap.groovy
--------------------------
 import org.example.demo.* // import 문 추가 
...
    def init = { servletContext ->   // init 안에 추가 
        // admin Role과 userRole 을 생성 
def adminRole = Role.findByAuthority('ROLE_ADMIN') ?: new Role(authority: 'ROLE_ADMIN').save(failOnError: true)
def userRole = Role.findByAuthority('ROLE_USER') ?: new Role(authority: 'ROLE_USER').save(failOnError: true)

        // user role을 가진 bobby와 admini role을 가진 adminuser를 생성  
def user1 = User.findByUsername('bobby') ?: new User(username: 'bobby', enabled:true, password: 'pass').save(failOnError: true)
if(!user1.authorities.contains(userRole)){
UserRole.create user1, userRole, true
}
def user2 = User.findByUsername('admin') ?: new User(username: 'adminuser', enabled:true, password: 'pass').save(failOnError: true)
        if(!user2.authorities.contains(userRole)){ UserRole.create user2, userRole, true }
        if(!user2.authorities.contains(adminRole)){ UserRole.create user2, adminRole, true } 
 
 7. 확인작업
>grails run-app
 | Server running. Browse to http://localhost:8080/demo

1) http://localhost:8080/demo/public 은 로그인 없이 접근 OK
2) http://localhost:8080/demo/home 은 로그린 화면으로 redirection
3) bobby 로그인 후 http://localhost:8080/demo/home/index 접근 OK
4) bobby 로그인 후 http://localhost:8080/demo/home/adminOnly 접근 불가
5) adminuser 로그인 후  http://localhost:8080/demo/home/adminOnly 접근 OK

8. User에 필드 추가하기 (option)
도메인 클래스만 손보면 알아서 추가해줌... (당연한거잖아.. )

ex) 사용자 정보에 nick 을 추가한다면.. 
User.groovy 
----------------
String nick; // 사용자 정보에 nick 필드 추가 

// 참고로 마지막  encodePassword 메소드를 보면 password 필드를 암호화처리해주고 있음을 알 수 있다.
 
물론..  BootStrap.groovy 안에서도 유저 생성할때 nick 을 추가해주세요. 
... new User(username: 'nickuser', enabled:true, password: 'pass', nick: 'blah blah')  

cf) BootStrap 파일을 수정할 경우에는 grails를 재시작 해주어야 합니다. 당연하긴 하지만.. 뭔가 BootStrap도 재기동 할수 있는 기능을 제공해 해줬으면... 


기타.

1. 한글 문제
한글을 BootStrap.groovy 에 넣어보았는데 안되더라. 원인은 .groovy 파일을 UTF-8 로 저장하지 않아서.  
혹시 이걸로 해결이 안된다면 다음 링크를 참조하세요.  
http://jgrasstechtips.blogspot.com/2008/05/how-to-learn-new-groovy-friend-italian.html 
comment를 보면 JAVA_OPTS 에 groovy.source.encoding 을 전달하라는 이야기가 나온다. 

2.  LDAP, ActiveDirectory 연계는?
찾아보니.. 
spring-security-ldap 플러그인이 제공된다. 


마치며... 
 
이걸 더 진행시킬 기회가 올지는 잘 모르겠다. 아마 힘들듯... 

비교할 자리는 아니지만...

grails와 playframework을 다시 생각해보면 grails는 위와같이 spring 위에 올라탄 느낌을 편리하게 제공해준다.

일단 groovy에 익숙해진다면 플러그인을 직접 만드는 것도 그리 어려워보이지 않는다.

하지만 편리함 뒤에는 내부의 복잡함이 지나치게 숨겨진게 아닌가 싶기도 하다.
 
반면 playframework은 java 고유의 호흡법을 유지할 수 있다는 장점과 컴팩트함을 장점으로 가지는 것 같다. 

물론 다시 안을 들여다 보게 된다면 SCALA의 무덤에 기겁을 할 지도 모른다... (뭘 그리 겁내냐!) 


아무튼...  개인 신변이 조금 정리되어 이제 다시 링크... 
posted by smplnote
2012. 1. 16. 16:51 IT
grails install-plugin xxxxx 를 실행했으나 실패. 

grails plugin 설치가 안되는 문제가 발생. ( set-proxy 로 해결하라고 나오지만 회사에서 proxy는 왠지.. )

시도 1) grails install-plugin http://myserver.com/plugins/grails-example-0.1.zip

시도2) 
grails install-plugin /path/to/grails-example-0.1.zip

둘다 실패... 

my-grails-app/lib 에 xxx.zip 또는 dependency를 가지는 jar 파일을 복사해서 해결함

cf) 
http://search.maven.org/  ,  http://plugins.grails.org  를 활용.
xxx-plugin.xml 파일 내용중 dependency 부분을 확인해서 추가로 받아야 할 것들을 확인할것.


참조하세요 ->  http://grails.org/doc/latest/guide/plugins.html
posted by smplnote
2012. 1. 13. 16:51 IT

- 준비물
JDK 1.6.X
STS  (현재버전 2.9.0 M1) 

- 설치 
1. STS 실행후 Dashboard의 Extension Tab으로 가서 Grails 와 Grails Support 를 추가로 설치.
컴파일러를 groovy 1.8로 바꾸려면 Groovy Eclipse 플러그인을 다시 추가해야한다 . (이거 dependency 걸어서 같이 받게좀 해주세요.. )
참조 :  http://grails.org/STS+Integration 

2. STS재실행후  grails 홈 설정 ( STS 실행경로 바로 상위에 grails-2.0.0 이 생김. )

3.  http://grails.org/Quick+Start   따라하면 됨.. 

cf) H2 메모리 DB를 이용해서 테스트할때 좋은건 Grails가 DB web 콘솔을 기본으로 제공한다는것 ( 2.0 소개 스크린캐스트에서 발견..) 이때 jdbc url은 conf/DataSource.groovy 파일에 있는 설정값을 이용하면 된다. 


ps. 왠지 그레일즈는 설치해서 튜토리얼 한번 해보고 뭐좀 더 해보려다가 멈추게 된다.
진중하게 좀 파고들어야 하는데...
그리고 STS는 왤케 느리냐..  
다음엔 grails의 spring security 아니면  spring-security-facebook  을 조금 건드려볼까함.. 

posted by smplnote
2012. 1. 12. 15:07 IT

4세대인 LTE가 등장하면서 핸드폰 요금제에  더이상 데이터 무제한은 없어졌습니다.
간혹 요금제에 할당된 데이터 용량 이상으로 소비하여 요금폭탄을 하소연 하는 글이 눈에 띄기도 합니다..
해가 갈수록 보고싶은 동영상은 늘어만 가는데~ 데이터는 턱없이 부족한데~ 뭐 그렇죠...

핸드폰 요금제만 그런게 아니죠. 전기세도 마찬가지.
이제는 IT까지 클라우드란 이름으로 동참하고 있습니다.

데이터 종량제가 빛을 발하려면
내가 얼마나 쓰는지, 또 언제 요금제를 올리고 내려야 하는지
그리고 내 데이터가 새고 있는건 아닌지 잘 알고 있어야 합니다.

무관심한 사람들일수록 돈이 새어나가고 있는지 모른채 뒤늦게 뒤통수 맞았다면서 억울함을 하소연 할 뿐입니다.
(더욱 흥미로운건 대기업이든 소규모든 모두 같은 고통을 겪고 있다는 것.. )

이렇게 가려운 곳을 긁어주는 서비스.

그게 Cloudability 입니다. (블로그를 보니 RoR로 구축한듯)


무료가입해서 둘러볼수 있구요...
수많은 종류의 클라우드 서비스에 대한 정보를 제공합니다 .
대표적인것들 : 아마존웹서비스, 구글앱, rackspace, heroku, github, salesforce, phpfog, force.com

예를들어 구글앱스의 경우는 OAuth로 사용보고서, 메일주소 액세스 권한을 받아 리포팅을 해줍니다.

기본적으로 대시보드와 리포트( 계정, 기간, 서비스, 벤더 단위)를 제공하고 있고, CSV  포맷으로 내려받을수 있게 하는군요.

가입해서 서비스 등록후 본 대시보드 내용입니다. (github 정보로, $0 ... )



대충 이런 느낌입니다. 보안에 특히 신경을 쓰고있음이 곳곳에서 보이더군요..  


국내 스타트업들도 외국에 서비스를 고려한다면 Cloudability의 서비스를 활용해보는 것도 좋을것 같습니다.

참고) Cloudability의 아이디어에 대해 좀더 자세한 이야기는 다음 블로그에 있습니다.
https://www.cloudability.com/blog/why-we-built-cloudability

2012년 주목할만한 클라우드 스타트업으로 지목된 서비스 http://gigaom.com/cloud/10-cloud-startups-to-watch-in-2012/

posted by smplnote
2012. 1. 11. 12:47 IT
로그수집 및 저장/관리는 예전에도 있던 요구사항이다.
서버에 에이전트를 설치하여 주요 거래로그를 원격지 DB에 저장하게 하는 방식이 일반적이었다.
(주된 관심거리는 로그 위변조 이슈--WORM--나 필터링,분석, 속도에 관련된 것이었다.) 
시스템 모니터링의 경우도 어떻게, 그리고 얼마나 빨리 각 서버의 시스템정보를 획득할 것인가(주로 vmstat 등 시스템이 제공하는 기능을 이용해 정보를 수집)에 관심이 집중 되어 있었다.

그런데, 왜 클라우드 컴퓨팅 영역에서 다시 로그 얘기가 나온걸까?

IT시장에서 한동안 콘솔리데이션 경향이 있었다.
가용성 측면에서 급속도로 올라가는 요구사항은 시스템 관리자들을 야근으로 몰고 있었고,
점점 관리 리스크를 줄이고 싶어하는 필요성이 생겼다.
그것은 하드웨어 벤더와 이해가 맞아 떨어지면서 수십대의 장비를 몇대의 물리적 장비로 통합하고
그 안에서 다시 쪼개는 식의 콘솔리데이션 바람이 불게되었다.

하지만 콘솔리데이션은 고급화된 하드웨어에 의한 비용부담을 증가시켰고, 확장성에 제약을  주었다.

그다음 방법은 무엇일까에 대해 이미 글로벌 기업들은 새로운 길을 파고 있었다. 
스토리지와 데이터 관리, 애플리케이션 서버에 변화가 일었다.

무언가 새로운 것이 만들어지면 그다음은 모방이 따라온다.
하드웨어가 아닌 소프트웨어로 전환된 사고는 로그관리에도 마찬가지의 전환을 가져오게 되었다. 
클라우드 솔루션의 도입은 1~20대의 시스템이 아닌 수십대 수백대의 시스템을 예상하도록 만든다.
이는 시스템 모니터링이나 로그 관리에 있어서도 예전의 방식이 가지고 있던 문제점에 대해 또다시 아픈 기억을 떠올리게 된다. 


주된 관심을 받고 있는 클라우드 계의 로그관리 솔루션으로 두가지가 있다. 
Chukwa, Scribe
 
- Chukwa : hadoop의 서브 프로젝트
Hadoop FS 에 로그를 저장하고 Map-Reduce로 로그를 분석.
장점 : 타겟 서버의 수정이 필요없음, 하둡FS를 이용해 로그 저장의 안정성 제공, 준/실시간 분석 기능 제공
단점 : 하둡FS만 지원, 바이너리 포맷인 하둡 SequenceFile로 저장됨
cf) HICC 하둡 상태정보를 제공하는 웹인터페이스 (MySQL 사용)
cf) 직접 명령실행용 어댑터(ExecAdaptor)나 로테이트 되는 로그파일 처리용 어댑터도 제공(filetailer.FileTailingAdaptor)

- Scribe : facebook의 로그관리 솔루션 . APL
장점  : 다양한 개발언어 지원(thrift interface)
단점 : 기존 로그파일을 스크라이브 api로 변환해야함, 로그저장 스토리지 및 시스템 구성은 사용자가 직접 구성해야함
cf) log4j 용 scribe appender 제공

그런데 로그 자체를 일반 파일이 아닌 NOSQL로 저장하는 접근은 없나? (방금 찾아보니 log4mongo 라는게 걸린다.  http://log4mongo.org/ )

최근 조류의 특이점은 1. 오픈소스, 2. 특정 개발언어 종속성 최소화, 3. 대용량 분산환경
이것은 MS나 ORACLE이 추구하는 방향과는 사뭇 다르다.
(오라클이 NOSQL 솔루션을 제공하지만 그 줄기에는 ORACLE DB나 하드웨어와 같은 벤더 친화적인 개념으로 유도하기 위한 미끼의 느낌이다. 그것이 Enterprise 솔루션이란다. )


참조 : 클라우드 컴퓨팅 구현 기술 / 김형준 외 / 에이콘
posted by smplnote
2012. 1. 5. 09:22 IT

용도 : ibatis sql coverage 측정
라이센스 : 미정
제작사 : NHN
관련자료 : http://helloworld.naver.com/helloworld/1255
문서로는  The Platform 2011 PDF 안에서도 확인이 가능합니다. http://helloworld.naver.com/helloworld/2675

특징 : 테스트 실행후 ibatis xml 파일의 sql에 대한 라인 커버리지 제공

작년동안 SQL Code Inspection을 고민해서 부족하게나마 구현하여 몇번 프로젝트에 적용해보았습니다.
물론 상용 검사도구에서도 충분히 기능을 제공할 수 있는 수준의 것들이라 더이상 진행은 되지 않았지만, SQL에 대해 고민하고 어떤 코드가 좋은 코드일까 고민하도록 해주는 좋은 기회였습니다. (groovy 언어를 즐기는 기회가 되기도 했습니다. )

그런데 비슷한 시기에 SQL에 대한 또다른 유용한 접근이 있었음을 이제야 알게 되었네요.

테스트에서 측정은 중요한 고려사항입니다.
테스트를 했는지 안했는지 알아야 결과를 해석도 할 수 있을테고, 의미가 있는지 없는지도 판단할 수 있을테니까요.

DBMS의 테스트 커버리지 대상을 두 가지 영역으로 나누어 보면 다음과 같습니다.

- TABLE 영역 : TABLE에 대한 C/R/U/D 유무 여부 
목적 : 미사용 TABLE 또는 CRUD Matrix 매핑이 안된 경우, 테스트 수행 여부를 확인
방법 : SQL 로그를 통한 분석 또는 DBMS가 제공하는 View를 이용하여 확인가능
비고 : 영향도 분석과 같은 정적분석 방법으로도 사전에 파악이 가능

- SQL 영역 : 프로그램에서 작성된 SQL 실행 여부
목적 : 작성된 SQL의 사용여부 및 테스트 여부를 확인
방법 : 
1) 소스 코드내에 SQL이 있는 경우
각 소스 언어별로 제공하는 coverage 툴을 통해서 수행여부를 확인할 수 있습니다.
단 소스와 SQL이 섞여있는 형태이므로 둘을 나누어 식별하기에는 어려움이 있습니다.
2) ibatis와 같이 개발언어와 독립적인 외부 파일로 추출된 형태의 경우
SQL 주석에 식별자를 제공하고 log 또는 DBMS가 제공하는 기능을 이용하여 확인하는 방식을 선택할 수 있습니다. ( Coverage4iBatis의 경우에는 SQL 주석안에 CoverageID 를 부여하고 로그에서 실행 여부를 확인하고 있습니다. )  cf) ibatis가 제공하는 id를 사용하지 않고 별도의 id를 부여한 것은 나름의 이유가 있었겠죠?
비고 : 고유 ID 내에서도 동적으로 나누어지는 경우를 어떻게 처리했을까 하는 부분은 흥미롭습니다.
Coverage4iBatis 블로그 글에서 예로 보여준 동적 SQL의 iterate 문장의 실행 여부를 어떻게 접근했을까요?


Coverage4iBatis는 두번째 영역인 SQL에 대해 테스트가 되었는지를 확인하는 방법을 제공하고자 했습니다. 물론 특정 프레임워크(ibatis)에 한정적인 접근이기는 하지만 숨겨져있던 DBMS 영역에 대해 또다른 테스트의 메스를 들어올린 점은 반가운 일입니다.


주제넘지만 한가지더 NHN의 생산성 혁신랩에 권고드리는 것은 (SQL의 코딩 컨벤션 가이드가 언급되는걸 보면 아마도 이미 제공하고 있을지도 모르겠네요..) SQL 상의 나쁜 냄새에 대한 패턴을 확장하고, 이를 알려주는 도구도 같이 활용하시라는 겁니다. (java의 PMD와 같은 역할을 생각하시면 될거 같네요.)

Coverage4iBatis 블로그 글 말미에 언급하듯이 테스트하기 쉽고, 단순한 SQL을 작성하기 위해 개발자의 노력이 필요합니다.
코드의 복잡도가 "당신의 코드가 정말 그렇게 복잡해도 되냐"고 다시 생각하도록 유도하듯이,
SQL의  나쁜 냄새에 대해서도 "당신은 그 냄새를 맡고있어도 괜찮냐" 고 물어보도록 하는 것이 좋을듯합니다.

피하지 못한다면 즐겨야겠죠.
posted by smplnote
2011. 12. 29. 08:33 IT

윈도우 NT의 쉘 명령으로 날짜를 제공하는 명령어는 date 입니다.

>date /t
>2011-12-29

아쉽게도 국가코드에 따라 출력되는 포맷이 달라집니다.

이걸 해결하는 방법중 하나가

>command.com /c date
>Current date is Thu 2011-12-29

인데... 이건 또 2003 서버 이상의 OS에는 command.com 을 지원하지 않기 때문에 제약이 있네요.

다른 방법은 각 요일마다 각각 고유한 이름의 배치파일을 실행하도록 at 에 등록하면 어쨌든 해결 될텐데 그닥 깔끔해보이지는 않네요....



posted by smplnote
2011. 12. 23. 08:33 IT
http://www.methodsandtools.com 에서 메일링으로 보내는 뉴스레터입니다.

여기에 항상 재미난 자료가 많이 나와서 관심있게 지켜보고 있는 편입니다.


어떤 주제가 나왔는지 목차 먼저

* How to Make Your Culture Work with Agile, Kanban & Software Craftsmanship  1)
슈나이더의 문화 모델에 따라 각각을 협력(Collaboration)과 성장(Cultivation), 통제(Control), 경쟁(COMPETENCE) 으로 나누어
설명해주고 있습니다.
* How Software Architecture Learns 2)
Russel Brand의 "How Buildings Learn"의 독후감이랄까.. 건축과 소프트웨어를 비교하여 서로의 배울점을 비교해서 설명하고 있습니다.

* Understanding of Burndown Chart 3)
애자일의 가장 기본적인 매트릭인 번다운 차트에 대한 설명

* The Psychology of UX - Part 2
-> 이건 part 1을 읽어야 해서 생략.

* Tools: Cucumber, Sureassert, ChiliProject, Scrum-it 4)
저는 이 툴쪽도 늘 관심있게 보는 편입니다.
Cucumber는 예전부터 알려져있던 툴이고..
Sureassert는 어노테이션 기반 단위테스트 툴인데... 어노테이션 써보려는 아이디어는 저도 제작년에 잠깐 고민했었던 기억이 납니다.
ChilliProject는 redmine의 fork라고 하고..
Scrum-it 은 예전에도 본거 같긴 한데 홈페이지 동영상에서 보여주는
그런 커다란 멀티터치 스크린을 사려면... 배보다 배꼽이 커지지 않을까 싶은 생각이 들더군요..

=============================================================

1) 요약
애자일을 방법론류가 아닌 문화로 바라보도록 하는 시각..
문화는 슈나이더의 문화 모델에 따라 네가지로 분류되는데, 협력(Collaboration)과 성장(Cultivation), 통제(Control), 능력(COMPETENCE) 입니다.


애자일 문화는 협력(Collaboration)과 성장(Cultivation)이라고 합니다.
칸반(Kanban)의 문화는 통제(Control)에 가까움 (애자일은 사람을 우선으로 하고, 칸반은 시스템 우선적이라고 분류합니다.)
물론 통제를 필요로하는 조직, 회사의 입장에서는 스크럼보다는 더 좋은 툴로 활용될수 있다고 하는군요.
소프트웨어 장인정신(Software Craftsmanship)은 능력(COMPETENCE)의 문화라고 봅니다. 
XP의 주요 프랙티스인 refactoring, tdd, atdd, 지속적통합(continuous integration), 지속적배포(continuous deployment), 코드 소유권 공유(shared code ownership), 깔끔한코드(Clean code) 등으로 대표된다.
기존에 통제 문화인 곳에서는 협력이나 경쟁 쪽으로 조심스럽게 나아가도록 권유하고 있다. 
ref) 그림 http://agilitrix.com/2011/04/software-craftsmanship-promotes-competence-culture/
스크린 캐스트 http://agilitrix.com/2011/05/screencast-how-to-make-your-culture-work-with-agile/


 
2)
Russel Brand의 "How Buildings Learn"
- 건물 설계자로부터 배울수 있다. -> 유지보수와 확장성
- 건물 설계자들과 같은 실수를 할 수 있다. 
- 반대로 건물 설계자들은 소프트웨어 설계자로부터도 배울 수 있다. -> 애자일 테크닉
 
 
3) 
스타트업 입장에서 애자일은 product에 집중하도록 해주기때문에 좋은 방법이다. 
 
remaining effort for a given period of time (sprint or release)
X : working day
Y : remaining effort (회사마다 다르게 적용)
 
cf) 
X = Story수 -> 각 스토리는 노력의 규모가 다르므로 실제 진행상태 설명에 적절하지 않다.
X = 시간 => 지나치게 세분화된 관리가 된다.
X = 남은 크기 (remaining size) story point => 계단현상이 나타난다 ( 데일리 미팅을 통해 해소할수 있다.)
 
부가작업이 추가된 경우 발생하는 진척 차이를 설명하기 위해 스프린트 백로그 총계를 표현하는 추가적인 지표가 필요할수도 있다.
 
주의할것은 velocity는 팀의 지표나 KPI가 아니다. 수행가능성을 계획하는데 쓰는 도구(capacity planning tool)일 뿐이다.
 
4) 
- Cucumber 
BDD 툴  http://cukes.info/  v1.1.2 
지원언어 : java ruby .Net
License : MIT License
Given When Then 방식으로 진행
 
장점 : 사례와 자동화의 분리 (코드와의 분리를 뜻하는듯), 지나치지 않는 구조화(심플?)
단점 : 여분의 오버헤드 (개발자만 쓸거라면 rspec이 더 낫다), 정규표현식의 복잡함
 
- Sureassert
어노테이션 기반의 unit testing 도구, 커버리지 제공
www.sureassert.com
대상언어 : java
requirement : Eclipse 3.4 + distro 
License : open source & free 
 
흐름 : declaritive testing -> test execution -> coverage reporting -> 다시..
ex)
@Exemplars(set={
 @Exemplar(instance="'hamburger'", args={"4","8"}, expect="'urge'"),
 @Exemplar(instance="'smiles'", args={"1","5"}, expect="'mile'"),
 @Exemplar(instance="'negtest'", args={"-1","5"},
      expectexception="StringIndexOutOfBoundsException") })
public String substring(int beginIndex, int endIndex);
 
- ChiliProject
웹기반 프로젝트 관리도구
이슈추적, 프로젝트 계획(애자일,스크럼 지원), 시간추적,위키,VCS통합...
http://www.chiliproject.org
requirement : ruby(1.8.7 over), db(mysql,,,)
ROR로 만들어짐.
License : GNU GPL v2
 
redmine에서 fork된 프로젝트임 (redmine이 너무 폐쇄적이라고 판단해서..)
 
 
- Scrum-it
가상 스크럼보드 
http://www.scrum-it.ch 
License : CC By 3.0 
스위스 쮜리히의 BSgroup Technology Innovation AG에서 개발.
기술기반 : java j2ee,  mysql and tomcat , html5, css3, jQuery mobile 
흥미로운건 아이패드에서 보여지는것과 멀티터치 지원..
 
posted by smplnote