'OpenStack'에 해당되는 글 13건

  1. 2012.04.21 2012 OpenStack Folsom Design Summit (2)
  2. 2011.10.17 Nova Client 이해하기
  3. 2011.08.30 Nova 모듈에서 나만의 log file 추가하기
반응형

딱딱한 보고서로는 제가 보고 느낀 것을 제대로 보고할 수 없을 것 같아 이렇게 블로그라도 올립니다.


OpenStack Design Summit 뿐만 아니라 여러 회사가 모이는 컨퍼런스는 정말 중요한 것 같습니다.


사실 하나도 모르는 상태에서 관련 컨퍼런스를 참석한다면 아마도 1/3 도 못 얻어갈겁니다.

그러나 어느 정도 관련 기술을 활용하여 프로덕트를 만들고 있는 상태라면 일부 문제에 대한 해답을 찾을 수 있습니다.


1. 새로운 기술, 프로덕트의 장

    - 이번 컨퍼런스에서 주로 논의된 것은 클라우드에 맞게 기존의 네트워크의 개념을 뒤엎는 내용이었습니다.

      현재 우리가 구축한 시스템도 네트워크 측면에서 Scale out 에 문제가 있습니다.

      사실, 국내에서는 아무도 답을 줄 수 없었죠. 그리고 기존 자기 기술의 틀에 갇혀 해답이 없었습니다.

      저희 시스템도 당분간은 문제 없습니다. 고객이 빠르게 증가한다고 하더라도 어느 정도 확장이 가능합니다.

      근본적인 해결책은 아니더라도 말이죠.

      

      이곳에는 그런 문제들을 고민하고 해결하기 위한 많은 업체들이 자신이 주장하는 것을 제품으로 만들어 

      참여합니다. 완벽하지는 않지만 어느 정도는 서비스가 가능한 제품들이죠.

      그리고 그 제품을 팔기 위해 엔지니어들을 논리적으로 설득시킵니다. 물론 설득에 실패하면 제품도

      쓸데없어 지겠지요.


      하지만 중요한 것은 문제를 해결할 수 있는 기술과 개념입니다. 

      그리고 여기서 힌트를 얻어 어느 정도는 우리도 직접 개발이 가능하다는 생각이 듭니다. 

      절반의 문제는 해결할 수 있는 그림이 그려진 것이죠..


      또한 그들의 제품을 보면서 처음에는 구현이 불가능할 것 같은 요구사항을 구현 가능한 아키텍처로까지

      그릴 수 있었습니다.

      Auto Scaling 및 Hybrid Bursting 구현이 그런 경우입니다.

       

2. 향후 주요 개발 내용 및 방법에 대한 논의

     - OpenStack 의 주요 개발 내용 및 방법은 디자인 서밋에서 결정나는 군요.

        사실 어떤 내용들이 개발될지는 어느 정도 결정이 난 상태 같습니다. 하지만 개발자들이 논의해서

        어떻게 진행할지를 결정하는 것은 인상깊었습니다. 애자일처럼 설계서없이 그림으로 논의하고

        바로 실행에 옮기는 거죠. 그것도 온라인으로.. 이것이 오픈소스 커뮤니티를 가능한게 한거 같습니다.

        물론 논의할 때 좀 무시되는 발언들도 있지만, 그래도 모든 것은 열려있으니까.


        문제는 향후 적극적 참여를 위해서는 개발자간 face to face 로 논의하고 서로를 아는 것이 중요합니다.

        일단 내공을 보여주고 나면 서로에 깊은 관심을 갖게 되는 것이 개발자들이니까요..

        그런의미에서 가능하면 많은 개발자가 디자인서밋에 참여해야 합니다.

        그리고 그 방향에 맞추어 개발에 적극 참여하여야 합니다.

        수동적으로 소스만 갖다 쓸거면 아웃사이더밖에 될 수 없습니다.


        문제는 관련 개발자가 저만 왔다는 것이 문제입니다.

        아무래도 제가 전달하면 감흥이 떨어지겠죠? 시너지 효과도 덜할 거고..

        그리고 여기서 만난 개발자들은 저밖에 기억을 못하겠죠.

        관련 시장이 얼마나 큰데.. 그리고 회사에서 얼마를 투자하는데.. 개발자 몇명을 더 못데리고 오다니..

        회사 입장에서는 소탐대실이라고 밖에 할 수 없습니다.


