본문 바로가기

JAVA/전자정부프레임워크

첫번째 온라인 강의

728x90

강의를 들으면서 메모했던 내용들이라 나만 보기 편함(pdf강의록 존재)
정보를 얻으실 예정이라면 읽어보셔도 되나 빡칠수도..

 

# 프레임워크 등장배경

재사용하는 방법, 방식이 많이 발전되어왔음

copy&paste => 가장 많이 쓰는 방법이나 본인이 만든 것이 아니면 어려움

메소드 => 작업 영역이 다른 경우 사용하기 쉽지 않음

객체 => 하나를 사용하려고 했으나 라이브러리를 찾을 수 없다는 둥 결국 다 가져와야 했음

디자인 패턴 => 세련되게 잘 짜고자 하는 노력, 패턴 하나하나를 잘 짜기 위해 다보기에는 너무 어려운 작업 ==> 잘 짠 코드 하나를 다른 곳에도 적용해봤으면 좋겠다

====> 프레임워크 등장

디자인 패턴 = 나무, 프레임워크 = 디자인패턴이 하나하나 모인 숲

 

일련의 문제 해결을 위한 추상화된 디자인을 구현한 클래스들의 집합

아키텍처와 디자인 패턴의 칩함

재사용 가능한 API집합

반제품 성격

애플리케이션의 틀과 구조를 결정, 개발자의 코드를 제어함 =>초반에 많은 개발자들이 불편함을 느낌 => 나는 이렇게 하면 되는데 왜 프레임워크에서는 이렇게 못해?

 

sw 개발 코드 1000줄만 넘어도 보기 불편함, 강사가 본 코드중에 제일 긴 것은 50000줄 코드..

나중에 자기 자신 또는 다른 사람이 보면 굉장히 복잡하고 어려운 작업이 됨.

 

프레임워크는 구조를 파악하기 쉬움

middleware – WAS(Web Application Server), 위에 올라가는 어플리케이션 개념

sw프레임워크 ? => 디자인(패턴(표준화된)) + 재사용 가능한 모듈 제공(자주 사용되는 기능들을 쉽게 쓸 수 있게 해줌)

패턴ex) IOC, APO, MVC 자주 쓰이는 API) DB, excel로 내려받는 기능, 메일로 보내는 기능 등등,,,

 

컴포넌트 = 기능재사용, 비즈니스적

프레임워크 = 기반적인 표준화, 개발자들이 활용할 수 있는 기능들(low lv)

 

프레임워크를 처음 쓰는 경우에는 이해하고 배우는데 어느정도 노력과 시간이 필요

 

프레임워크의 시작은 MVC.

model 1 구조 => 기능단위로 나뉨, 비슷한 것들도 중복될 가능성이 높음. 중앙제어불가

model 2 구조 => 기술 단위로 나뉨(역할), 입력을 받는 것은 controller 뿐.

 

model1의 jsp => 업무처리, 화면처리, DB에서 값을 가져오는 부분이 다 들어가있음

model2의 jsp => 결과를 가져와서 화면만 보여줌

 

모든 경우에 다 프레임워크(집 지을 때 철근) 를 써야 하는가?

만들기 시작한 것은 2007년, 2009년에 만들어짐.

프레임워크 전쟁 ===> 프로젝트에 자기 회사의 프레임워크를 쓰게 하려고 했던 시절

프로젝트에 A회사의 프레임워크가 쓰였고 나중에는 B회사의 프레임워크로 교체할 수가 없게 됐음. => 공공사업에서 불공평한 일들이 일어나기 시작하기도 했음(ex: 처음에 A회사의 프레임워크를 싼 가격으로 하게 되었고 이후에도 계속 A회사의 sw를 사용할 수 밖에 없어서 다른 회사들의 불공평함이 생김)

프레임워크를 교체하게 되면 이전에 있던 프레임워크도 교체해야 하는 문제가 생김

===> 그래서 이러한 점을 해결하기 위해 표준 프레임워크가 생기게 됨

====> 모든 경우에 사용할 필요는 없으나 자바를 사용하여 개발했을 때 사용하는 문제점 재발을 방지하기 위해 표준 프레임워크를 개발하게 됨

