deview 2014 - 월요일

S 2014. 10. 7. 09:12

1      자바스크립트 라이브러리 개발/운영 경험기


어떤 라이브러리 개발을 하고 서비스를 하게 경우, Upgrade 부담이 가게 되어있다.

비스의 안정성으로 인한 문제인데, 해결책으론 버저닝 (Versioning) 규칙 쉽게 하는 방법이 있다.

예로들면, Semantic Versioning 있겠다.

                     X (major)  Y(minor)  Z(patch)

다만 패치를 했을 경우, 몇 개의 부분을 수정했는지 크기를 알 수 없어

1개 수정하든 3개를 수정하든 패치 버전 업은 한번 일어나는 경우가 생기게 된다.

| 파일 | 버전 | 상세 내용 | 메소드 | … 이런식으로 각각의 수정 사항에 대해 상세화 시켜줌으로 해결할 수가 있다한다.

 

라이브러리를 개발하기 위해선 변화에 대응하기 위해 테스팅을 많이 해야한다.

테스트도 두가지 경우가 있다. 자동화 테스트, 사람 테스트

자동화 테스트 도구론 JsTestDriver

이벤트 시점에서 테스트 할 수 있는 Testem, Karma (Core – 테스트) 가 있다.

사람 테스트는 수치화 안되어 있는 것 (파일 업로드 등등 .. )인데 밀도 있게 하면? 된다한다.

Ex) 컴포넌트 별 기능 별로 테스트

 

결론, 라이브러리 개발은 단위 테스트 도구 활용, 사람 테스트 밀도 있게끔 하고

추가적으로 최소한의 의존관계, 발전 방향 쉽게 구성

Ex) Cross browsing (Polyfill) Syntactic sugar(Core)에 까는 식

이렇게 할 시에는 Polyfill은 외부 개발자에게 지원 받을 수 있음.

 

2   간결하고 효율적인 안드로이드 앱의 구조와 전략


http://blog.naver.com/kildongs - 소스 보기

안드로이드 개발 중 대부분의 버그들은 Data Transfer에서 발생한다.

( Intent, Uri 잘 다루는 것이 중요하다 )

또한 안드로이드를 개발할 때, 액티비티의 static도 안정하지 않아, Application 객체에다 저장하는 게 낫다. Application 객체만 잘 설계해도 좋은 어플리케이션을 만들 수 있다.

Application 객체를 사용하기 위해선 AppContext 라는 클래스를 만들어 Application 관련 처리를 편리하게 사용할 수 있게 구성을 해야한다.

개발시, 드를 간결 하는 것도 중요하다.

Inheritance, Reflection, Generics, Annotation, XML 이용하면 간결하게 있다.

findViewById 메소드는 복잡성 증가 시켜 어노테이션, 리플렉션을 이용하여

@DeclareView 통해 해당 뷰를 받게끔 구성. 수도 있다.

 

XML 부분 UI 컴포넌트 나누는 작업도 어느정도 해줘야한다.

예로는 Resource Id Mapping 간략화, Preference Xml 생성하여 변하지 않은 것은 넣기가 있다.

 

@BundleField 어노테이션 사용으로  DataTransfer 코드를 줄일 있다.

과정은 다음과 같다.

Uri 스킴? 매핑 객체 만든후, 클래스 멤버로 참조하여 사용하는 방법을 주로 한다.

 

인텐드 사용할 때도, Intent Serialize 되면 데이터양이 많은 것들은 전송이 힘들 경우가 있다.

따라서 AppContext.putValue 처럼 AppContext 클래스를 적극 활용하는 것도 하나의 방안이다.

 

Table, Cursor 단순화는 @DataField ( Cursor Reader, Content Values Mapper ) 객체 활용하면 된다.

하지만 나와있는 API들이 존재하므로 Jackson, XStream (API – Data Object Model)

를 사용해도 무방하다.

다만 API는 안드로이드 최적화가 되어있지 않아 한번 더 Convert 해야한다는 점이 불편하긴 하다.

간격하고 효율적인 안드 세미나를 들으면서, 어노테이션에 대해 다시 돌이켜보는 기회가 되었다.

어렵지도 않으면서, 어느정도 융통성 있게 어노테이션과, 리플렉션을 사용하면 코드의 양과 간결함을 유지할 수 있다고 한다.

그 말에 대해 어느정도 공감이 되는 부분이었고, 해외에서도 여러 어노테이션을 사용하는 API?가 존재한다. (AndroidAnnotations, GoogleGuice 등등..)

이런 API를 적극 활용하여 다음번에는 개발을 해봐야겠다.

 

3      Docker로 보는 클라우드 서버 운영의 미래

 

Docker 핵심적인 내용은 각각의 리눅스 서버의 세팅에 대한 설정 관리를 Docker 대신해 준다는 .

해당 리눅스 이미지를 저장하여 버전에 따라 다시 불러오는 기능을 수가 있다.

도커에 대해 들어보긴 했어도 어떠한 기능을 하는지 감을 잡을 수가 없어서 듣게 되었는 데, 아직까지는 도커를 쓰고 경험하기에는 거리가 먼 일들이라는 것을 깨닫게 되었다.

기능 자체가 개발적인 부분도 일부 포함되어 있지만, 환경이 변하지 않고 그 상태에서만 지속된다면 도커의 효과를 맛보기란 어렵기 때문이다.

 

4      How can I hack your application?


보안이란 것은 시간을 버는 관점으로 봐야한다는 것이 핵심.

절대로 완벽한 보안은 없다.

마지막 세션에서 안드로이드 APK를 디컴파일하여 소스를 분석한다음, 악성코드를 심는 과정까지 간단하게 설명을 해주었다.

해킹툴만 가지고 있고 어느정도의 소스 분석 지식만 있다면 누구나 해킹을 할 수 있다한다.

데이터를 보내는 것들 또한 암호화 시키고 해커가 디컴파일해서 소스분석해도 잘 모르게끔 하는 것이 중요.

 

* 워드에다 쓰고 티스토리에다 쓰니깐 깔끔해지는 듯?

'S' 카테고리의 다른 글

소나 버그 잡기  (0) 2017.06.12
Scala  (0) 2017.05.05
SSH 접속 끊김  (0) 2017.03.20
jboss 서버 utf-8 설정  (0) 2014.07.19
<모델1과 모델2>  (0) 2012.01.02

설정

트랙백

댓글