Spring batch를 Parallel로 돌려보자

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

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

Frontend crossdomain issue in IE

최근에 서비스를 오픈하면서 겪은 경험담 하나 정리해볼려고 한다. 백엔드 개발자로써 격는 크로스도메인 이슈를 통칭해서 CORS와 관련된 문제라고 이야기한다. API에 대한 요청이 동일 도메인이 아닌 경우에 발생할 수 있는 이슈다. 대부분 정책적인 문제와 관련된 것이라 도메인에 대한 접근 제어 혹은 권한 제어를 통해 해결의 실마리를 찾는다. 이 비슷한 문제가 Frontend쪽에서도 발생할 수 있다는 걸 작업 과정에서 …

Continue reading ‘Frontend crossdomain issue in IE’ »

좋은 코드에 대한 생각 – 3: 작업에 대한 기록

개발이라는 건 기록의 작업이다. 코드 한줄을 작성하더라도 이유없는 코드가 없다. 이런 이유로 코드를 작성할 때 그 근거를 기록으로 남길려고 하고 권장한다. 당신은 어떤 방식으로 기록하고 있나? Jira와 같은 티켓 관리 시스템을 이용할 수도 있겠고, 혹은 Confluence에 일지를 쓸수도 있겠다. 하지만 당신이 개발자라면 이 문제를 개발자스럽게 풀고 있을 것이라고 생각한다. 코멘트? 가장 흔하게 생각할 수 있는 …

Continue reading ‘좋은 코드에 대한 생각 – 3: 작업에 대한 기록’ »

곱씹기 – 피터 드러커의 최고의 질문

리더쉽에 대한 조직장님의 추천이 있어서 읽게 된 책이다. 목차에 보면 위대한 질문들이 나온다. » 미션: 왜 무엇을 위해 존재하는가? » 고객: 반드시 만족시켜야 할 대상은 누구인가? » 고객 가치: 그들은 무엇을 가치있게 생각하는가? » 결과: 어떤 결과가 필요하며 그것은 무엇을 의미하는가? » 계획 수립: 앞으로 무엇을 어떻게 할 것인가? 각 질문에서 이야기하는 것들은 책을 읽어보면 알 것 같고, 전체 …

Continue reading ‘곱씹기 – 피터 드러커의 최고의 질문’ »

Slack as a slack – 슬랙을 슬랙답게 쓰자

일상 생활에서 여러 메신저 어플을 사용하지만, 업무용 메신저도 따로 있다. 다른 분들은 카톡이나 라인 같은 어플을 업무용으로도 사용할지도 모르겠다. 하지만 개인용 메신저 어플에게 회사의 정보를 믿고 맞긴다는건 말이 안된다. 항상 “사고”는 존재하기 때문이다. 업무용 메신저는 따로 사용해야한다. 큰 기업인 경우 자체적으로 사내 메신저를 만들어서 사용하는 케이스를 본다. 네이버의 경우에도 사내 메신저를 PC부터 모바일까지 죄다 자체적으로 …

Continue reading ‘Slack as a slack – 슬랙을 슬랙답게 쓰자’ »

다중 도메인을 위한 HTTPS Certification 생성 방법

HTTP 환경에서 서비스를 제공하는건 여러모로 불안하다.  단순한 Packet sniffing에도 데이터가 탈취되니 말이다.  이렇게 말하지만 이 사이트 자체도 https를 사용하지 않으니 할말은 없다. 그럼에도 불구하고 회사를 통해 제공되는 서비스는 안전함을 우선해야 한다. 그렇기 때문에 HTTPS 방식으로 서비스를 제공해야하고.  개별 장비에 대한 인증서 생성을 위해서는 Certification 생성을 위해서는 CSR과 KEY 파일을 생성해야 한다.  한 도메인에 대한 생성은 …

Continue reading ‘다중 도메인을 위한 HTTPS Certification 생성 방법’ »

AWS EC2에서 S3 Webhosting에 접속하기

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

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

변수명으로 Readability 높이기?

코드 리뷰를 하다보면 약간 복잡한 expression 혹은 statement의 결과를 변수로 치환한 다음에 아래에서는 그 변수를 사용하는 경우가 있다.  변수의 값 참조가 여러번 이뤄지면 문제가 아니지만 갸우뚱하게 되는 케이스는 한번만 사용하는 경우다.  대부분의 자동화 분석 도구는 이런 경우에 대해 고치라는 처방전을 준다.  하지만 나는 기계가 아니라 사람이고 사람이 보기에 복잡해보이는 걸 두는 것보다는 “변수가 의미를 설명해주는데 …

Continue reading ‘변수명으로 Readability 높이기?’ »

Kafka monitoring and administration

카프카(Kafka)는 생각보다 쉬운 툴이다. 하지만 장기적으로 운영할 시스템 환경은 간단히 한번 돌리고 마는 경우와 고려해야 할 것들이 제법된다.  운영 관점의 설정 값들을 엉뚱하게 해놓으면 잘 차려진 밥상에 꼭 재를 뿌리게 된다.  이런 잘못을 범하지 않으려면 Kafka라는 이름뿐만 아니라 이 도구가 어떤 방식으로 동작하는지 깊게 들어가볼 필요가 있다.  물론 그 동작 방식을 운영 환경과 어울려 살펴봐야만 …

Continue reading ‘Kafka monitoring and administration’ »

좋은 코드에 대한 개인적인 생각 – 2

개발자는 코드를 작성해야한다.  그리고 코드들이 엮이고 엮여 시스템이 만들어진다.  시스템은 필요를 요청한 사용자에게 기능을 제공한다.  물론 시스템을 구성하기 위해 필요한 노력을 개발자만 하는 건 아니다.  인프라 엔지니어는 장비와 네트워크를 준비하고, 데이터베이스 엔지니어는 데이터를 보관할 수 있는 저장소를 준비한다.  최근에는 Data Scientist가 데이터를 분석하고 빅데이터 도구를 통해 적절한 값들을 생성해낸다. 이외에도 다양한 노력들이 합쳐져 시스템이 만들어진다. …

Continue reading ‘좋은 코드에 대한 개인적인 생각 – 2’ »