Tag Archives: 자동화

Provisioning Tool

Chef
Vagrant
Puppet
Ansible

https://cloud.google.com/solutions/google-compute-engine-management-puppet-chef-salt-ansible

https://brunch.co.kr/@jiseon3169ubie/2

https://xebialabs.com/the-ultimate-devops-tool-chest/provisioning-config-management/

NextWebFramework 3. 뷰단의 구조

View단에서 사용가능한 REST Client.

Engine에서 DB2API가 자동으로 지원되게 하는 부분은 간단히 구현이 가능하다.
그렇다면…. thrift를 쓸까 어쩔까 하던… 웹/모바일/…등등등에서 이 API or RPC를 직접 호출하기 위한 방법…?

자바스크립트에서 간편하게 사용 가능한 REST Client가 존재한다면…?
이 부분을 Thrift에서 처리할 생각이었지만 더 간단한게 있다면… 적용할만하다는 생각이 들었다.

그리고 그 기반기술이 될만한것들…
https://github.com/garycourt/JSV
Json Validation라이브러리. 이거 조금 적용해서 도메인 구조를 json으로 정의하도록 만든다.
https://github.com/jashkenas/backbone/
js 모델 라이브러리
http://abaaso.com/
REST관련 라이브러리

프레임워크의 생산성 향상을 위해서는 전용 ide가 필수적인데… json기반으로 도메인을 정의한다면 웹쪽의 ide는 별도로 개발이 필요하지 않게 된다.

그래도 묶음배송기능, 로컬AJAX에서 외부 리소스호출을 위한(크로스도메인땜에) 인터페이스같은건 따로 개발이 필요하긴 하다.
좀 큰 부분은 해결된듯하다.
회사때리치는 일만 남았다.

NextWebFramework 2 : 다언어 모듈분산형 웹개발 프레임워크

프레임워크라는 말이 어울리나.. 아키텍처라고 해야할까

장점 : 멀티플랫폼 개발시, 다양한 언어로 대규모서비스 개발시, 병렬확장구조 개발시

단점 : 성가실수있다

– 필요한것

1. 각 모듈간 호환되는 도메인 정의가 필요하다. 예를들자면… Avro? 그런데 Avro도 이종언어간 통신시에 문제가 발생하는 경우가 있다. avro생성기는 Python의 숫자형을 Java의 Int형으로 변환을 시키는데 이 경우 자릿수가 달라서 Python->Java 방향으로 전송시 오류가 발생한다.

2. Model부분 간소화. rails와 같은 getUserByUsername, getUserByAddress같은 명령이 자동으로 생성되야한다. 자동이 안되는 부분은 model에서 수동으로 처리해야하니까….
ORM의 경우 rails처럼 자동으로 메서드 생성이 안되기도 하고 명확한게 좋기도 하고 자바에 다들 익숙하기도 하니까…. selectQuery(table(by(columns…), joinColumns(…)) …)같은 형태면 어떨까 싶다. V-E-M 구조를 사용할 경우 View설계와 함께 도메인 설계 다음에 테이블 설계가 먼저 이뤄진 상태일테니….
QUERY의 경우 select * from Users u, Board b where u.id = b.user_id; 와 같은 쿼리를 넣고 이름을 정하면 이 요청에 대한 응답은 자동생성….이 되야하는데 데이터 타입이 애매하니 avro나 각 언어 코드로 도메인을 같이 설정해줘야할것같다. 구현은 mybatis를 사용하면 간단. 다른 언어의 경우에는 비슷한 방법을 찾아보도록 해야겠다. 조인데이터의 경우에는 insert, update는 지원되지않고 각 테이블별로 자동으로 생성되는 insert,update코드를 사용하도록 한다.

3. Engine은 MVC모델에서 Service단 역할을 하는데 이 경우 Model의 데이터를 Direct로 필요로 하는 경우가 많다. 이런 처리를 위해서는 pass 자동화 필요. pass의 경우에는 Engine을 거치지 않고 Model로 요청. 각 테이블이 MQ의 채널이 된다면 Engine으로 매핑된 테이블과 엔진으로 매핑된 테이블을 분리시킬 수 있다.

4. Engine부분이 분리되어있기 때문에 View에서 Cross도메인 제약때문에 js만가지고 코딩을 하기는 힘들다. View와 함께 있는 php코드라면 요청 라이브러리를 지원해서 메서드를 호출하게 해서 직접 호출하고, java의 경우에는 controler를 자동으로 생성해주도록 한다. thrift에서 이 부분이 자동화되던데… 좀 고려해봐야겠다.

5. 각 모듈간의 보안..MQ를 쓰는 경우 여기 의존하도록 한다. 직접 통신하는 경우에는 … 설정값 중앙화 라이브러리를 추가로 만들어야하지 않을까…?

6. 모듈분리로 인해 통신포인트가 많아져 속도상에 문제가 발생할 가능성…
있긴한데… 클까? WAS-DB(1개)에서 View-MQ-Engine-MQ-Model-DB(5개)로 늘어난다.
요즘 웹페이지가 예전처럼 단일호스트단일페이지가 아니라 로그인하고 화면을 보여주는데도 리소스서버WAS인증서버등등을 거치게 되는것을 고려한다면 뭐 별로 커지는건 아닐지도 모르겠다. 다중 ajax요청을 묶음배송기능을 추가한다면 이 부분을 커버가능하겠다. 그런데 ajax묶음배송기능을 그냥웹에서도 쓰게될텐데…..

 

만들것 :

ajax묶음배송기능.

ajax용 controller 자동생성기능. javascript에서 도메인 설정을 해놓으면 거기에 맞게 자동으로 처리되도록… thrift 사용을 심각하게 고려.

Model자동화기능. 테이블을 스캔해서 domain파일을 자동생성해주는 기능은 필수. 만들어본적은 있는데… 디비마다 값이 다를 수 있어서 내가 쓰는 디비만 만들고 나머지는 설정파일을 추가해서 사용하도록 변경필요.

 

Java ‘겟셋기’를 제거해주는 lombok

자바를 처음 배우는 사람은 보통 이런 의문을 갖게된다.
‘겟셋’기 이 ㄳ끼들 왜 매번 써 줘야되는거야
C#처럼 간략화된 문법을 쓸 수 있는것도 아니고…

정말 불편한 반복작업이다. 현대 프로그래밍의 원칙.
반복작업은 과감하게 없애라!

그래서 이걸 직접 어노테이션 기반으로 한번 만들어볼까? 라는 생각을 해 본 적이 있었다. 그리고 프로젝트를 생성하고 혹시나 하고 구글검색을 찍어보니 나온 녀석!
project-lombok
이클립스 플러그인까지 제공되서 빨간불도 안 뜨고 처리를 해 준다.

이제는 lombok도 자바 개발 그룹에서 차차 자리를 잡아가는 듯 하다.
내년이나 그 후쯤되면 이클립스의 기본 프로젝트로 자리잡을지도 모르겠다.
jdk8정도에는 이게 기본으로 적용될지도…

http://projectlombok.org/

정말 쉬운 사용법이 홈페이지에 소개되어있다.

jar파일을 다운받아 설치 – 보통 더블클릭으로 실행이 된다.
라이브러리 목록에 jar을 포함시킨다.

이런 라이브러리가 있어야 하는 상황이 웃긴다. 자바의 구조상의 문제라고 생각된다. 자바 넥스트라던가 하는식으로 자바의 개정판같은 언어가 나왔으면 좋겠다. 아니면 인기없는 7을 과감하게 건너뛰고 jdk8로 직행한다던가?