국민은행의 도전은 성공할 수 있을까 KB국민은행의 도전은 리딩뱅크로서 업계의 발전방향을 제시하고, 새로운 시장을 연다는 의미를 갖는다. 국민은행의 선택은 업계에서 한 번도 시도한 적 없는 방향의 조직개편과 역량 내재화를 목표로 하고 있다. 새로운 시도인 만큼 그 리스크는 크다. 성공여부에 따라 리딩뱅크로서의 지위를 확고히 해 글로벌 진출의 발판을 다지거나, 후발주자들의 거센 도전을 허용해 시장에서의 경쟁력을 잃을 수도 있다. 이번 사업이 성공적으로 진행될 경우, 국민은행은 풍부한 도메인 지식과 이를 구현할 수 있는 디지털 역량을 두루갖춘 새로운 기업으로 거듭날 수 있을 것이다. 규모가 큰 기업일수록 지배구조를 효율화 했을 때 일어나는 가치창출이 더욱 크다. 새로 구성한 조직은 앞선 포스팅에서 언급한 기존..
'디지털 네이티브 국민은행' 의 목표는 단지 '타도 카뱅' 일까? 앞선 포스팅을 통해 KB국민은행이 디지털 역량을 내재화하게 된 배경에 대해 살펴보았다. '인터넷전문은행과 빅테크 기업의 금융권 진출로 인한 플랫폼 경쟁 심화, 이에 대응하기 위한 IT거버넌스 효율화' 를 주 원인으로 꼽았다. 이 문장만 놓고 보면 기존 시중은행의 리딩뱅크가 빅테크 기업의 IT역량에 위기감을 느껴 서둘러 자사의 체계를 개편하는 것으로 보인다. 어느정도는 맞는 말이다. 그런데 국민은행은 단순히 빅테크 기업과 경쟁하는 것을 목적으로 전 금융권에서 한 번도 가지 않은 길을 선택한 것일까? 카카오뱅크로 대표되는 인터넷 전문은행은 분명 기존 시중은행에 위협적이다. 그러나 아직 그 범위는 리테일뱅킹(소매금융), 금융플랫폼 영역에 한정되..
IT역량의 내재화. 왜 필요했을까? KB국민은행의 코어뱅킹 현대화 사업을 다른말로 풀이해보면 'IT역량 내재화' 라고 할 수 있다. 기존 금융권에서는 IT조직을 비용으로 인식했기 때문에, 이를 절감할 수 있는 다양한 방법을 고안해냈다. 그 결과로 금융IT 계열사를 활용하는 하도급구조 기반의 체계가 고착화 되었고, 태스크포스 기반의 빅뱅방식 프로젝트를 진행하는 것이 근 20년에 걸쳐 이어져왔다. 국민은행의 내재화 조직 구성 의사결정은 분명 비용상승의 여지를 담고 있다. 이는 조직체계 구성으로만 보았을 때는 명확하다. 전무급 임원의 지휘아래 놓이는 200명 규모의 본부를 계속 유지해야 한다니 말이다. 그러나 과연 내재화 조직을 운영하는 것이 반드시 비용상승의 요소만 가지고 있을까? 기존 금융권의 전형적인 I..
KB국민은행, 코어뱅킹 현대화 사업 시작 지난 5월, KB국민은행이 자사의 계정계 시스템을 클라우드 네이티브 환경으로 재구성하겠다는 청사진을 발표했다. 그간 국민은행의 차세대 시스템에 대한 이야기는 대략적인 방향에 대해서만 논의되는 분위기였으나, 구체적인 시작을 선언한 것은 이번이 처음이다. 그런데 그 내용이 흥미롭다. 국민은행의 코어뱅킹 현대화 사업은 국내 은행업권에서 한 번도 시도한적 없는 형식의 사업이다. 우리나라에서 가장 큰 규모를 자랑하는 리딩뱅크인 국민은행. 이러한 규모로 인해 가장 보수적이라는 평가를 받고 있기도 한 국민은행이 이렇게 과감한 결정을 내린 배경은 어디에 있을까? 이에 대한 필자의 생각을 다양한 관점에서 풀어보고자 한다. KB국민은행의 코어뱅킹 현대화 사업이 기존 금융권의 차세대..
객체를 재사용해야 할 때 똑같은 기능의 객체를 매번 생성하기보다는 객체 하나를 재사용하는 편이 나을 때가 많다. String s = new String("example"); 위 문장은 실행될 때마다 String 인스턴스를 새로 만든다. "example" 이라는 문자열의 쓰임새와 목적이 완전히 동일함에도 불구하고, 불필요한 인스턴스를 계속 생성한다. Stirng s = "example"; 위 코드는 매번 새로운 인스턴스를 생성하는 대신 하나의 String 인스턴스를 사용한다. JVM은 동일한 문자열 리터럴에 대해 인스턴스를 공유하도록 설계되어 있다. 정적 팩토리 메서드를 활용해 객체생성 효율을 높여보자 생성자 대신 정적 팩토리 메서드를 제공하는 불변 클래스에서는 이를 활용해 불필요한 객체 생성을 피할 수 ..
클래스의 의존 관계 많은 클래스들은 하나 이상의 자원에 의존한다. 자원에 의존해 기능을 수행하는 클래스는 의존성(dependency) 을 갖는다. 라고 표현할 수 있다. 이러한 클래스의 의존성은 보통 의존하고자 하는 기능을 가진 클래스의 참조변수를 멤버변수로 선언함으로써 표현한다. public class AccountService { private TransferService transferService; public void transfer(Account withdrawalAccount, Account depositAccount) { // business logic start ... } } 위 예시에서 계좌 서비스는 송금 서비스에 의존한다. (계좌 서비스의 기능 구현에는 송금 서비스의 도움이 필요하다...
static 메서드와 필드로만 구성된 클래스 개발을 하다보면 static 메서드와 필드로만 구성된 클래스가 필요한 경우가 있다. 객체지향적인 설계는 아니지만, 다음과 같은 상황이 필요한 경우에는 유용하게 사용할 수 있다. 기본 타입 값이나 처리대상 클래스와 관련된 메서드들을 모아놓은 유틸리티성 클래스의 설계 ex) java.util.Arrays 특정 인터페이스를 구현하는 객체를 생성해주는 정적 메서드 또는 팩토리 ex) java.util.Collections 추가 상속을 방지하기 위한 final 클래스와 관련한 메서드들의 집합 정적 유틸리티 클래스의 설계의도 정적 유틸리티 클래스는 인스턴스로 만들어 쓰기 위해 설계한 것이 아니다. 그런데 자바 언어에서 클래스의 생성자를 명시하지 않는 경우, 매개변수가 없..
싱글턴(singleton) 오직 하나의 인스턴스로 구성된 클래스를 의미한다. 싱글턴은 보통 무상태(stateless) 객체 또는 설계상 유일하게 사용하는 시스템 컨포넌트를 구현할 때 사용한다. 싱글턴 구현방법 1. public static 멤버를 final 필드로 선언 public class WorkScheduler { public static final WorkScheduler INSTANCE = new WorkScheduler(); private WorkScheduler() {} public void resetSchedule() {} } 위 코드에서 private 생성자는 public static final 필드인 INSTANCE 를 초기화할 때 딱 한 번 호출된다. 외부로 노출되는 다른 생성자는 존..
생성자의 매개변수가 많을 때 생성자는 선택적 매개변수가 많아질 때 설계가 곤란해진다. 클래스는 여러 개의 필드를 가질 수 있기 때문에, 초기화대상 필드의 수가 많아지면 (필자는 보통 4개 이상이 되면 많게 느껴지는 것 같다) 적절한 대응방안에 대해 고민하게 된다. 정적 팩토리 메서드의 경우도 마찬가지이다. 점층적 생성자 패턴 (Telescoping Constructor Pattern) 생성자에 필요한 인자가 많아질 때, 개발자들은 일반적으로 '점층적 생성자 패턴' 을 사용한다. 단순히 생성자에 필요한 매개변수의 여러가지 조합으로 생성자의 입력 파라미터를 구성하는 구현방법이다. public class Member { private Long memberId; private String name; privat..
- Total
- Today
- Yesterday