반응형
블로그 이미지
개발자로서 현장에서 일하면서 새로 접하는 기술들이나 알게된 정보 등을 정리하기 위한 블로그입니다. 운 좋게 미국에서 큰 회사들의 프로젝트에서 컬설턴트로 일하고 있어서 새로운 기술들을 접할 기회가 많이 있습니다. 미국의 IT 프로젝트에서 사용되는 툴들에 대해 많은 분들과 정보를 공유하고 싶습니다.
솔웅

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

카테고리

미국 영주권 받는 절차

2013. 12. 1. 12:05 | Posted by 솔웅


반응형

GREEN CARD APPLICATION PROCESS – WORKFLOW



매년 H-1B나 L-1 신분으로 직업을 가지고 있는 미국의 많은 비 이민자들이 그린카드를 신청한다. 그린카드(영주권)는 미국에 합법적으로 영구 거주할 권리를 부여한다. 그리고 그린카드 소지자는 미국내에서 직업을 갖고 거주를 할 수 있는 자격을 부여한다.

아래 그린카드 프로세스에 대한 재밌는 만화가 있다.

저 아래 flowchart를 보면 이 만화가 무슨 뜻인지 알게 될 것이다.




GREEN CARD APPLICATION PROCESS


아래 H1BWiki 가 제공하는 flow chart가 있다. 그린카드를 신청할 때 밟아야 되는 과정들을 보여준다. 이 flowchart는 특히 H-1B나 L-1 인 경우에 EB-1, EB-2 혹은 EB-3 카테고리로 영주권을 신청할 때의 과정을 보여준다.




위 flow chart는 EB-1, EB-2 나 EB-3 카테고리로 그린카드를 신청하는 경우의 과정을 보여준다.



반응형


반응형

새로 투입된 프로젝트에서 어제 드디어 노트북을 받았습니다.


받자마자 필요한 프로그램 깔고 세팅하고 등록할 시스템에 등록하고 permission들 받고 정신없이 세팅 했는데.


오늘부터 당장 일이 주어지네요.

컴퓨터만 주어지면 그냥 일을 시작해야 되는 그런 분위기입니다.


이번 프로젝트는 제가 테스팅 팀에서 일하게 됐는데요. 이쪽 회사는 테스트와 관련된 체제가 아주 잘 돼 있는 것 같습니다.


일단 다음에 이런 류의 프로젝트에 투입돼서도 처음 하는 일은 개발환경 세팅이고 이게 거의 유사할 테니까 한번 간략하게 나마 정리해 두면 나중에 도움이 될 것 같네요.



인터뷰 합격에서 프로젝트 조인까지


일단 합격에서부터 조인까지 한번 정리해 보자면요.

지난번 프로젝트 끝나고 일이 꼬이는 바람에 갑자기 Bench 에 있게 됐습니다.

