%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4

2021-08-13
요즘은 프론트엔드, 백엔드 등으로 개발이 분업화 되었고 또한 최근 많은 곳에서 마이크로서비스 아키텍처 Microservice Architecture 를 도입하면서 하나의 언어가 아닌 여러 언어로 개발하는 것이 추세인 듯하다. 여러 언어로 개발하다 보면 테스트 커버리지와 코드 코드 정적 분석 Static program analysis 결과를 각각 보면 매우 불편한데 통합하여 한곳에서 볼 수 있으면 편할 것 이다. SonarSouce 에서 만든 SonarQube 는 코드를 분석하여 중복, 테스트 커버리지, 코드 복잡도, 버그, 보안 취약성 등을 보여주는 도구이다. 특히...
2021-07-29
테스트 자동화 Test automation 의 일환으로 필자는 Golang으로 테스트 코드를 작성할 때 먼저 통합 테스트 Integration Test [1] 를 작성한다. 통합 테스트 코드를 작성하다 보면 주요 테스트 시나리오 외의 케이스를 촘촘하게 테스트 하기 어려운데 그 이유는 테스트 실행 비용(예. 웹 서버, 데이터베이스 등등)이 비싸고 비슷한 케이스를 작성하다 보면 코드 중복이 많이 발생하여 유지 보수가 어렵기 때문이다. 통합 테스트를 보완해 주는 것은 단위 테스트 Unit Test...
2021-07-19
소프트웨어에서 말하는 불변성 Immutability 이라는 것이 있다. 즉 변하지 않는다는 것 이다. 다른 말로는 읽기 전용이라고도 해석할 수 있다. 무엇이 변하지 않는다는 것일까? 객체 지향 프로그래밍으로 좁혀서 생각해 보면 한번 만들어진 객체가 변하지 않다는 것을 의미 한다. 불변 클래스란 간단히 말해 그 인스턴스의 내부 값을 수정할 수 없는 클래스다.(중략)불변 클래스는 가변 클래스보다 설계하고 구현하고 사용하기 쉬우며, 오류가 생길 여지도 적고 훨씬 안전하다. - 이펙티브 자바 3판, 105 쪽...
2021-05-26
React로 만들어진 코드 예시 를 찾다 보면 JavaScript bind 함수 를 사용하는 코드를 심심치 않게 볼 수 있습니다. 그런데 최근의 React 코드에서는 좀 처럼 찾아 볼 수 없는데, 왜 과거에는 사용했지만 최근에서는 잘 사용하지 않는 걸까요? JavaScript bind 함수 먼저 bind 의 정의를 찾아보겠습니다. MDN에서 bind를 아래와 같이 정의하고 있습니다. bind() 함수는 새로운 바인딩한 함수를 만듭니다. 바인딩한 함수는 원본 함수 객체를 감싸는 함수로, ECMAScript 2015에서 말하는 특이 함수 객체exotic function object입니다. 바인딩한 함수를 호출하면 일반적으로 래핑된 함수가 호출 됩니다. - https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Function/bind...
2021-05-14
기사 제목을 보자마자 촉이 왔다. '옛날 전공이네' 하는 식의 촉 1) 생각보다 복잡한 클라우드 마이그레이션, 자동화 하려면? 시스템 마이그레이션이란 무엇인가? 기사가 양질 2) 이라는 것을 확인할 수 있는 문단이 등장했다. 우선 현재 운용중인 레거시 유닉스 시스템은 곧바로 클라우드로 이전하기 어렵다. 일단 리눅스 기반 시스템으로 마이그레이션 한 이후 다시 클라우드로 이전해야 한다. 이처럼 2단계를 거치면서 자산파악 , 분석, 마이그레이션, 테스트, 인증 등을 진행해야 하기 때문에 다양한 문제가 불거진다. 현황 파악단계에서는 나타나지 않았던 연관시스템이 등장하기도 하고, 존재하는지도 몰랐던 시스템이 나타나기도 하며, 예상한 것보다 비용이 급증하기도 한다. 조직이 크고 업무와 시스템의 복잡성이 클수록 클라우드 마이그레이션 난이도는 기하급수적으로 늘어난다....
2021-03-07
엘라스틱이 sql을 지원하기 시작한지 꽤 됐는데 조인은 아직이다. 그런데 아마존이 배포하는 opendistro 는 조인을 지원한다. 물론 아직 조인 내부적으로 집계도 안 되고, 서브 쿼리도 안 먹고 등등 많이 부족함. [caption id="attachment_28234" align="aligncenter" width="600"] 중복 제거 좀..[/caption] 하지만 외부 조인까지 지원하는 걸 보면, 빠르게 기능 개선이 이루어지지 않을까 싶다. 아마존이 이렇게 발 빠르게 움직인다면 엘라스틱도 가만 있지 않겠지? 그나저나 엘라스틱이 아마존을 겨냥한 라이센스를 발표하고, 아마존은 직접 엘라스틱을 배포하면서 서로 완전히 등을 돌린 모양새던데, 둘의 대립이 어떻게 결론 날지 궁금하다....
2021-02-12
Spring Batch를 이용해서 데이터베이스에 저장되어 있는 정보를 CSV file로 저장을 하는 방법에 대해서 작성해보겠습니다. CSV Writer 데이터 흐름 payment csv 데이터의 흐름은 간단합니다. payment table -> payment.csv 으로 변경됩니다. payment table의 불필요한 칼럼 id, created_ay , updated_at은 빼고 amount , order_id 만 CSV에 저장하겠습니다. Batch Code Job (1): 동일한 job parameter으로 여러 번 job을 실행시켜도 문제없게 run.id 를 증가시킵니다. (2): beforeJob payment 100 rows를 insert 합니다....
2020-12-24
xORM 은 필자가 선호하는 ORM Object–relational mapping 프레임워크이다. 주요 특징 Features 은 아래와 같다. [caption id="attachment_28157" align="alignnone" width="600"] https://gobook.io/read/gitea.com/xorm/manual-en-US/[/caption] [caption id="attachment_28158" align="alignnone" width="600"] https://gobook.io/read/gitea.com/xorm/manual-en-US/[/caption] xORM은 대부분의 ORM에서 지원하는 테이블 간의 연관 관계 처리를 지원하지 않는다. 필요하면 직접 구현해야 한다. 언뜻 생각하면 불편할 것 같은데 연관 관계를 포기함으로써 기능들이 단순화되어 익히는데 시간이 짧게 걸리고 쓰기 쉽다는 장점이 있다. 이 글은 필자가 xORM을 사용하며 편리하다고 느낀 기능을 소개한다....
2020-12-10
스타트업 개발자 혼자 빠르게 싸게 서버 구축하기 - 1편 스타트업 개발자 혼자 빠르게 싸게 서버 구축하기 - 2편 스타트업 개발자 혼자 빠르게 싸게 서버 구축하기 - 3편 스타트업 개발자 혼자 빠르게 싸게 서버 구축하기 - 4편 지난 3편 에서는 애플리케이션을 빌드/배포할 때 호스트 서버에 쉘 스크립트 Shell script 를 만들어 사용했다. 워드프레스와 마찬가지로 개발 서버 역시 도커를 사용한다. 왜냐하면 하나의 서버에 여러 서비스를 올리는 경우 SDK...
2020-11-11
Hadoop ResourceLocalizationService 에 대한 설명과 트러블슈팅 내용...
더보기