개발

개발/생각

효율적 코드 리뷰

개발 프로세스가 어느 정도 잘 잡혀있는 곳은 코드 리뷰하는 문화가 자리 잡혀있는 곳이 많다. 그런데 그 방식이나 정도는 회사, 조직마다 조금씩은 다르기 마련이다. 코드 리뷰를 이래 저래 몇 년째 해오고 있는데 이에 대한 생각을 좀 정리해보았다. 일단 내가 생각하기에 코드 리뷰의 목적은 다음 정도인 것 같다. 이 변경 사항이 코드 베이스에 반영되어도 되는지, 목적에 대한 타당성 확인 요구하는 기능을 수행하는 것이 맞는지, 로직의 오류를 사전에 찾아내기 코드의 가독성, 컨벤션 등 유지보수하기 어렵게 작성되어 있지는 않은지 코드 변경 사항 조직 내 공유되도록 하기 첫 번째 목적의 경우에는 코드 작성 이전에도 가능한 부분인데, 크지 않은 변경인 경우 코드 변경과 함께 동의를 얻어내는 것도 괜찮다고 생각한다. (..

개발/생각

프로그래밍 언어는 도구에 불과하다

세상에는 참으로 다양한 프로그래밍 언어들이 있습니다. 개발자들은 보통 한두 가지 정도 익숙한 언어를 주력으로 사용하는 것 같습니다. 이런 말이 있습니다. 프로그래밍 언어는 도구에 불과하니 언어에 너무 얽매이지 말라는.. 만들려는 것을 만들기 위한 목적의 도구일 뿐이라는 것 인데요. 일리가 있는 말이지만, 필요한 언어를 필요한 수준까지 빠르게 습득하는 것도 능력인 것 같습니다. 누군가는 크게 어렵지 않게 며칠 만에 새로운 언어에 익숙해질 수도 있지만 누군가는 그것 자체가 노력이 많이 필요한 일일 수도 있으니까요. 소설 쓰는 것에 비교해 보면 소설의 스토리나 주제가 중요하지 언어는 도구일 뿐이다라고 한다면 일본어를 못하는 사람이 갑자기 일본어로 소설을 쓸 수 있을까요? 장인은 도구를 가리지 않는다는 말처럼 ..

개발

Colima Docker DNS 오류

Docker Desktop 유료화로 인한 대체로 Colima Docker를 사용하고 있었다. 그런데 터미널에서 docker login을 하거나 이미지를 pull할 때 다음과 같은 에러가 발생하기 시작했다. Error response from daemon: Get "https://registry-1.docker.io/v2/": dial tcp: lookup registry-1.docker.io on 192.168.107.1:53: read udp 192.168.5.15:52605->192.168.107.1:53: i/o timeout 에러 내용으로 보면 registry-1.docker.io 도메인에 대한 dns lookup이 안되서 timeout이 발생했다는 것 같다. 구글링해보니 비슷한 증상을 겪는 사람..

개발

DDD START! 책 내용 정리

DDD START! 도메인 주도 설계 구현과 핵심 개념 익히기 책 내용 요약 정리 내용입니다. DDD Start! 이 책은 DDD(도메인 주도 설계)를 처음 접하는 개발자를 위한 책이다. DDD를 실제 업무에 적용할 수 있도록 기본적인 이론을 설명하고 이를 구현한 코드를 바탕으로 입문자가 헤매지 않고 DDD를 학습할 수 있도록 했다. 애그리거트, 엔티티, 리포지토리 등 DDD의 핵심 패턴을 이용해서 도메인 모델을 구현하는 방법을 설명한다. 도메인 모델의 트랜잭션 충돌을 처리하는 기법(선점 잠금, 비선점 잠금)을 살펴보고, 도메인 이벤트를 이용해서 도메인 영역 간의 의존을 낮추는 방법과 명령 모델과 조회 모델을 나누는 기법에 대해서도 배운다. 스프링과 JPA를 이용해서 실제 동작하는 코드를 함께 제공하고 ..

개발/자바

JPA N+1 문제와 해결 방법

JPA를 사용할 때 N+1 문제는 성능상 가장 주의해야하는 부분 중 하나이다. 부서와 사원 같은 1:N 관계의 엔티티 구조에서 부서만 먼저 조회한 뒤 나중에 부서에 속한 사원 목록에 접근할 때 조회한 부서 수만큼 사원 목록 조회 쿼리가 수행되면서 성능 문제가 발생하는 경우라고 할 수 있다. N+1 번 쿼리가 수행된다고 해서 N+1 문제라고 부른다. 1은 처음에 부서 목록 조회한 쿼리, N은 조회한 부서 개수만큼 수행되는 사원 목록 조회 쿼리. 부서 엔티티에서 사원 목록 fetch 설정을 즉시 로딩(EAGER), 지연 로딩(LAZY)으로 하던 모두 발생할 수 있다. 즉시 로딩 다음과 같이 EntityManager를 통해 조회하면 즉시 로딩 설정된 사원 목록이 같이 조회되기 때문에 N+1 문제가 발생하지 않..

개발/Data Engineering

Apache Hudi Hive Sync

Apache Hudi를 사용해서 Hudi 테이블을 만들어서 운영할 때 Hudi 테이블을 Hive 테이블로도 만들어서 사용하고 싶을 수 있다. Apache Hudi에 대한 소개는 이곳은 참고 : Apache Hudi 소개 일단 Hive 테이블로도 만들어두면 데이터를 확인하는 것이 간편하다. Hive Metastore에 테이블을 등록해두면 Spark 또는 Hive로 덜 번거롭게 데이터를 확인해볼 수 있기 때문이다. Hive Sync를 한다는 것은 Hudi 테이블 경로를 location으로 하는 Hive 테이블을 생성하거나 스키마를 동기화한다는 것을 의미한다. Hudi 테이블 데이터를 복제하여 새롭게 Hive 테이블용 데이터를 생성하고 복제된 데이터를 location으로 하는 Hive 테이블을 만든다는 것은 ..

bebeside77
'개발' 카테고리의 글 목록 (2 Page)