분류 전체보기
-
DDD - Value Object와 Reference ObjectJAVA/DDD 2020. 12. 21. 14:13
DDD 이터니티 조용호 님의 블로그를 보고 다시 한번 공부하기 위해서 정리하게 되었습니다! 애플리케이션을 구성하는 객체들을 REFERENCE OBJECT와 VALUE OBJECT로 분류할 수 있다. 시스템 내에서 해당 객체를 계속 추적해야 한다던가 객체가 표현하는 개념이 유일하게 하나만 존재해야 하한 다면 REFERENCE OBJECT로 만든다. 단지 객체가 추적할 필요가 없는 단순한 값이라면 속성값이 동일하다면 동일한 객체로 간주해도 무방하다면 고민할 필요 없이 VALUE OBJECT로 만든다. REFERENCE OBJECT와 VALUE OBJECT의 개념은 단순하다. 그러나 추적성의 진정한 의미를 이해하기 위해서는 다양한 문맥 내에서 이들의 차이점을 살펴볼 필요가 있다. 동일함(identical)의 ..
-
@ConfigurationPropertiesScan 과 생성자 바인딩Spring/Spring Boot 2020. 12. 15. 00:35
기존 @ConfigurationProperties application.properties에 여러 값들을 정의해 놓고 원하는 클래스에서 바인딩을 받고 싶다면 다음과 같이 프로퍼티 설정파일에 값을 이용하려면 @ConfigurationProperties 와 @Component를 통해서 선언해주었어야 했다. 혹은 다음과 같이 @EnableConfigurationProperties에 바인딩 받는 클래스를 모두 적어주어야 됐다. 실제 ApplicationRunner을 통해 확인해보면 값이 잘 바인딩된 것을 알수 있다. @ConfigurationPropertiesScan 스프링 부트 2.2 버전 이후 @ConfigurationPropertiesScan이 등장했다. 기존과 달리 @ConfigurationPropert..
-
JAVA 연산자JAVA/Java 2020. 11. 29. 00:18
산술 연산자 수학에서의 산술 연산자에는 사칙연산이 있다. 더하기, 빼기, 곱하기, 나누기를 의미한다. 그렇다면 컴퓨터는 어떨까? Java는 다섯 가지 연산이 있다. 더하기, 빼기, 곱하기, 몫, 나머지이다. 이때 곱하기, 나누기 부분에 차이가 있고 이에 대해 알아보자. 핵심은 곱하기와 나누기의 연산 방식이 비트를 Shift하며 계산을 한다는 특징이 있다. 몫과 나머지를 구하는데 최적화되어있기 때문이다. 물론 소수 출력의 경우는 변수의 Data Type을 실수형으로 사용하면 부동소수점의 활용으로 가능하다. 더하기는 "+", 빼기는 "-", 곱하기는 "*"로 사용 가능하다. 앞서 말해 나누기가 수학에서의 사칙 연산과는 다른데 나누기에는 두 가지 연산 몫과 나머지 연산이 있고 "/"와 "%"로 보기와 같은 사..
-
REST API의 이해와 설계네트워크/네트워크 정리 2020. 9. 7. 18:17
REST란? REST는 웹의 창시자 중 한 사람인 Roy Fielding의 2000년 논문에 의해 소개되었다. 현재의 아키텍처가 웹의 본래 설계의 우수성을 많이 사용하지 못하고 있다고 판단하였고 웹의 강점을 최대한 활용 가능한 네트워크 기반의 아키텍처를 소개했는데 그것이 바로 Representational safe transfer ( REST )이다. REST의 기본 REST 요소로는 크게 리소스, 메서드, 메시지 3가지 요소로 구성된다. 이름이 "Terry"인 사용자를 생성한다 라는 호출 HTTP POST http://myweb/users/ { "users" : { "name" : "terry" } } "사용자"는 생성되는 리소스 "생성한다"라는 행위는 메서드 "이름은 Terry인 사용자"라는 메시지가..
-
AWS의 Cloud Front 란 ( CDN 서비스 )DevOps/AWS 2020. 9. 6. 23:24
CND이란? Cloud Front는 CDN (Contents Delivery Network)이다. 이미지나 동영상 같은 정적인 콘텐츠들을 서비스한다. 서버가 있는 데이터 센터에서 서비스를 하게 되면 네트워크 latency로 인해 성능이 저하가 된다. 따라서 전 세계의 여러 개의 데이터 센터에 서버를 넣고 ( edge Node, edge Server ) 클라이언트와 가까운 데이터 센터로부터 콘텐츠를 제공하는 서비스이다. 얼마나 많은 지역별 데이터 센터에 edge Node를 설치하고 서비스를 제공하느냐 혹은 각 edge Node의 네트워크 대역폭이나 용량 등은 충분한지에 따라 서비스의 품질을 결정하게 된다. 그 예로 Akamai와 Limelight 등의 업체가 있다. 아마존의 경우도 Cloud Front라는..
-
AWS의 Route 53 DNS 서비스DevOps/AWS 2020. 9. 4. 19:53
Route53 Route53는 AWS에서 제공하는 DNS 서비스이다. DNS란? DNS는 Domain Name(www.helloworld.com)을 IP 주소로 바꾸어 주는 일종의 DIrectionary 서비스이다. 이러한 맵핑 정보를 저장해 놓는 파일은 DNS Zone file이라고 한다. 이 서비스는 DNS 서버에 저장해놓은 파일을 기반으로 주소를 변환한다. 캐슁 DNS 서버의 특성 중에서 주의 깊게 봐야 하는 특성은 캐슁이다. 보통 DNS 서버는 클라이언트가 사용하는 로컬 네트워크에 있는 DNS를 사용하게 된다. 회사 네트워크라면 회사 내의 DNS 서버, 집과 모바일을 사용할 경우 사용할 경우 해당 통신사의 DNS 서버를 사용한다. 이 DNS 서버들은 look up을 요청한 목적 서비스 서버에 대한..
-
Maven에 대해서 알아보자JAVA/Java 2020. 8. 30. 20:29
메이븐 이란? 자바용 프로젝트 빌드, 관리에 사용되는 도구이다. 아파치 앤트(Ant)의 대안으로 만들어졌다. 아파치 라이선스로 배포되는 오픈 소스 소프트웨어이다. 메이븐의 특징은? 1. 빌드 절차를 간소화하는 빌드 도구이다. 빌드란? 소스코드 파일을 컴퓨터에서 실행할 수 있는 독립 소프트웨어 가공물로 변환하는 과정, 결과물 ex) 우리가 작성한 소스코드(java), 프로젝트에서 쓰인 각각의 파일 및 자원 등(. xml,. jpg,. jar,. properties)을 JVM이나 톰캣 같은 WAS가 인식할 수 있는 구조로 패키징 하는 과정 및 결과물이라고 할 수 있다. 빌드 도구란? 빌드 도구란 프로젝트 생성, 테스트 빌드, 배포 등의 작업을 위한 전용 프로그램. 빠른 기간 동안 계속해서 늘어나는 라이브러리..
-
application.properties 란?Spring/Spring Boot 2020. 8. 29. 19:21
resources 디렉터리 밑에 있게 되는 application.properties 나 application.yaml 파일은 스프링 부트가 자동으로 로딩하게 되는 규약들이다. 이러한 프로퍼티들을 사용하는 방법은 여러 가지이며 각 사용마다 우선순위가 다르므로 오버 라이딩될 수도 있다. 다음은 프로퍼티에 우선순위이다. 1. 유저 홈 디렉터리에 있는 spring-boot-dev-tools.properties 2. 테스트에 있는 @TestPropertySource 3. @SpringBootTest 애노테이션의 properties 애트리뷰트 4. 커맨드 라인 아규먼트 5. SPRING_APPLICATION_JSON (환경 변수 또는 시스템 프로퍼티)에 들어있는 프로퍼티 6. ServletConfig 파라미터 7...