회사에서 프로젝트를 수행하면서 쌓아온 경력을 기록해봤습니다.
의미있었던 경력 위주로 기록하며 회사에서의 경험은 문제가 되지 않을 정도의 범위에서 기록합니다.

보유기술역량

Language

  • Java, Python3
  • HTML/CSS, Javascript, JQuery
  • Android Java

Middleware

  • HAProxy, Keepalived
  • Nginx, Apache HTTPD
  • Apache Tomcat

Framework

  • Spring, Spring Boot
  • Netty

Repository

  • Oracle, MariaDB
  • Redis

CI/CD

  • GitLab, SVN
  • Jenkins
  • Maven, Ant

AWS

  • Cloud-Front
  • Route53
  • API Gateway
  • Lambda
  • DynamoDB
  • S3
  • VPC, EC2, ELB

자격증

  • AWS Soulution Architect - Professional Certification (2019.04.02~2022.04.01)

경력

MSA(Micro Service Architecture) Build Center (2019.09~2019.12)

Cloud 환경 그룹사 프로젝트의 구성원들에게 MSA에 대한 교육을 위해 MSA Build Center를 구성 중이고 초기 멤버로 투입되었습니다. Pivotal과 함께 MSA 프로젝트를 1차례 수행하면서 노하우를 전달받고 우리 환경에서 현실적으로 필요한 프로세스 및 교육방안을 수립 예정입니다.

통신사 네트워크관리 시스템 차세대 구축 (2018.07~2019.08)

  * Middleware : Oracle HTTPD Server, Oracle Weblogic
  * Framework : Spring
  * Language : Java
  * DB : Oracle
  * 그 외 : Gitlab, Jenkins

설계 말에 투입되어 Application Architect 역할을 수행으며 주로 프레임워크를 담당했습니다.

200명 이상의 개발자 투입 규모의 차세대 프로제트입니다. 작은 요구사항 변경이 많은 프로그래머들에게 영향이 가지 않도록 아래 같은 사항들을 프레임워크 레벨에서 처리하도록 노력했습니다. 요구사항이 변경되더라도 프로그래머들은 업무 로직 변경 없이 annotation 변경/추가 정도의 작은 작업을 통해 아래와 같은 기능들을 제공받도록 진행했습니다. 그로 인해 프로그래머들은 실제 업무로직에 더 집중해서 시간을 사용할 수 있었습니다.

  • 인증 & 인가
    • 일반적인 로그인, 권한 그룹별 인가 처리
    • 외부망과 내부망 접근에 따른 별도 제어
    • 접근 수단(SSO, API Gateway, 파일뷰어)에 대한 별도 제어
    • 화면 버튼별 인가 처리
  • 개인정보 마스킹 처리
    • 권한그룹별, 화면별로 개인정보 조회 권한을 제공하고 마스킹 처리
    • 로그에는 개인정보 데이터는 권한과 무관하게 모두 마스킹 처리
    • 엑셀 다운로드시에는 권한과 무관하게 모두 마스킹 처리
  • 데이터 암호화 보관
    • Persistence layer에서 암/복호화 처리
  • 타 시스템과의 연동시 인증 처리
    • 인증처리, 인증토큰 관리기능을 가진 연동모듈 제공
  • DB 입력시 필수 입력값 제어
    • 작성자ID, 작성일시, 접근경로(화면ID) 등에 대해 입력 처리
  • 첨부파일 보호
    • 외부망에서는 첨부파일 다운로드와 엑셀 다운로드 불가 처리
    • 모바일의 경우 다운로드 요청시 파일뷰어를 조회 되도록 처리
  • 보안
    • XSS(Cross-Site Scripting) 방어
    • CSRF(Cross-Site Requset Forgery) 방어
  • Cache
    • Annotation 추가만으로도 캐싱 기능을 추가할 수 있도록 처리

