기본 콘텐츠로 건너뛰기

국내 금융권이 차세대 프로젝트를 보면서....




국내 금융권이 다시 차세대 프로젝트들이 많아진다.

국내 외국계 컨설팅 업체들이 ISP를 하는데 실질적인 아키텍처와 방향성이 많이 미흡하다.

이제는 플랫폼, 빅데이터, 인공지능, 블록체인 등을 어떻게 잘 반영할 것인가가 중요하지만 실질적인 체계를 제시하지 못한다.

실질적인 경험이 없는 컨설팅으로는 향후 금융권이 글로벌적인 경쟁이 미흡하고 예대마진이 없어진 현재 경쟁은 새로운 서비스를 만들어서 경쟁을 해야 한다.

골드만 삭스, BBVA 등 선진국 은행들은 IT 인력들을 1만명 이상 가지고 있으면서 스스로 소프트웨어 회사로 가고있다.

왜 이런 정책을 세우는지를 명확히 이해해야 한다.

솔루션 도입해서 그 위에 단순히 비즈니스를 올리는 수준으로는 고객에 대한 서비스나 금융기관간 경쟁이 될 수 없다.

스스로 비즈니스 모델을 만들고 이를 오픈소스를 이용해서 자신들 시스템을 만드는 것이 온라인 금융서비스를 위한 최고의 경쟁력을 갖추는 것이다.

이제 우리나라 금융기관들도 스스로 소프트웨어 회사로 전환해야한다.

현시점에 바로 전환이 안되지만 점진적으로 변화를 할 수 있는 체제를 구축해야 한다.

글로벌 경쟁을 해야 생존이 가능한 세상이 온라인세상이 되었으니 우리나라도 준비를 해야한다.





댓글

이 블로그의 인기 게시물

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