Development 89

화면 개발을 위한 몇가지 요소들.

화면개발을 위한 몇가지 요소들. web application 에서는 backend 못지않게 frontend 도 중요하다. 아무리 성능이 좋아도 사용자를 위한 UI 가 시원찮다면 저평가를 받게 되어있다. 화면을 개발할때 ui frameworks, components 등의 용어들이 사용되는데 개발시에 여러 용어들을 정확하게 정의하지 않고 혼용되면서 구성원들 간에 혼란이 발생할 수 있는데 용어부터 정확하게 정리해본다. UI Frameworks JavaScript Frameworks UI Components Frontend Frameworks 와 같의 의미이다. CSS 컨트롤이 필요하며 개발자보다는 디자이너나 퍼블리셔의 역량이 필요하다. 프로젝트 성격에 따라서 적절하게 customizing 해서 사용한다. 한번..

Spring Framework 에서 Batch 구현하기

Spring Framework 에서 Batch 구현하기 일반적으로 batch 작업은 일련의 작업을 몇개의 단위로 묶어서 연속적으로 일괄처리해주는 것을 말하며 일반적으로 일정시간(주로 야간)에 정기적으로 실행하거나 사용자의 요구에 의해서 실행된다. 규칙적으로 실행하기 위해서 scheduler 를 사용하며 background 에서 실행되기 위해서 thread 로 작동하는 경우가 많다. 이를 구현하기 위해서 몇가지 방법이 있는데, spring framework 에서는 1. 단순한 단일 작업이냐 아니면 2. 선/후행 작업으로 나눠지는 복잡한 작업이냐에 따라서 구현 방법을 달리한다. 전자의 경우 비즈니스 로직을 구현하고 thread 로 실행시킨다. 정기적으로 실행하는 경우는 scheduler 를 붙여서 구현한다...

Development/Spring 2017.09.21

Intellij Idea 에서 JUnit 사용하기.

Intellij Idea 에서 JUnit 연동하고 사용하기. intellij 가 버전업이 되면서 기존에 maven 프로제트 생성했을때 main 과 같은 depth 에서 자동으로 생성되던 test 디렉토리가 사라졌다. 이제 단위테스트를 하기 위해서는 수동으로 test 디렉토리를 생성해주어야 한다. 개발환경 JDK 1.8 Spring Framework 4.3.7 RELEASE MAVEN 3 Windows 10 프로젝트 환경설정에서 src 밑에 test > java 를 생성하고 java 디렉토리를 Tests 로 설정을 해준다. 소스상에서 테스트를 원하는 클래스명 위에 커서를 올린다음 alt + enter 를 치면 메뉴가 출력되는데 그중에서 create test 로 테스트할 클래스를 생성한다. destinati..

Development/IDE 2017.09.05

Spring Framework 과 Redis 연동

Spring Framework 과 Redis 연동하기. NoSQL 이란 Big data 를 처리하기 위한 분산 데이터 저장소를 통칭하며, Redis 는 key-value 형태의 데이터 저장소를 지원하는 NoSQL 의 일종이다. CAP(Consistency, Availability, Partition Tolerence) 특징중에서 CP 에 더 가까운 고속의 읽기/쓰기에 최적화 된 모델이다. 개발환경 JDK 1.8Spring Framework 4.3.7 RELEASEMAVEN 3Windows 10 Windows 용 Server 구동 Redis 는 Linux, Unix, MacOS 는 지원하지만 Windows 는 정식으로 지원하지 않는다. Windows 용 서버는 개발/스터디 용도로만 사용해야 한다. ......

Development/Spring 2017.08.07

Spring Framework 과 RMI 연동

Spring Framework 과 RMI 연동하기. RMI 는 JDK 1.1 부터 추가되었고 한때는 CORBA, EJB 와 함께 분산 시스템을 구축하기 위한 기술로써 사용되었으나 Java 에 국한되는 단점이 있었고 SOA, ROA 등의 개념을 탑재한 다른 기술들이 널리 사용되면서 현재는 많이 사용되고 있지는 않다. server 를 POJO 형태로 간단하게 띄우는 방법도 있고 Spring Framework 에 통합되어 제공하는 방법도 있다. POJO 샘플은 Java 책마다 기본적으로 제공되므로 Spring Framework 과 통합해서 Server / Client 로 사용하는 방법을 정리한다. Spring Framework 에서는 RMI 기능의 많은 부분을 자동화해서 내부적으로 지원하며 개발자(사용자)는 ..

