티스토리 뷰

SW 개발/Java

Java 소프트웨어 개발 철학

지단로보트 지단로보트 2018.08.02 18:26

Java 소프트웨어 개발 철학

  • IDE는 무조건 고민하지 않고 Intellij IDEA를 사용한다. 현재 적수가 없는 절대 강자이다. 기업에서도 무료 사용이 가능한 커뮤니티 에디션 만으로도 프로덕션 레벨의 백엔드 마이크로서비스를 개발하는데 충분한 기능을 제공한다. [관련 링크]
  • 연습 목적이 아닌 프로덕션 레벨의 엔터프라이즈 애플리케이션 개발이 목적이라면 하나의 완성된 .jar 파일을 생성하는 Fat JAR(Uber-JAR)를 지원하는 프레임워크를 사용한다. Spring BootDropwizard가 대표적이다. 상태가 없는 지속적인 배포가 가능한 마이크로서비스의 개발은 Fat JAR에서 시작됨을 명심한다. [관련 링크]
  • 빌드 자동화 도구인 Gradle로 프로젝트를 생성하고 관리한다. 편리한 의존성 관리의 혜택과 표준화된 Maven 컨벤션을 따를 수 있게 된다. /src/main/java, /src/main/resources/, /src/test/java, /src/test/resources 같은 표준화된 컨벤션을 따르면 처음 보는 오픈 소스 프로젝트도 쉽게 적응할 수 있다.
  • 프로젝트는 초기 단계부터 Domain-Driven Design, Test-Driven Design을 주요 철학으로 설계한다. 처음에는 귀찮아도 프로젝트의 크기가 커질수록 생산성과 안정성에서 위력을 발휘한다.
  • 프로젝트는 끊임 없이 리팩토링을 수행한다. 리팩토링은 천재의 영역이 아니다. 탄탄한 기본기와 시간과 정성의 싸움이다. 역시 프로젝트의 크기가 커질수록 가독성과 생산성에서 위력을 발휘한다.
  • DDD는 어려운 주제가 아니다. DDD의 시작은 비즈니스 관점에서 의미가 있는 단위를 Value Object(VO)로 추출하는 것에서 시작한다. 예를 들어 이메일 주소, 우편번호는 단순한 문자열이 아니라 의미를 가지기 때문에 유효성 검사 로직이 동반되어야 한다. 그동안 이들을 단순히 String 타입의 필드에 담았다면 EmailAddress, ZipCode 등의 클래스로 전환하자. Lombok 라이브러리를 사용하면 VO 설계의 복잡성을 낮추고 생산성을 높일 수 있다.
  • 저장소를 이해하자

    • 좋은 엔터프라이즈 Java 애플리케이션이란 무엇일까? 꽤나 단순하다. 수정이 쉬우면서 중단 없이 잘 버티고 응답이 빠른 서비스를 만들면 된다. 이를 위해서는 단순히 애플리케이션 레벨에서의 이해보다 원격지에 위치한 다양한 종류의 저장소에 대한 올바른 이해가 중요하다. 그리고 이러한 이해가 Java 소스 코드에 녹여져야 한다. 과거에는 Oracle, MySQL과 같은 전통적인 RDBMS 1개를 잘 다루면 훌륭한 개발자로 인식되었다. 하지만, 점차 극단적인 동시성 처리와 스케일링 능력이 요구되면서 굉장히 다양한 NoSQL 저장소에 대한 이해가 필요하게 되었다.
    • 최근에는 In-Memory Data Grid(IMDG) 저장소가 각광을 받고 있다. 메모리 기반의 고속의 클러스터 확장이 가능한 데이터 저장소라고 말할 수 있는데 무료 오픈 소스 중에는 Redis 기반의 Redisson, JVM 기반의 자체적인 인메모리, 온디스크 저장소인 Apache Ignite가 좋은 반응을 얻고 있다. [관련 링크]

참고 글


댓글
댓글쓰기 폼