3. 여러 업체를 통한 현재 우리 기술력에 대한 객관적 평가

      - 같은 기술을 도입하는 여러 업체를 통해서 우리의 기술력을 객관적으로 평가할 수 있었습니다.

         우리가 해결한 고민을 질문하는 업체도 있었고, 반대로 우리가 고민한 것을 솔루션으로 만들어 오는

         업체도 있었습니다.

         또한 질문을 통해서 서로가 얼마나 고민했는지를 알 수 있고요..

         제가 판단한 우리의 수준은 중상 정도??

         

마지막으로 이 곳 실리콘밸리에서는 클라우드 관련 인력과 빅데이터 관련 인력이 없습니다.

구글, 페이스북, HP, DELL, Cisco, IBM, 등등 메이저 업체가 다 데려갔죠..

링크드인에 본인을 잘 소개해 보세요.. 실리콘밸리에서 바로 콜이 올겁니다. ^^




반응형
Posted by seungkyua@gmail.com
,
반응형
Rackspace Nova Client 를 사용하여 API 서버에 호출하는 경로

1.  novaclient/shell.main() 이 entry point 임

2.  novaclient/v1_1/shell.do_boot() 를 호출
    - instance 생성시에 "nova boot ....." 처럼 호출하면 "do_" 를 붙힌 메소드가 호출된다.

3. novaclient/v1_1/client.py 를 이용하여 novaclient/v1_1/servers.ServerManager.create() 를 호출
    - novaclient/v1_1/servers.ServerManager 는 novaclient/v1_1/base.BootingManagerWithFind 를
      상속받았으므로 self._boot() 를 호출하면 novaclient/v1_1/base.BootingManagerWithFind._boot() 가 호출됨
    - novaclient/v1_1/base.BootingManagerWithFind._boot() 에서 self._create() 가 호출되면 
      상속받은 novaclient/v1_1/base.ManagerWithFind 에서 찾고 여기에 없으므로 그 위의 클래스인
      novaclient/v1_1/base.Manager._create() 를 호출

4. novaclient/client.post() -> novaclient/client.request() 를 호출하여 HTTP Request 를 던진다.
    - standard out 으로 print 하려면 환경변수에 NOVACLIENT_DEBUG 를 추가하면 된다.


[파일 호출 순서]
novaclient/shell.py -> novaclient/v1_1/shell.py -> novaclient/v1_1/client.py -> novaclient/v1_1/servers.py 
-> novaclient/v1_1/base.py -> novaclient/base.py -> novaclient/client.py



 
반응형
Posted by seungkyua@gmail.com
,
반응형
일반적으로 노바의 로그는 /var/log/nova/nova-xxx.log 형태로 남는다.

/etc/nova/nova.conf 에 보면 logdir=/var/log/nova 로 되어 있어서 해당 디렉토리에 서비스 모듈명의 이름으로 로그가 남는데 이는 프로세스별로 로그를 만드는 것이다.

만약 사용자 정의의 로그를 만들고 싶으면 다음과 같이 수정한다.

# vi /usr/lib/pymodules/python2.6/nova/log.py

def setup():
...
    reset()
    _ask_setup_log()   // 추가
...
askLogger = logging.getLogger('nova.ask')
def _ask_setup_log():

    if FLAGS.logdir:

        logname = '%s.log' % (os.path.join(FLAGS.logdir, 'nova-ask'),)

        global askLogger

        askLogger = logging.getLogger('nova.ask')

        askLogger.propagate = 0

        askHandler = WatchedFileHandler(logname)

        askHandler.setFormatter(_formatter)

        askLogger.addHandler(askHandler)

 
# vi /usr/lib/pymodules/python2.6/nova/scheduler/chance.py

...
from nova import log as logging
...

    logging.askLogger.debug('********* %s, %s *************', context, topic)


이와 같이 수정하면 /var/log/nova/nova-ask.log 가 생성되며 어떤 프로세스에서 호출하던지 해당 로그에 남게 되어 있다.


novaclient 모듈에서 로그를 추가하고 싶으면 다음과 같이 하면 된다.

# vi /usr/lib/pymodules/python2.6/novaclient/log.py

import logging

from logging.handlers import WatchedFileHandler


logger = logging.getLogger('nova.client')

logger.setLevel(logging.DEBUG)

fh = WatchedFileHandler('/var/log/nova/nova-client.log')

formatter = logging.Formatter('%(asctime)s %(levelname)s %(name)s [-] %(message)s from (pid=%(process)d) %(funcName)s %(pathname)s:%(lineno)d')

fh.setFormatter(formatter)

logger.addHandler(fh)


# vi /usr/lib/pymodules/python2.6/novaclient/shell.py

...
from log import logger
...

logger.debug('******* shell.py called !! ****************')







 
반응형
Posted by seungkyua@gmail.com
,