개방표준, 특정사업자에 대한 종속성 배제, 오픈소스 프레임워크(95%정도)

오픈소스로 했기 때문에 2009년부터 현재까지 오픈 소스들과 함께 프레임워크도 발전하였음

프레임워크가 많은 기능을 제공해주면 좋겠지만 어떤 기능들은 상용 솔루션(국내 솔루션 회사)들과 겹칠 수도 있음 =>따라서 상용 솔루션 관련 부분은 배제하거나 필수적인 기능만 제공

표준프레임워크는 특정 도메인에 속하지 않고 도메인이 다양하기도 하며 세세한 부분들은 직접 만들기도 함 => 도메인이나 세세한 기능들을 공유하고 발전시키면 좋겠지만 아직은 어려움

 

오픈소스 라이브러리 : spring(제일 많음), apache comons 등등

 

이클립스에 플러그인을 활용=> maven기반 활용

maven기반으로 빌드하고 통합할 수 있는 환경제공

서버측면은 형상관리

허드슨을 통해서 계속적인 개발과 배포 환경을 제공(Continuous Integration)

서버개발환경과 개발자개발환경이 다름

관리 환경은 내부적으로 쓰는 업무 프로그램, 따로 배포를 하지는 않음.

운영 환경은 개발하고 운영할 때 필요한 모니터링 제공

 

공통 컴포넌트 => 총 251개(2017강의기준)

 

모바일 표준 프레임워크

모바일 웹 : jQuery모바일오픈소스기반+UI => 모바일 화면을 위함. 패널이나 버튼 등등 정의가 되어 있어서 디자이너가 디자인하지 않아도 어느정도는 디자인 할 수 있음(인체공학적ex)버튼사이즈도 제일 잘 눌리는 크기로 지정되어있음)

모바일 디바이스API(hybrid app) : 진동울리게한다든지 웹을 보고 있는데 전화가 와서 위에 작게 전화번호가 보인다든지 등 활용할 수 있는 API, 즉 웹을 코딩하는 것처럼 코딩했는데 단말을 제어하거나 접근할 수 있는 기능을 제공

 

표준 프레임워크 적용

jdk1.5이상을 사용해야 하지만 1.8이상에 최적화되어있음. 자바로 되어 있기 때문에 php, .net 환경에는 적용불가

php, .net버전도 프레임워크를 만들어 달라는 의견이 있었는데 모든 상황에 관계없이 표준 프레임워크를 사용하라는 것이 아니라 자바를 사용했을 때 발견되는 문제점을 해결하기 위해 만든 것이라서 언어를 선택함에 있어서 표준 프레임워크냐 아니냐는 첫 번째로 고려해야 할 부분은 아님.

 

신규구축 => 이슈 없음

연계 구축 => 이전에 있던 프레임워크와 새로 만든 프레임워크를 미들웨어나 db등으로 연결, 다른시스템이라 이슈없음

병행구축 => 어쩔 수 없이 해야 할 경우에는 하나 권장하지 않는 방법(문제발생 가능성이 많고 case별로 체크필요)

 

검증을 거친 오픈소스 라이브러리들로만 프레임워크를 구성 => 오픈소스의 라이선스를 따름

apache 2.0 사용.

실행 환경에 관련된 부분들을 100% 배포, 개작해도 상관없지만 코드는 고쳤다면 왜 고쳤는지등에 대한 이유를 작성. (mpl?)

개발환경을 직접 고칠 일은 없음. => 라이선스에 대한 걱정 X

 

다만, 개작을 해도 상관은 없으나 그걸 고치는 순간 표준이 아니기 때문에 표준프레임워크라고 말할 수 없음.

프레임워크 사용 여부에 대해서 체크를 하기도 함.

 

개발환경을 직접 그대로 쓰지 않아도 되긴함. ex) 최신버전의 이클립스를 쓰고 있는데 이전버전으로 바꾸지 않아도 됨?(지원을 한다면)

 

MIS에서 중요한 것 = 화면

728x90