Software as a service (SaaS, typically pronounced 'Sass') is a model of software deployment where an application is hosted as a service provided to customers across the Internet. By eliminating the need to install and run the application on the customer's own computer, SaaS alleviates the customer's burden of software maintenance, ongoing operation, and support. Using SaaS also can reduce the up-front expense of software purchases, through less costly, on-demand pricing. From the software vendor's standpoint, SaaS has the attraction of providing stronger protection of its intellectual property and establishing an ongoing revenue stream. The SaaS software vendor may host the application on its own web server, or this function may be handled by a third-party application service provider (ASP). This way, end users may reduce their investment on server hardware too.
1. Flex는 유료다.
Flex는 3가지 패키지로 구성되어 있는데 무료인 SDK만 가지고도 개발이 가능합니다.(자바 JDK와 동일한
개념입니다.)
SDK를 사용하면 기본적으로 HttpService,WebService를 사용하여 XML데이터를 처리 할 수 있습니다.
그리고 오픈소스를 사용하여 Flex에서 자바 클래스 호출하는 형태의 기능도 사용 할 수가 있습니다.
2. Flex(Flash)는 무겁다.
다른 플랫폼 솔루션과 비교해본적은 없지만 개인적으로 2년여동안 사용해본 결과 Flash9버젼 출시되면서
엄청난 성능향상이 이루어졌습니다. 요즘 가장 각광받고 있는 Ajax와 비교해도 그리 큰 차이는 느끼지 못할
것입니다.
3. 유지보수가 힘들다.
솔루션 개발에 있어 가장 큰 걸림돌이라 볼 수 있는 유지보수 측면을 전혀 무시할순 없겠죠...
Flex는 일반 언어 형태로 개발되기 때문에 다른 언어로 개발했을때와 동일한 유지보수적인 문제가 적용될수
있습니다.
단지 Flex라서 유지보수가 힘들다는 건 아니죠. 하지만 아직까지 Flex를 다룰수있는 개발자가 부족하다는건
Risk가 될 수도 있습니다.
4. 대용량 데이터 처리가 힘들다.
대용량 데이터 처리를 위한 대한들을 사용하면 될 듯 합니다. 가령 페이지네이션 처리를 한다든지...
오히려 서버파트 측면을 더 고려해야 겠지요.
5. Flex 개발 생산성.
Flex는 대부분의 기능들을 컴포넌트 형태로 제공을 하고 사용자가 별도 필요로 하는 기능들은 컴포넌트화해
서 정의가 가능합니다.정의된 컴포넌트들은 swc형태로(자바의 jar와 같은개념) 묶어 배포도 가능하며 swc만
있으면 동일한 기능을 그대로 사용 할 수 있습니다.
재사용이 가능하기 때문에 노하우만 축적된다면 빠른 시간안에 원하는 요구사항을 충족 시킬 수 있습니다.
6. Flex를 어디에 적용 할 것인가?
요즘 Vista문제가 큰화두로 떠오르고 있습니다. OS 또는 브라우져에 종속되어 있기때문이죠. 이런 측면에서
Flex는 정말 매력적인 플랫폼으로 각광받는 이유 중에 하나 입니다. 일단 Flex는 복잡한 화면 구조라든지
Grapic요소들을 표현 한다든지 실시간 데이터를 처리한다든지. 이런 분야에서 효과적으로 사용 할 수 있습니
다. 전체 사이트가 아닌 필요한 사이트 일부분만으로도 구현 될 수 있습니다.
복잡한 화면 구조에 대한 예를 하나 들어보자면 네이버 메인에서 날씨,달력,시계,문자에 대한 정보를 볼 수
있는 Flash화면이 있습니다. 적은 공간을 사용해서 다양한 정보들을 효과적으로 보여 줄 수가 있습니다.
select A.[Job명]
, A.[실행 주기]
, A.[Job 소유자]
, substring(A.[시작 시각], 1, 2) + ':' + substring(A.[시작 시각], 3, 2) + ':' + substring(A.[시작 시각], 5, 2) as [시작 시각]
, substring(A.[종료 시각], 1, 2) + ':' + substring(A.[종료 시각], 3, 2) + ':' + substring(A.[종료 시각], 5, 2) as [종료 시각]
, A.[시작 일자]
, A.[종료 일자]
, A.[Job 생성 일자]
, A.[Job 수정 일자]
, substring(A.[최대 실행 이력], 1, 2) + ':' + substring(A.[최대 실행 이력], 3, 2) + ':' + substring(A.[최대 실행 이력], 5, 2) as [최대 실행 이력]
, A.[Job 설명]
from (
select
a.name as [Job명]
, case when (d.freq_type=4 and d.freq_subday_type=1) then '매일 1회'
when (d.freq_type=4 and d.freq_subday_type=2) then '매일 ' + cast(d.freq_subday_interval as varchar(5)) + '초마다'
when (d.freq_type=4 and d.freq_subday_type=4) then '매일 ' + cast(d.freq_subday_interval as varchar(5)) + '분마다'
when (d.freq_type=4 and d.freq_subday_type=8) then '매일 ' + cast(d.freq_subday_interval as varchar(5)) + '시간마다'
when (d.freq_type=8) then
'매주 ' +
case when d.freq_interval & 1 = 1 then '일 ' else '' end +
case when d.freq_interval & 2 = 2 then '월 ' else '' end +
case when d.freq_interval & 4 = 4 then '화 ' else '' end +
case when d.freq_interval & 8 = 8 then '수 ' else '' end +
case when d.freq_interval & 16 = 16 then '목 ' else '' end +
case when d.freq_interval & 32 = 32 then '금 ' else '' end +
case when d.freq_interval & 64 = 64 then '토 ' else '' end +
case d.freq_subday_type
when 1 then '한번 '
when 2 then '매 ' + cast(d.freq_subday_interval as varchar(5)) + '초마다'
when 4 then '매 ' + cast(d.freq_subday_interval as varchar(5)) + '분마다'
when 8 then '매 ' + cast(d.freq_subday_interval as varchar(5)) + '시간마다'
end
when (d.freq_type=16) then
'매월 ' + cast(d.freq_interval as varchar(2)) + '일 ' +
case d.freq_subday_type
when 1 then '한번 '
when 2 then '매 ' + cast(d.freq_subday_interval as varchar(5)) + '초마다'
when 4 then '매 ' + cast(d.freq_subday_interval as varchar(5)) + '분마다'
when 8 then '매 ' + cast(d.freq_subday_interval as varchar(5)) + '시간마다'
end
else '정의되지 않음'
end [실행 주기]
, b.name as [Job 소유자]
, replicate('0', 6 - datalength(cast(d.active_start_time as varchar(6)))) + cast(d.active_start_time as varchar(6)) as [시작 시각]
, replicate('0', 6 - datalength(cast(d.active_end_time as varchar(6)))) + cast(d.active_end_time as varchar(6)) as [종료 시각]
, convert(varchar(10), convert(datetime, cast(d.active_start_date as varchar(8))), 120) as [시작 일자]
, convert(varchar(10), convert(datetime, cast(d.active_end_date as varchar(8))), 120) as [종료 일자]
, convert(varchar(10), a.date_created, 20) as [Job 생성 일자]
, convert(varchar(10), a.date_modified, 20) as [Job 수정 일자]
, replicate('0', 6 - datalength(cast(c.run_duration as varchar(6)))) + cast(c.run_duration as varchar(6)) as [최대 실행 이력]
, a.description as [Job 설명]
, d.freq_type
, d.freq_subday_type
from msdb.dbo.sysjobs a with (nolock)
left outer join master.dbo.syslogins b with (nolock) on a.owner_sid = b.sid
left outer join (
select job_id, max(run_duration) as run_duration
from msdb.dbo.sysjobhistory with (nolock)
where run_status = 1 and step_id = 0
group by job_id) c on a.job_id = c.job_id
left outer join msdb.dbo.sysjobschedules d with (nolock) on a.job_id = d.job_id
where a.enabled=1 and d.enabled =1
) A
order by A.freq_type, A.freq_subday_type, A.[시작 시각], A.[Job명]