(컨설팅 회사에서는 대개 고객 회사로 가서 (On Site) 그쪽 프로젝트를 컨설팅 해 주는 방식으로 일이 진행됩니다. 그러다 보면  프로젝트와 프로젝트 사이에 특별히 일이 없는 때가 있을 수 있는데요.

이런걸 Bench 에 있는다고 말합니다.

원래는 그런 기간 없이 일을 진행합니다. 그리고 웬만해서는 Bench를 허락하지 않구요.

그런데 이번에는 일이 좀 꼬여서 그렇게 됐습니다.


하지만 지난 프로젝트가 9월말에 끝나고 새로운 프로젝트에 10월 초에 합격했으니 실질적으로 Bench에 있는 기간은 많지 않았습니다.


이곳에서는 합격을 하더라도 그 사람에 대해 Background check를 진행합니다.

보통 1주일 걸리는데요. 주로 전과기록이나 현재 범죄자로 수배중인지 혹은 금전적으로 파산이나 부도 등의 안좋은 기록들이 있는지 뭐 이런걸 조사하는 것 같더라구요. (정확하지는 않습니다)

저의 경우는 한국쪽 기록도 검사한다면서 제 기록을 회사에 제공해도 좋다는 각서를 받아가더라구요.

그래서 시간이 더 걸렸는데요. 그래서 한 3주 가까이 기다렸습니다.

아마 중간에 미국 정부 Shutdown 이 있어서 그 영향도 있지 않았나 짐작만 해 봅니다.


Background Check 가 Green 으로 평가 됐다는 연락을 받자마자 새로 조인할 프로젝트 매니저한테 연락했더니 저에게 1주일 시간을 주더라구요. 미국 남서부에서 중북부로 이사 하는 시간을요. 거의 2000마일 이니까 3200 키로미터 정도 됩니다.



짐 나르는거는 2500불 자동차는 1000불 정도 들었습니다.

이 돈은 나중에 영수증 첨부해서 회사로부터 받을 수 있습니다.


이렇게 해서 첫 출근을 한것이 11월 4일 월요일 입니다.

가자마자 일을 시작하는 건 아니고 또 SSO (회사 내부 시스템을 이용할 수 있는 권한)를 받아야 합니다.

그래야지 자리도 정해지고 노트북 컴퓨터도 나오고 전화기도 한대 주어지고 하거든요.

그 SSO와 노트북을 어제 (13일)에 받았습니다.

월요일이 Memorial Day 로 공휴일이 었으니까 그거 받는데 일주일 조금 넘게 걸릴거네요.


이제 SSO 가 나왔으니까 Desk가 정해지고 전화기가 나오고 제 사진이 박힌 회사 출입증이 나올 수 있습니다.

Desk는 대충 빈자리에 앉으면 되니까.. 일단 노트북을 받았으니까 일은 시작할 수 있게 됐습니다.




개발 환경 세팅 하기


일을 시작하기 전에 일을 시작할 수 있도록 여러가지 툴들을 깔고 내부 시스템에 등록하고 필요한 권한을 받고 해야 합니다.


먼저 자바 개발자이니까 제일 먼저 JDK 를 깝니다. 


그 다음에는 Eclips 를 J2EE 용으로 다운 받아서 설치 합니다.

최신 버전을 받았는데 요즘 최신버전은 Kepler 더군요.

그리고 그 Eclips에 필요한 플러그인을 설치합니다.


TestNG - 테스트를 작성할 때 framework으로서 사용합니다. 이것을 사용하면 Report 결과를 쉽게 볼 수가 있고 Data Driven 테스트 케이스 작성되 가능합니다.


Maven - Build Tool 이죠. Compile, Pack, Test (integration), Deploy 등을 자동으로 할 수 있게 해 줍니다. 그리고 Dependency Management 기능도 있어서 필요한 jar 파일들을 이클립스에 자동으로 import 해 줍니다.


Selenium Webdriver - TestNG와 함께 사용해서 테스트 케이스를 만듭니다. 실제 로직은 이 Selenium 으로 작성합니다.


Subeclipse - svn 이죠. 버전 관리 툴 입니다.


이 정도가 주요 툴 입니다.



그리고 Client 측에서 만든 Framework이 있는데요. 이 Framework은 Selenium 을 좀 더 편하게 사용할 수 있도록 만든 Framework 입니다.


그리고 또 다른 툴로는 ALM 이 있더라구요.

ALM 은 Application Lifecycle Management 로 이 프로젝트에서는 HP것을 사용하고 있습니다.


그 다음에 Continues integration 툴인 Jenkins를 사용하구요. 

이건 서버 역할을 하는 거니까 제 로컬에는 깔지 않구요. 그냥 접속 권한만 받았습니다.


그리고 개발자들이 사용하는 Portal 시스템에 등록도 했구요.


그리고 아직 등록은 하지 않았는데 원격에서 시스템을 사용할 수 있는 권한인 VPN을 이용하기 위해 Token 도 받아야 합니다.


이렇게 겨우 일 시작할 수 있을 정도로 세팅을 해 놓으니까 곧바로 일을 주더라구요.


오자마자 두개의 프로젝트를 뛰라고 지시 받았습니다.


Main은 Oracle에서 Teradata 로 Migration 작업을 하는 프로젝트에서 데이터 비교 검증하는 테스트일입니다.

그리고 제가 support 하여야 할 프로젝트에서는 Selenium Webdriver를 사용해서 UI 를 테스트 하는 겁니다.


아직 Main 작업을 들어가지 않았는데 UI 테스트 쪽 support 하면서 하루에 테스트 케이스 10개씩 만들라고 할당 받았습니다. (뭐 익숙해지만 하나도 안 많은 거지만.. 아직 익숙하지 않은 툴들도 있고 이쪽 시스템도 제대로 분석 못했는데...)


뭐 초보자로 들어와서 일을 배워가면서 해야 되는것도 아니고..

이쪽 SI 시장이 그렇죠 뭐. 

일이 많으면 얘기하라고 하더라구요. 그러면 인도쪽 offshore 팀 하나 만들어 준다구요.

그러면 매일 밤마다 그쪽이랑 미팅하고 해야 되는데...


일단 저부터 이쪽 일을 어느정도 파악 한 다음에 생각해 봐야겠습니다.

반응형

Jenkins 에 대한 개요

2013. 11. 8. 11:02 | Posted by 솔웅


반응형

What is Jenkins?



Jenkins는 반복되는 job들에 대한 실행을 모니터 하는 award-winning application 입니다. 예를 들어 소프트웨어 프로젝트를 빌드한다던가 cron에 의해 실행되는 job들 같은 경우 이지요. 그런 일들 중에 현재 Jenkins는 아래 두가지 job들에 포커스를 맞추고 있습니다.

    Building/testing software projects continuously, just like CruiseControl or DamageControl. Jenkins는 지속적으로 integration이 진행되는 시스템 에서 이러한 일들을 쉽게 사용할 수 있도록 해 줍니다. 개발자들이 프로젝트를 진행하면서 이루어 지는 integrate change들을 쉽게 진행할 수 있도록 해 주는 것이죠. 그리고 빌드 하는 작업도 쉽게 진행하도록 도와 줍니다. 자동화되고 지속적인 빌드는 생산성을 높여줍니다.
 
    cron job들과 procmail job들 같은 외부에서 실행되는 job들에 대한 모니터링을 합니다. 원격에서 실행되는 job들에 대한 모니터도 가능합니다. 예를 들어 cron의 경우 output을 capture 한 정기적인 이메일을 받는 일등이 있을 수 있습니다. 여러분은 정기적으로 이 이메일을 점검함으로서 뭔가 이상이 있을 때 이것을 알아챌 수 있는 것입니다. Jenkins는 이런 output들을 보관하고 뭔가 이상이 있을 때 여러분이 알아채기 쉽도록 도와줍니다.




구글에서 Jenkins 로 검색하면 이런 미인 사진도 나옵니다.

하지만 지금 공부하고 있는 Jenkins의 로고는 아래 이미지 입니다.




Who is using it?

많은 회사들과 기관들이 이 Jenkins를 사용하고 있습니다. 대부분의 instance들은 firewall 안에서 실행되죠. 구글 같은 경우에는 public하게 visible한 instance들을 사용하기도 합니다. 여기를 보시면 anonymouse usage를 수집한 통계 자료를 보실 수도 있습니다.


Features

Jenkins 에는 아래와 같은 기능들이 있습니다.:

    Easy installation: Just java -jar jenkins.war, 혹은 a servlet container 내에 deploy. 다른 추가적인 인스톨 필요 없음. 데이타베이스 필요 없음.
    Easy configuration: web GUI를 통해서 쉽게 configuration을 할 수 있음. 실시간으로 에러 확인이 가능하고 inline help를 받을 수 있음. XML를 수정하고 하는 작업이 필요 없음. XML을 통해서 configuration을 하고 싶으면 그렇게 할 수도 있음
    Change set support: Jenkins는 Subversion/CVS로부터 빌드하면서 만들어진 변화들의 리스트를 generate 할 수 있음. 이것은 repository 의 load를 줄이기 위한 아주 효율적인 방법입니다.
    Permanent links: Jenkins는 대부분의 페이지에 대해 깔끔하고 가독성 있는 URL을 제공합니다. "latest build"/"latest successful build" 같은 permalinks등을 포함해서요. 그래서 다른 곳에서도 쉽게 링크 작업을 할 수 있습니다.
    RSS/E-mail/IM Integration: Monitor build results by RSS or e-mail to get real-time notifications on failures. failure에 대한 실시간 notification들을 얻기 위한 RSS나 이메일에 의한 빌드 결과 모니터 함.
    After-the-fact tagging: 오래전에 빌드가 완료된 것에 대해서도 tag가 가능합니다.
    JUnit/TestNG test reporting: JUnit test report를 보여 줍니다. history 정보도 보여주고요. history trend도 그래프로 보여줍니다.
    Distributed builds: Jenkins can distribute build/test loads to multiple computers. This lets you get the most out of those idle workstations sitting beneath developers' desks.
    File fingerprinting: Jenkins can keep track of which build produced which jars, and which build is using which version of jars, and so on. This works even for jars that are produced outside Jenkins, and is ideal for projects to track dependency.
    Plugin Support: Jenkins can be extended via 3rd party plugins. You can write plugins to make Jenkins support tools/processes that your team uses.



Jenkins Best Practices

최근 automated test를 진행하는 Continuous Integration에서 Jenkins를 많이 채택하고 있습니다. CI(Continuous Integration)의 개념이 이제는 Build Management, Release Management, Deployment Automation, and Test Orchestration 쪽으로 바뀌고 있습니다. 이 섹션에서는 Jenkins를 사용하기 위한 best practic 들의 세트를 제공합니다. - A Continuous Integration Solution to provide executives, business managers, software developers and architects a better sense of the development progress and code quality of projects throughout the development lifecycle. (View Jenkins Best Practices)


Introductory Articles

아래 링크들 중 많은 부분이 Hudson을 참조하고 있습니다. Jenkins의 원래 이름이 Hudson 이었습니다.



   

Test Drive

test drive를 위해 Java Web Start를 통해서 Jenkins를 시작합니다. jenkins가 시작되면 dashboard를 얻기 위해  http://localhost:8080/로 갑니다. 이 Jenkins에 여러분이 세팅한 configuration은 ~/.jenkins에 저장됩니다. Jenkins가 restart 하게 되면 이 저장된 configuration을 참조해서 계속 적용되게 됩니다.



Installation

Jenkins를 실행하려면 JRE 1.5 버전 이상이 깔려 있어야 합니다. 그 다음 jenkins.war를 다운 받은 후 java -jar jenkins.war 라는 명령어를 통해서 이것을 실행 시킬 수 있습니다. 이것은 기본적으로 test drive와 같은 set up 인데요 다만 oupput 이 윈도우가 아니라 콘솔로 가는 것이 다릅니다.

그리고 여러분이 Glassfish, Tomcat 5, JBoss, Jetty 6 같은 Servlet 2.4/JSP 2.0 이후 버전을 지원하는 서블릿 콘테이너를 가지고 있다면 jenkins.war를 다른 WAR 파일처럼 deploy 할 수 있습니다. container-specific installation instruction 에 대해 좀 더 자세히 할고 싶으시면 이 문서를 보세요.

일단 war 파일이 explod 되면 jenkins/WEB-INF directory 안에서 chmod 755 jenkins를 해 주세요. 이렇게 해야 이 shell script를 실행할 수 있습니다.

만약 Window에서 실행한다면 Jenkins를 service로서 실행해야 할 겁니다. 그래야 자동적으로 start up 시킬 수 있을테니까요. 이렇게 하기 위한 가장 쉬운 방법은 Jenkins를 native Windows installer를 다운받아 인스톨 하면 됩니다. 이 파일은 Jenkins main page에서 다운 받으실 수 있습니다. .zip 파일을 다운 받으신 후 압축을 풀고 인스톨 파일을 클릭하시기만 하면 설치 마법사를 통해 설치하실 수 있습니다. 이 설치 마법사가 Jenkins를 인스톨 하고 Jenkins Windows service도 셋업해 줄 겁니다.

Jenkins를 서비스로 등록할 수 있는 다른 방법은 톰캣을 서비스로서 인스톨하고 Jenkins를 이곳에 deploy 하는 방법도 있습니다. 그리고 Java Service Wrapper를 사용할 수도 있구요. 그런데 service wrapper를 사용하면 약간의 문제가 있을 수도 있습니다. 왜냐하면 디폴트 namespace에 있는 Jenkins의 Main 클래스가 이 service wrapper main class와 충돌할 수 있기 때문이죠. service container (Tomcat, Jetty, etc.) 안에 deploy 하는 것이 아마 좀 더 직관적일 겁니다. 이와 관련해 별로 경험이 없는 개발자들도 쉽게 하실 수 있습니다.

다양한 환경에서 다른 사람들은 Jenkins/Hudson을 어떻게 deploy 했는지 보시려면 아래 링크들을 참조하세요.



License

The license for the core might be found at https://github.com/jenkinsci/jenkins/blob/master/LICENSE.txt


반응형