Q&A: Architecture and Architect

3월에 모 부트캠프 참가자들을 대상으로 “S/W 아키텍처(Architecture)“에 대한 특강을 진행했다. 강의 이후에 이런 저런 질문들이 있었다. 질문들이 과정에 참가한 분들만 궁금해하는 사항들이 아닐 것 같아서, 정리해서 기록으로 남겨볼려고 한다. 원하시는 인재상, 어떤 개발자를 원하시는지 궁금합니다. 이야기를 개발을 리드하는 입장에서, 특히 쏘카의 개발 방향 관점에서 이야기했기 때문에 자연스럽게 이 질문에 가장 관심이 많았던 것 같다. 사실 …

Continue reading ‘Q&A: Architecture and Architect’ »

조직이 결국 아키텍처를 좌우한다.

어플리케이션 수준부터 시스템 수준의 아키텍쳐에 대한 이런 저런 이야기를 계속 해왔다. 사실 이런 이야기들은 이론이다. 이론과 현실은 다른다. 다르다는 것을 인정하고, 현실에 맞춰 이론을 적용하는 것이 선수들이 해야할 일이다. 현실을 규정하는 것들 가운데 가장 큰 몫은 환경일 것이다. 그리고 그 환경 가운데 또한 가장 큰 몫은 바로 조직 모델이지 않을까 싶다. 다른 글에서 Monolithic과 Microservice …

Continue reading ‘조직이 결국 아키텍처를 좌우한다.’ »

개발 모델: 프로젝트 조직 vs. 서비스 조직

시스템을 개발하는 방식에는 여러가지가 있을 수 있다. 가장 크게는 남이 개발해주는게 있고, 내가 개발하는게 있겠다. 우리나라에서 소위 SI(혹은 외주)라고 부르는 방식이 남이 개발해주는 방식이다. 이런 개발을 “프로젝트” 방식이라고 한다. 대체로 요구 사항과 기간을 개발사에게 전달한다. 물론 돈과 함께. 개발사는 최대한 맞춰 개발하고 그 결과를 전달한다. 물론 필요하면 설치와 운영에 필요한 사항까지 잘 마무리해야지. 그리고 남은 …

Continue reading ‘개발 모델: 프로젝트 조직 vs. 서비스 조직’ »

팀이 몽고에서 상을 받았습니다.

팀에서 개발한 서비스들 가운데 대용량 트래픽을 처리하는 경우, Mongo DB를 Main Repository로 사용하고 있다. 국내에서 제공되는 모든 트래픽을 모두 처리하기 때문에 MySQL같은 RDB로는 이를 처리할 수 없고, NoSQL 몇 개를 평가한 다음에 결국 주력으로 Mongo DB를 사용했다…. 하지만 Mongo를 전담하는 인원을 둘 수 없는 지경이라… 전문적으로 시간 투자를 해서 관리하고 튜닝할 수 있으면 좋겠지만 환경상 …

Continue reading ‘팀이 몽고에서 상을 받았습니다.’ »

휴면 계정 처리 – 배치에서 온라인 시스템으로

배치(Batch)라는 작업은 주기적으로 실행되는 작업을 말한다. 다루는 데이터가 적은 경우는 별 걱정이 없다. 하지만 다룰 데이터가 많다면 과연 이 작업이 정해진 시간안에 끝날지 걱정하게 된다. 배치 작업은 대량의 데이터에 대한 문제도 있지만, 한 주기안에 그 일이 끝나야한다는 시간적인 제약도 존재하는 문제기도 하다. 서비스와 이를 뒷받침하는 시스템은 계속 진화한다. 그리고 데이터와 시간에 대한 최적화도 진화에 맞춰 …

Continue reading ‘휴면 계정 처리 – 배치에서 온라인 시스템으로’ »

Spring 5 reactive programming ground zero

Spring framework에서도 5.X 버전부터 Reactive 방식의 프로그래밍이 가능하다. 이게 한 1년 이상 전 이야기인 것 같다. 내 입장에서 좋기는 한데 이게 그림의 떡이었다. 대부분의 Java Backend 개발을 Springboot framework을 가지고 하고 있는데, 여기에 Spring framework만 5.X 버전으로 덜렁 넣을 수 없기 때문이다. Spring 5.X 버전을 지원하기 위해 2.X 버전이 개발중에 있었지만, Milestone 버전이었고, 옆에서 Early …

Continue reading ‘Spring 5 reactive programming ground zero’ »

About the react-redux and keeping the global states in the persistent manner

I’m a pretty new one in the developing the frontend app in the web. Making a user interface in the web with HTML, CSS, and JS was a very tedious work and its code writing was so much ugly because of my short knowledge. If I had tried to learn the core nature of JS …

Continue reading ‘About the react-redux and keeping the global states in the persistent manner’ »

Git 기반 효율적인 이벤트 페이지 배포 환경 만들기

고객과 소통을 많이 할려다보면 이것 저것 알릴 내용들이 많다. 이건 게임 회사이기 때문이 아니라 소통에 대한 의지를 가진 회사라면 당연히 그래야한다. SVN을 사용했었는데 무엇보다도 변경 사항에 대해 파악하는 것이 너무 힘들었다. 또한 매번 배포 때마다 브랜치를 머지하고 관리하는데 쉽지가 않다. 대부분의 프로젝트들은 모두 git을 사용하고, 전환했지만, 프로모션 영역은 7G라는 덩치의 Hell of Hell이었기 때문에 차일피일 …

Continue reading ‘Git 기반 효율적인 이벤트 페이지 배포 환경 만들기’ »

Spring batch를 Parallel로 돌려보자

Monolithic 아키텍처 환경에서 가장 잘 돌아가는 어플리케이션 가운데 하나가 배치 작업이다. 모든 데이터와 처리 로직들이 한군데에 모여있기 때문에 최소한의 비용으로 빠르게 기능을 돌릴 수 있다. 데이터 존재하는 Big Database에 접근하거나 Super Application Server에 해당 기능의 수행을 요청하면 된다. 끝!!! 하지만 요즘의 우리가 개발하는 어플리케이션들은 R&R이 끝없이 분리된 Microservices 아키텍처의 세상에서 숨쉬고 있다. 배치가 실행될려면 이 …

Continue reading ‘Spring batch를 Parallel로 돌려보자’ »

AWS EC2에서 S3 Webhosting에 접속하기

라고 쓰지만 다른 이름으로  “같은 집안끼리 왜 이래!!”로 잡는다. 시스템을 구성하는 과정에서 목적에 따른 다양한 도메인을 별개로 잡기보다는 하나의 도메인에서 각 기능 제공 영역을 reverse proxy로 구성하는 방안을 적용했다. 여러 도메인들을 관리해야하는 피로감이 있었고, 각 도메인별로 따로 Certification을 받아야 하는 프로세스가 귀찮은 것도 있었다.  대강의 구조는 아래와 같이 셋업했다. 기존 설정에서 AWS S3 webhosting에 대한 …

Continue reading ‘AWS EC2에서 S3 Webhosting에 접속하기’ »