본문 바로가기

전체 글266

안전한 개발 생활을 위한 매뉴얼(신입 개발자들 필독) 개발자로 생활을 하다 보면 시스템에 중대한 손상을 발생시키거나 데이터 손실을 초래할 수 있는 위험한 순간을 마주하기도 한다. 시스템의 중대한 손상이나 데이터 손실은 팀과 조직에 치명적일 뿐만 아니라 사용자에게도 심각한 영향을 미칠 수 있다. 이런 상황을 방지하기 위해 안전한 개발 생활 매뉴얼을 작성해보고자 한다. 운영체제(리눅스) 1. root 계정 사용하지 않기 root 계정은 최상위 권한을 가지고 있어 오동작이나 실수로 인한 치명적인 상황을 초래할 수 있다. 따라서 개발 작업 시 root 계정을 사용하는 것은 피해야 한다. 보통은 별도의 인프라 조직에서 사용자 계정을 생성해 주겠지만, 담당 부서가 없거나 직접 서버 작업을 수행해야 하는 경우, 반드시 별도의 사용자 계정을 생성하여 사용하도록 하자. 2.. 2024. 1. 15.
PSYThinktank 프로젝트 mustache 도입기 작년 말, 현재 운영 중인 사이드 프로젝트 중 하나인 PSYThinktank에 mustache를 도입했던 것을 회고해보려고 한다. 도입 이유 기존 프로젝트는 Java 1.8과 JSP를 사용하고 있었다. 하지만, 자바 최신 21 버전이 출시된 마당에 제일 오래된 LTS인 자바 8 버전은 너무 낡았다고 생각했다. 특히, 자바 11과 17을 거치면서 불변 컬렉션과 레코드 등 트렌드에 맞는 최신 문법을 사용할 수 없는 단점이 있었다. 그래서 자바 버전을 올리기로 결정하였다. 버전 상향을 결정하면서, 또 하나 결정해야 할 것이 있었다. 바로 패키징 방식을 war로 할 것이냐, jar로 할 것이냐였다. 기존에 외장 톰캣을 사용하고 있었기에 war로 패키징 후 톰캣 디렉터리에 파일을 추가해 주는 방식으로 배포하고 있.. 2024. 1. 7.
객체를 불변으로 만들기 위한 방어적 복사 참조형 변수를 멤버 변수로 사용하는 자바 객체의 경우 변수 취급에 주의해야 한다. 왜냐하면, 참조형 변수가 불변이 아닐 경우 외부에서 변경 가능해지는 등 부수효과가 크기 때문이다. 여기서는 가변 컬렉션의 예를 들어 이야기해보려고 한다. 컬렉션을 반환하는 getter가 단순히 멤버 필드를 그대로 반환할 경우 해당 필드가 참조형 변수이기 때문에 외부에서 요소를 추가, 수정, 삭제할 수 있게 된다. 이는 필드를 private으로 선언하여 객체를 은닉화한 이유를 없애버린다. 뿐만 아니라, 객체 생성 시 멤버 필드로 외부 컬렉션을 받아 올 경우, 해당 컬렉션을 외부에서 수정하면 같은 이유로 내부 멤버 컬렉션이 수정될 수 있다. 이러한 문제를 해결하기 위해 나온 개념이 방어적 복사이다. 외부에서 컬렉션이 수정될 것.. 2023. 12. 15.
일급 컬렉션이라는 용어에 대해서 일급 컬렉션이란 하나의 컬렉션 객체를 래핑하고 관련된 동작과 연산들을 정의해 놓은 객체를 말한다. 일급 컬렉션 사용은 ≪소트웍스 앤솔러지: 소프트웨어 기술과 혁신에 관한 에세이》의 객체지향 생활체조에서 언급된 이후 많은 자바 개발자 사이에서 인용되는 원칙 중 하나이다. 일급 컬렉션을 사용 및 권장하는 이유는 다음과 같다. 도메인에 특화된 자료 구조를 만들고 이름을 붙일 수 있다 자바에서는 컬렉션에 새로운 메서드를 추가할 수 없으므로 컬렉션을 래핑하는 방법을 사용해서 관련된 동작이나 연산을 정의하는 메서드를 추가할 수 있다. 래핑하는 객체에는 이름을 붙일 수 있으므로 해당 컬렉션에 대한 이름을 사용할 수 있게 된다. public class CustomerAccounts { private final List.. 2023. 12. 14.
728x90