그 외에도 socket, file 과 같이 OS 자원을 사용하고 반환하는 내용은 시스템 전체에 큰 영향을 미치기 때문에 업무 프로그래머가 작성하지 않도록 공통 기능을 제공해서 처리했습니다.

  • 대용량 CSV 업로드 / 다운로드
    • 대용량을 처리할 수 있도록 stream/paging 방식으로 처리
  • File 업로드 / 다운로드
    • 업무 프로그래머는 file ID만으로 처리 가능하도록 공통모듈을 제공 (path 제공안함)
    • File path가 통일된 명명규칙으로 관리되고 불필요해진 파일에 대해서 추적 가능

통신사 PaaS PoC (2018.04~2018.05)

  * Kubernetes 기반 PaaS PoC(Proof of Concept) 진행
  * 대상 솔루션 : Redhat OCP(Open Cloud Platform), IBM ICP(IBM Cloud Private)

PaaS 사용자 관점에서 필요한 몇가지 테스트를 준비하고 진행했습니다.

  • 샘플 소스코드, pom.xml 등 준비
  • POD 배포 속도 측정
  • 부하 테스트를 준비하여 scale in/out 기능 확인
  • blud-grean 배포, Canary 배포 기능 확인

통신사 AI 플랫폼 구축 (2017.09~2018.03)

  * MSA(Micro Service Architecture)
  * AWS(Amazon Web Service)
  * Middleware : Apache HTTPD, Apache Tomcat, HAProxy
  * Framework : Spring
  * Language : Java
  * DB : AWS RDS(AuroraDB), AWS Dynamo DB, Redis
  * 그 외 : ELB(CLB, ALB, NLB), EC2(AWS Linux), S3, SVN, Jenkins 

구축 단계에 투입되어 50명 가량의 업무개발자와 함께 Application Architect 역할과 미들웨어 관리를 담당했습니다.

EDI(전자문서교환) Vendor 서비스 (2015.01~2017.08)

  * Middleware : N/A
  * Framework : 자체 프레임워크
  * Language : Java
  * DB : Oracle
  * 그 외 : HAProxy, Keepalived, Netty, SVN, Ant

금융사와 기업간의 EDI에 대한 중계시스템을 개선하는 작업을 했습니다.
미들웨어와 프레임워크 없이 순수 Java로 진행한 프로젝트 입니다. 유지보수를 하며 안정성 확보, 기능 추가 작업들을 진행했습니다. Client, CS(Communication Server), AP(Application Server)로 구성됐습니다. 각 서버는 queue와 worker thread pool을 이용해서 부하를 견딜 수 있도록 구성되었고 시스템간은 TCP/IP Socket 통신으로 정보를 주고 받았습니다.

저는 이 프로젝트에서 AP서버의 안정성 및 HA확보, CS서버의 안정성 확보를 위한 아키텍처 재구성, 비동기 대용량파일 송수신 통신 모듈 개발 등을 진행했습니다.

  • AP서버 안정성 확보
  • CS서버 안정성 확보
    • Process 단위로 관리되던 시스템을 thread별로 관리 가능하도록 재설계 & 개발
    • 리스크 적은 고객사들을 분류 후 해당 프로세스들을 통합하여 서버 자원을 확보
  • 비동기 대용량파일 송수신 통신모듈 개발 & 신규기능 추가
    • 금결원의 계좌이동서비스, 출금이체 동의자료 조회 서비스라는 신규 사업에 대응을 위한 시스템 변경
    • 실시간 전송 시스템과, 배치 전송 시스템을 엮어내는 변화가 필요했지만 legacy 시스템에 영향 없도록 진행
    • Netty 프레임워크를 이용하여 대용량 파일 송수신 모듈 개발

성장곡선을 그리고 있는 사업이 아니고 이미 굉장히 성숙된 사업 영역이었기 때문에 비용 최소화라는 목표도 함께 갖고 있었습니다. EoS(End of Support)상황이고 유지보수 비용이 많이 드는 Solaris에서 REHL로 다운그레이드했고 물리 L4가 아닌 소프트웨어 L4를 제안했습니다.

글로벌 결제환경 기능개선 (2014.01~06 , 2013.05~09)

  * Framework : 결제시스템(Java Servlet), 빌링시스템(Spring)
  * Language : Java, JavaScript
  * DB : Oracle
  * 그 외 : SVN, Ant