Development/Spring 2017.08.04

Spring Framework 과 ActiveMQ 연동

Spring Framework 과 ActiveMQ 연동하기. 간단한 비동기화 로직은 스프링에서 제공하는 async annotation 을 사용해서 처리가 가능한데 대용량 데이터를 비동기로 안정적으로 처리하기 위해서는 메시지 서비스의 일종인 ActiveMQ 를 연동해서 사용한다. 전체적인 process 를 간략하게 설명하자면, Application Server 에서 listener container 를 구현하고 구현한 listener 를 통해서 ActiveMQ 와 통신한다. Application Server 에서 listener container 로 domain object 를 던져주면 converter 에서 jms message 로 변환해서 ActiveMQ 에 전달하고 ActiveMQ 로 부터 받은 jm..

Development/Spring 2017.07.25

Spring Security

Spring Security 스프링 2.x 버전 사용할때 security 살펴보고 10여년 만에 다시 볼려니 세월이 많이 지나서 다 잊어버렸고 실제 프로젝트에서는 spring security 보다는, authentication 은 자체 로직으로 처리하고 authorization 은 admin 에서 설정하는 방법을 많이 사용하다보니 spring security 는 점점 사용하지 않게 되었다. 이번 프로젝트에 spring security 를 적용해보고자 오랜만에 삽질을 하면서 article 을 정리해본다. 내가 원하는 기능은 1. 비밀번호 암호화해서 비교. - Sha256 을 이용한 암호화. 2. admin, user role 별로 페이지 접근 제어. 3. remember me 기능 적용. - 쿠키 또는 d..

Development/Spring 2017.07.20

GPKI 라이브러리를 이용한 암복호화 구현하기.

관공서에서 시스템 연계를 위해서는 개인정보 관련 문제때문에 데이터를 GPKI 를 이용해서 암복호화를 해야한다. 주무관을 통해서 요청하면 해당 api 와 도큐먼트를 받을 수 있는데 내용이 좀 부실하다. 구글링을 해도 gpki 성격상 자료가 많지 않거니와 연계 담당자도 처음부터 끝까지 자세히 알려주지 않는다. 어느정도 진행되면 조금 더 알려주고 또 어느정도 개발이 진행되면 조금 더 알려주고.. 하는 식이다. xx행정쪽으로는 미리 우리의 ~.cer, ~.key 파일정보를 보내주었다. xxx시청에서 xx행정시스템과 연계 테스트를 하면서 gpki 를 이용한 암복호화를 테스트했는데 진행 방법을 정리한다. 목적 :xxx시청 xxx 시스템이 xx행정시스템과 연계하기 위해서 데이터를 gpki 로 암복호화. 1. JNI ..

Data 설계와 처리방법의 중요성.

예전에 제품 퍼포먼스에 문제가 심각했었는데 서버쪽에서라도 문제의 일부를 해결해보자고 판단해서 서버를 새로 만들기로 결정했다. 퍼포먼스가 문제라면 차라리 c++ 로 구현할까 아니면 netty 로 구현할까 한참을 고민하다가 netty 의 성능이 꽤 좋다는 의견들이 많고 개발기간이 촉박해서 netty 로 구현했는데 중간중간 테스트에서도 만족할만한 성능을 보여줬다. 하지만 문제의 가장 근본이었던 database 구조를 수정하지 않았고 제품에서는 그 구조의 data 를 그대로 사용하다보니 data 가 커지기 시작하면서 다시 예전의 퍼포먼스 문제가 동일하게 발생했다. database 모델링을 다시하고 구조를 수정하기 위해서는 제품의 컨셉을 재점검 해야할 필요도 있고 이런것들이 사상 자체를 뒤흔들수도 있다. 한마디로..

Development 2016.11.25

Erwin 에서 논리모델 <--> 물리모델 컬럼 정렬하기.

Erwin 에서 논리모델로 컬럼을 추가한뒤 물리모델로 가서 reset 하면 새로 추가된 컬럼이 논리모델에서의 순서대로 맞춰 보여지는데, 실제 스크립트 파일로 생성하면 논리모델에서 정렬한 컬럼 순서가 아닌 추가된 순서로 정렬되어 있다. Tools > Forwawrd Engineer > Schema Generation 메뉴에서 좌측의 Colmun 을 선택한 뒤 Physical Order 항목의 체크를 해제한다. 다시 스크립트 파일을 생성하면 논리모델에서 정렬한 순서대로 컬럼들이 정렬된 것을 확인할 수 있다.