기본 콘텐츠로 건너뛰기

정보유출방지 위한 실시간 시스템 모니터링의 오픈소스 활성화해야



정보유출방지 위한 실시간 시스템 모니터링의 오픈소스 활성화해야



모바일 시대가 되면서 기업은 고객이 만족하는 서비스를 위해 단순한 서비스도 여러 기업과 협업하여 처리하는 세상이 되었다고객이 신용카드 발급을 요청할 때도 제휴서비스를 위해 최소 수십에서 수백까지의 기업들과 정보를 공유한다.
이번 개인정보 유출대란에 중요한 사실은 해킹이 아닌 내부시스템에 직접 접근해서 개인정보를 유출시켰다는 것이다기업이 내부직원이나 내부 시스템에 관여할 수 있는 사람들에게 마음만 먹으면 언제든 개인정보 유출가능성을 열어놓은 상태에서 제도를 강화한다고 해서 크게 바뀌지 않는다.
개인정보를 보호하기 위한 기업들의 대책은 있는 것일까?
기업들의 전체 시스템을 철저하게 실시간으로 모니터링 관리하는 체계 도입이 필요하다빅데이터가 도입되면 단순한 개인정보가 아닌 특화된 정보가 되어 유출 시 더 큰 재난을 불러일으킬 수 있으므로 누가 접근하는지 왜 접근했는지를 실시간 모니터링하고 분석되어야 한다.
기업들은 기간계정보계, EDW, Data Mart 등 개인정보가 다양한 시스템에 분산되어 있으므로 데이터 관리체계를 명확히 설정하여 각 업무 시스템별 데이터관리기준을 수립하여 실시간으로 직원의 개인 PC부터 업무의 모든 서버에서 로그를 수집하여 실시간으로 분석하도록 감독기관이 지침이 내려가야 한다.
실제 실시간 관리체계 구현 시 기대할 수 있는 효과는 고객의 신뢰도가 증가한다는 것이다고객의 만족은 실제 ROI보다 무형의 가치를 올리는 것이다.
하지만 많은 기업들이 비용문제로 구현이 어렵다고 할 것이다시중은행은 업무서버가 2천여 대와 직원 약 2만 명 이상 직원 PC에 대해 모니터링체계를 구축해야 하므로 솔루션 도입 시 라이선스 비용이 기하급수적으로 증가한다따라서 페이스북 등 많은 오픈소스를 이용하는 기업들은 솔루션 비용대신 IT 인력들에 대한 오픈소스 개발역량을 향상시켜 이 시스템을 구축하고 있다.
실시간 모니터링 시스템 서버에 대한 가용성 향상을 위한 오픈소스를 이용하여 분산처리 등을 수행하여야 하므로 오픈소스를 도입하는 기업은 비용이 절감되고 국내 오픈소스 개발역량이 향상될 아주 좋은 기회이다.
골드만삭스페이팔 등 미국 기업들이 오픈소스로 자신의 기업 솔루션을 개발하고 관리하겠다는 것은 현재 처리하고 있는 업무들에 대해 상용 솔루션들로는 업무처리에 제약이 많고 각 기업만의 비즈니스 모델을 특화하지 못하기 때문이다.
오픈소스 도입은 어려운 게 아니라 유지관리가 힘들다는 것이다따라서 기업이 오픈소스를 도입하게 되면 오픈소스 인력을 양성해야 하므로 국내 일자리 창출에도 도움이 된다.
현재 위기는 새로운 기회이므로 기업들도 유닉스 또는 해외 대형 Vendor사 만을 고집하지 말고 x86 서버에서 구동되는 오픈소스를 이용할 방안을 만들어야 한다빅데이터와 클라우드 등 새로운 기술 트렌드는 스케일 면에서 기존 유닉스환경에서는 방어할 수 없으므로 X86 서버 기반으로 점진적으로 변화해 가야한다현재 국내에서 만든 오픈소스는 많지 않지만 이 기회를 국내 오픈소스를 만드는 시점으로 정하고 투자해야 한다.
결과적으로 실시간 시스템 모니터링은 향후 사물인터넷위치기반 서비스를 위한 시스템 구현을 하기 위해서는 꼭 갖춰야 할 체계이다실시간 환경 솔루션도 국내 기술로 만들어서 구축할 수 있는 시대가 되어야 소프트웨어 인재 및 직업도 창출되므로 글로벌 소프트웨어 세상으로 가는 경쟁력이 강화된다.
문용준(빅데이터 아키텍처)
- SK C&C 부장
금융 차세대 프로젝트 및 IFRS 프로젝트 수행
금융 Application Architect로 활동 중 

댓글

이 블로그의 인기 게시물

golang overload 처럼 처리하기

go 언어에서는 함수명이 같을 경우 재선언 오류를 발생시킨다.
다른 메소드를 만들고 오버로드 처리하도록 설계해서 구현해야 한다.
오버로드 처리를 위해 type switch를 사용해서 들어오는 타입에 따라 메소드 호출하는 처리를 사용한다.
함수나 메소드 인자를 다양하게 처리하려면 []interface{} 로 정의해서 다양한 인자를 받아서 오버로딩 처리하면된다.


package main
import (  "fmt" )
func main() {  var p Person  p = Person{"dahl"}
 var s string = "moon"
 fmt.Println(" overloading  ", p.Overload(s))  fmt.Println(" overloading", p.Overload(nil)) }
type Person struct {  name string }
func (this *Person) Overload(args interface{}) string {  switch args.(type) {  case string:   return this.GetName2("moon")  case nil:   return this.GetName1()  default:   return " no match"  } }
func (this *Person) GetName1() string {  return this.name }
func (this *Person) GetName2(s string) string {  return this.name
}


golang에서 인터페이스 Type Assertion 처리하기

인터페이스: Type assertion 
인터페이스를 이용하여 메소드가 아닌 일반 변수에 할당하며 변수에 정의된 타입들에 대해 명확히 구분할 수 있다.   
Var 변수명 interface{} 로 정의하면 일반 변수정의 타입들도 전달할 수 있다.      //구조체 정의 var a BB = BB{X:10} 
//Type assertion 정의 var value interface{} 
   // 할당    value = a     //value.(타입)     fmt.Println("  type assertion ", value.(BB))  //출력값 {10}
리턴값을 interface{} 즉 type assertion 을 처리하도록 정의 func weird(i intinterface{} { if i < 0 { return"negative"      } return i }
func main() {

golang 에서 generic 처리하기

go언어에서 제너릭 처리를 위해서는 아래처럼  인터페이스를 정의하고 각 타입별로 구현을 한다.

슬라이스에 각 타입으로 컨버전하여 값을 넣고 슬라이스 순번대로 호출하면 자신의 타입에 맞는 메소들를 호출하여 처리한다.




type Integer16 int16
type Integer32 int32

type Calculator interface {
Calculate()
}

func (i Integer16) Calculate() {
/* behavior here */
fmt.Println(" Integer16 ", i)

}
func (i Integer32) Calculate() {
/* behavior here */
fmt.Println(" Integer32 ", i)
}


func main() {

container := []Calculator{Integer16(1), Integer32(2)}
fmt.Println("container   ", container)
container[0].Calculate()
container[1].Calculate()


}

// 결과값

ontainer    [1 2]
Integer16  1
Integer32  2