개발 47

쿠버네티스와 컨테이너, 도커에 대한 기본 개념

용어컨테이너 - 앱이 구동되는 환경까지 감싸서 실행할 수 있도록 하는 격리 기술컨테이너 런타임 - 컨테이너를 다루는 도구도커 - 컨테이너를 다루는 도구 중 가장 유명한 것쿠버네티스 - 컨테이너 런타임을 통해 컨테이너를 오케스트레이션 하는 도구오케스트레이션 - 여러 서버에 걸친 컨테이너 및 사용하는 환경 설정을 관리하는 행위 컨테이너우리가 구동하려는 애플리케이션을 실행할 수 있는 환경까지 감싸서, 어디서든 쉽게 실행할 수 있도록 해 주는 기술 컨테이너 런타임컨테이너를 쉽게 내려받거나 공유하고 구동할 수 있도록 해주는 도구 Q. 쿠버네티스가 컨테이너를 다루는 도구라면 도커를 다루는 도구는 아니란 말이네요?A. 네 앞에서 언급했듯이, 쿠버네티스의 역할은 컨테이너를 분산 배치, 상태 관리 및 컨테이너의 구동 환..

개발/일지 2022.12.16

도메인 주도 설계 (Domain-Driven-Design)

도메인과 일치하도록 소프트웨어를 모델링하는데 중점을 둔 소프트웨어 설계 접근 방식 설계(Design) 뿐만 아니라 "개발(Development), 배포(Deployment), 운영(Direction)"을 고려해야 함. DDD를 한다는 것은 "도메인 중심으로 사고"한다는 것 -> 문제 해결을 위해 "모든 수단과 방법을 제대로" 고려하는 것 관련 포스팅https://engineering-skcc.github.io/microservice%20modeling/ddd-Srategic-design/ https://engineering-skcc.github.io/microservice%20modeling/Event-Storming/ https://github.com/tlandeka/authentication-mi..

개발/일지 2022.12.16

JPA Entity 삭제 설정 : orphanRemoval vs CascadeType.REMOVE

삭제 관련된 옵션으로 orphanRemoval 과 Cascade 가 있다. JPA 연관 관계 설정 시 옵션을 추가할 수 있다. orphanRemoval JPA 2.0 부터 지원하며 부모 엔티티와 관계가 끊어진 자식 엔티티를 자동으로 삭제한다. @OneToMany 와 @OneToOne 에서 지원하는 옵션 cascade 설정된 엔티티가 저장/수정/삭제 될 때 연관된 엔티티들도 전부 동일한 액션을 한다. 영속성 전이에 관한 옵션 CascadeType.REMOVE 연관 관계의 주인이 아니더라도 해당 엔티티를 지우면 관련된 모든 엔티티들이 삭제된다. 비교 부모 엔티티가 삭제되면 자식 엔티티도 전부 삭제되는 것은 동일하지만 원인이 다름 orphanRemoval = true 옵션은 부모 엔티티가 사라지면서 자식 엔티..

개발/JPA 2022.12.16

[JUnit5] 필드 값으로 객체 비교하기

객체를 비교할 때 동등성, 동일성으로 비교 가능하다. 동일성은 동일한 주소를 가리키냐의 문제이며 동등성은 내부 데이터의 값이 동일함을 의미한다. 동등성 비교를 할 때, 우리는 두 가지 상황을 상상할 수 있다. 주소만 다르고 값은 완전 일치 필드 일부분(수정일 등)만 차이를 가지며 나머지는 동일 이러한 상황에서 사용하는 junit 메서드가 usingRecursiveComparison() 이다. 참고 https://infoqoch.github.io/tdd/2022/01/15/tdd-field-comapre.html

개발/JUnit 2022.12.16

Mock Object - 모의 객체

모의 객체(Mock Object)란 주로 객체 지향 프로그래밍으로 개발한 프로그램을 테스트 할 경우, 테스트를 수행할 모듈과 연결되는 실제 외부 모듈들을 사용하지 않고 "가짜" 모듈을 작성하여 테스트의 효용성을 높이는데 사용하는 객체이다. 사용자 인터페이스(UI)나 데이터베이스 테스트 등과 같이 자동화된 테스트를 수행하기 어려울 때 널리 사용된다. *e.g. 입출력(UI) 사용자 인터페이스(UI) 테스트 : 사용자의 반응이 필요한 테스트를 수행할 경우 사용자가 테스트에 참여해야 하기 때문에 자동화된 테스트를 수행하기가 어렵다. 이럴 경우 모의 객체를 이용해 사용자의 응답을 흉내내어 사용자의 개입 없이도 테스트를 수행할 수 있다. 데이터베이스 테스트 : 자료의 변경을 수반하는 데이터베이스에 대한 작업을 테..

개발/JUnit 2022.11.16

GIT_Git Bash 설치 및 사용

https://gbsb.tistory.com/10 Git 설치와 사용법(Git Bash) Git을 이용하려면 두가지 방법이 있다. SourceTree라는 Git GUI 툴을 이용한 Git Git Bash를 이용한 Git SourceTree를 이용하면 GUI 툴이기에 접근하기에는 편하지만, 리눅스는 지원이 안되고 좀 더 디테일한 gbsb.tistory.com https://git-scm.com/docs/ Git - Reference Reference git-scm.com 기본적인 명령어 화면 초기화 : Ctrl + L 한 행의 처음과 끝 : Ctrl + A, Ctrl + E 목록 보기 : ls 또는 dir 파일의 내용 보기 : cat 특정 문자를 검색 : grep 디렉터리로 이동 : cd 디렉터리 생성 :..

개발/GIT 2021.10.19

GIT_Git Bash

shell 명령어 처리기 (aka. 검은창) 쉘은 운영 체제 상에서 다양한 운영 체제 기능과 서비스를 구현하는 인터페이스를 제공하는 프로그램이다. (쉽게 말해서, 사람이 컴퓨터에게 어떤일을 시킬때 쓰는 프로그램정도로 이해하면 될 것 같다.) 종류로는 bash, zbash, ksh, csh 등이 있다. shell script 텍스트 형식으로 저장되는 프로그램으로서 한줄씩 순차적으로 읽어 실행되도록 작성된 프로그램 shell을 사용하여 컴퓨터에 시킬 명령을 텍스트로 작성하여 실행시키는 것 뿐 입니다. (스크립트란? interpreter 방식으로 동작하는 컴파일 되지 않는 프로그램) bash 쉘의 한 종류 Bourne-again shell 줄여서, bash라고 부릅니다. 1987년 브라이언 폭스에 의해 만들어..

개발/GIT 2021.10.19