1. 자바는 Call By Value(Pass By Value) 방식으로만 동작한다 [ 자바 개발자 제임스 고슬링의 얘기 ] 아래의 내용은 자바 언어의 창시자인 제임스 고슬링(James Gosling)이 집필한 “The Java Programming Language”의 일부 내용이다. 어떤 사람들은 객체가 참조로 전달(by reference)된다고 잘못 말한다. 프로그래밍 언어 설계에서 참조 전달(pass by reference)은 인수가 함수에 전달될 때 그 값의 복사본이 아니라 원래 값의 참조를 전달받음을 의미한다. 만약 함수가 전달받은 매개변수를 변경하면 함수를 호출한 코드도 동일한 메모리 슬롯을 사용하므로 값이 변경되어야 한다. 자바는 객체를 참조로 전달하지 않는다(not pass objects ..
1. 유용한 개발 관련 아티클 및 영상 #1 The Frugal Architecture - 알뜰한 아키텍처를 위한 7가지 원칙(아마존 CTO Werner Vogels) 알뜰한 아키텍처를 이야기한 이유 아이러니하게도 클라우드 컴퓨팅이 기존 온프레미스 시대의 하드웨어 제약을 없앴음 원래 창의성과 혁신은 바로 기술의 제약에서 옴 클라우드 시대에 해당하는 새로운 제약 조건은 비용이며, 이를 통해 새로운 창의성을 발휘하고자 함 알뜰한 아키텍처의 원칙과 사례 요약 비용을 (비기능적) 요구사항으로 설정하라 비기능 요구사항은 특정 기능보다는 시스템 작동을 판단하는 기준임 개발 및 운영 과정의 모든 단계에서 비용을 고려해야 함 시스템을 비즈니스 운영 비용에 맞춰라 시스템을 설계/구축할 때는 수익을 고려해야 함. 돈을 버..
2022년 회고를 작성했던 것이 엊그제 같은데 벌써 2023년 회고를 작성하게 되었습니다. 시간이 어쩜 이렇게 쏜살같이 지나갔는지 모르겠는데, 막상 2023년을 돌이켜보면 많은 일들이 있었고 값진 경험을 했던 한 해였습니다. 이번에도 마찬가지로 2023년을 돌이켜보면서 제가 보고 배우고 느꼈던 것들을 공유하고, 돌이켜보며 2024년의 목표를 세워보도록 하겠습니다. 1. 2023년 회고 [ 2023년의 학습과 자기개발 ] 2023년에는 다음과 같은 학습을 진행했고, 상반기에는 목표했던 대로 데이터베이스에 대해 많이 파고들었다. 1월: RealMySQL 1권 & 김영한님 HTTP 강의(2회) 2월: 실용주의 프로그래머 & 2022 If-Kakao, NhnForward & 토비님 스프링부트 강의 3월: 친절한..
1. 스프링이 구현한 Aggregate Root(애그리거트 루트)와 도메인 이벤트 [ Aggregate(애그리거트)와 도메인 이벤트 ] 도메인을 중심으로 하는 애플리케이션을 개발할 때 등장하는 개념으로 애그리거트가 있다. 애그리거트(Aggregate)란 관련된 객체들을 모아둔 하나의 단위로, 값 객체(Value Object)와 엔티티(Entity)로 구성된다. 그리고 애그리거트의 중심에는 애그리거트 루트가 존재하는데, 이를 애그리거트 루트(Aggregate Root)라고 부른다. 객체들은 애그리거트 루트를 중심으로 관리된다. (해당 포스팅은 이러한 내용을 자세히 다루는 것이 주목적이 아니므로 간략히만 살펴보도록 하자.) 이를 주문 도메인을 기준으로 그려보면 다음과 같다. 애그리거트 루트가 영속화 될 때 ..
1. 언제 추상 클래스(Abstract Class) 또는 인터페이스(Interface)를 사용해야 하는가? [ 인터페이스와 추상 클래스의 특징 ] 인터페이스 인터페이스(Interface)는 상호 작용 방식을 명세해둔 것이다. 인터페이스의 호출자는 인터페이스의 구현에 대한 지식 없이도 원하는 기능을 수행할 수 있어야 한다. 예를 들어 우리는 자동차가 어떻게 움직이는지 세부 구현을 모르지만, 엑셀을 밟으면 앞으로 가고 브레이크를 밟으면 멈춘다는 약속을 통해 자동차를 운전할 수 있다. 따라서 인터페이스는 일종의 계약(contract)이라고도 불린다. 추상 클래스 추상 클래스(Abstract Class)는 인터페이스와 유사하다. 인터페이스와 마찬가지로 인스턴스화 할 수 없으며, 구현을 포함하거나 포함하지 않은 ..