글로벌 결제업체와 상품 판매업체간의 결제업무에 대한 중계시스템을 개선하는 작업을 했습니다.

글로벌 사용자에게 보다 나은 경험을 제공하기 위해 각 지역의 유명한 결제방법을 추가했습니다.
로컬 결제업체 API 연동을 통해 로컬결제가 되도록 처리하고 빌링 시스템을 구축했습니다.

중계해야할 로컬 결제업체, 판매 업체가 계속 늘어날 것을 염두하고 결제 업체의 추가시에도 기존 업체들에 대한 소스는 수정 없이 진행가능하도록 확장가능하고 유연한 시스템을 설계, 구축 했습니다.

  • 중국향 : Ali-Pay, Ten-Pay, Union-Pay
  • 러시아향 : Yandex, Qiwi
  • 유럽향 : Europe Danal

세종시 교육청 업무관리시스템 (2012.05~12)

  * DB : Oracle

세종시 교육청이 생기면서 세종시 업무관리 시스템을 구축하고 충북, 충남 교육청의 자료를 마이그레이션하는 프로젝트였습니다.
그 중 제가 진행한 작업은 DB 마이그레이션 작업입니다.
마이그레이션 작업을 추출, 변환, 적재의 세과정으로 분류하면 충북, 충남의 데이터를 변환하고 세종시 시스템으로 적재하는 프로시저를 개발했습니다.
변환 룰과 적재 룰만 최신화 시키고 프로시저를 실행시키면 되도록 수작업을 최소화했습니다. 심지어 실제 마이그레이션 작업은 제가 부재한 상태로 진행되었습니다. 추출된 데이터의 온라인 전송이 생각보다 많은 시간이 소요되어 하드디스크를 물리적으로 이동시키는 작업을 맡게되어 신입사원에게 프로시저 실행법을 인계했습니다.
1회 사용될 프로그램이었지만 자동화해뒀고 수많은 테스트도 해봤기 때문에 가능했습니다.

에듀파인 학교회계시스템 고도화 (2011.05~2012.04)

  * Framework : Pro-Framework
  * Language : Java, JavaScript
  * DB : Oracle

재무결산 업무를 전산화 하기 위해 프로그래밍을 했습니다. 재무결산용 통계성 쿼리를 다수 작성하고 튜닝했습니다.

Career Path

회사에서의 현재 역할

SWA(SoftWare-Architect) 로 불리는 역할을 수행 중입니다.
외부에서 AA(Application Architect)로 불리는 역할과 비슷하다고 볼 수 있습니다.

OS 위에 올라가는 middleware를 설계, 구성하고
application의 구조를 설계, 구성하며 그 과정에서 framework 설정하고 AOP, 공통모듈, 연계모듈 등을 프로그래밍 합니다.
CI/CD 구성, 성능테스트, 트러블슈팅 등도 수행합니다.
그리고 프로젝트 상황에 인프라 관련 작업도 어느정도 참여합니다.
업무에 맞춰서 서버 생성요청, 라우팅 설정요청, 방화벽 오픈요청 등을 하고 정상적으로 작업이 이뤄졌는지 테스트를 합니다.

Toy-Project에서의 역할

개인 프로젝트로 진행해왔기 때문에 A-Z까지 모든 역할을 다 수행해볼 수 있었습니다.
최근에는 AWS Lambda를 주로 사용하기 때문에 설계와 프로그래밍에만 전념하고 있습니다.

Toy-Project는 많은 개인시간의 투자가 필요하지만
개념적으로만 알고 있던 새로운 기술을 사용해볼 수 있고
프로젝트의 시작부터 끝까지 모두 경험하면서 많은 성장을 이룰 수 있습니다.

저의 Toy-Project가 궁금하시면 아래의 링크를 따라가시면 됩니다.

추구하는 방향

프로그래머 기반의 Back-End 개발자로 나아가려합니다.

주된 역할은 프로그래머이지만
시스템의 Back-End를 구축하고 성장 시켜나가기 위한
다양한 고민과 작업들을 하고 있고 앞으로도 해나갈 생각입니다.