정리.

    2021년 회고(5년차)

    포기하면 편할까, 같은 로직을 하는 서비스, 예를 들어 S3에 접근해서 파일을 다루는 서비스가 각각의 도메인 마다 사용하고 있었다. 그러나 문제는 그 도메인의 레포가 다 분리되어 있어 같은 서비스의 코드도 분산되어 있었다. 도메인 엔티티는 그나마 jar파일을 만들어 관리를 하고 있는데, 이 마저도 jar가 최신화가 잘 되지 않았다. 실제로 버그 픽스한 버전이 S3 서비스에 다 적용하지 않아 문제를 만든 적이 있었다. 도메인 엔티티도 최신화를 하지 않아 이를 사용하는 서비스에도 문제를 발생시켰다. 그래서 나는 레포지토리 통합을 하고 싶었다. 그러나 하지 못했다. 6-7개로 분리된 레포를 멀티 모듈 프로젝트를 구성하기 위해 노력했다. 각각의 서비스를 각각의 애플리케이션 모듈로 넣어 놓고, 도메인의 로직을 모..

    Airflow에서 스파크 앱이 실패로 마킹될 때

    Airflow와 연동하여 spark job을 수행하는데 있어서 'System.exit(0)'으로 종료 시 airflow에는 실패로 마킹된다. 'Sytem.exit(0)'가 아닌 spark context의 'stop()' method를 이용한다. https://issues.apache.org/jira/browse/SPARK-1446

    Interned String in JAVA

    자바(Java)의 문자열(String)은 불변(immutable)하다. String의 함수를 호출을 하면 해당 객체를 직접 수정하는 것이 아니라, 함수의 결과로 해당 객체가 아닌 다른 객체를 반환한다. 그러나 항상 그런 것은 아니다. 아래 예를 보자. public void func() { String haribo1st = new String("HARIBO"); String copiedHaribo1st = haribo1st.toUpperCase(); System.out.println(haribo1st == copiedHaribo1st); } "HARIBO"라는 문자열을 선언한 후, toUpperCase()를 호출하고 있다. 앞서 말대로 불변 객체이기 때문에 toUpperCase()를 호출하면 기존 객체와 ..