![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b0Q3rv/btrIcIiR5QD/OZFmXmBfHm7MPuchXvFIBk/img.webp)
데몬이란 - 사용자와 직접적으로 대화하지 않고, 백그라운드에서 오랫동안 돌면서 여러 작업을 하는 프로세스 - 데몬은 대개 부모 프로세스를 갖지 않으며, 즉 PPID(부모 프로세스 ID)가 1이며, 따라서 프로세스 트리에서 init 바로 아래에 위치함 - 데몬이 되는 방법은 일반적으로 자식 프로세스를 포크하고 자신을 죽이면서 init(PID=1)이 고아가 된 자식 프로세스를 자기 밑으로 데려가도록 하는 방식(fork off and die 방식) - 부모 프로세스는 fork호출 후 exit호출함으로써 자식 프로세스가 백그라운드에 남게 함 - 데몬 프로세스는 보통 네트워크 요청, 하드웨어 동작을 위한 용도로 사용되며 시스템이 시작될 때 데몬을 생성하는 경우가 많음 - 보통 프로세스 이름에 d가 붙는다 (htt..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/syDYm/btrIc9Av8D2/KuEfISCaNgHutkSKaS9z3K/img.png)
CI (Continuous Integration) 배포 이전까지의 단계인 공유 레포지토리(git, svn)에 빌드나 테스트, 병합 등으로 최종 릴리즈까지 통합하는 것을 자동화한다는 것을 의미한다. 코드의 변경사항이 많아지면 충돌의 가능성이 커지고 이에따라 변경사항을 주기적으로 빈번하게 머지할 중요성이 커졌다. 이에따라 최종 배포 전까지의 단계를 스크립트 파일을 통해 자동화하여 보다 빈번하게 머지할 수 있도록 하기 위해 등장한 것이 CI이다. 무엇보다 CI는 공유 레포지토리에 빈번하게 머지된 소스코드를 자동으로 빌드하고 테스트하며 이에 대한 이력을 쉽게 보여줘야 한다. 이로써 주기적으로 머지되는 소스코드의 충돌을 최소화하고 빌드와 테스트를 자동화하여 코드 결합을 빠르고 쉽게 이루어낼 수 있다. CD(Con..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/Oxp05/btrIcEm3V5w/Cyp8ZxNdMGhgDDgmkOLnK0/img.png)
Race Condition - 멀티 쓰레드 환경에서 발생할 수 있는 상황 - shared resource에 대해서 2개 이상의 task들이 동시에(concurrent, parrallel 모두 해당) 접근을 시도할 경우 이들 간의 순서로 인해 결과 값에 영향을 줄 수 있는 상태를 의미 - 이로 인해 shared resource에 대한 연산에 대해서 일관성이 깨진 상태의 결괏값이 도출될 수 있음 The degree of multiprogramming : single-processor가 수용할 수 있는 최대 thread 개수 Mutual exclusion - Race Condition을 해결하기 위한 개념 - 한 시점에 하나의 task만이 shared resource에 접근할 수 있음 (상호 배제) - 단, ..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/XwXTy/btrIdyfLnMb/7wFutwx4QkLIzWWLC8v9wk/img.jpg)
개요 - 게시글을 의미하는 post와 작성자를 의미하는 member 테이블을 만든다 - post 테이블에서 FK로 member의 id를 갖도록 구성한다. - post 테이블에서 member_id에 인덱스를 지정할 경우와 그렇지 않은 경우에 대해 분석한다. - post 테이블에는 데이터를 10,000개 넣어두고 분석한다. 인덱스를 설정하지 않은 경우 실행쿼리) select * from post where post_owner_id = 1 소요시간) 466 ms (execution: 147 ms, fetching: 319 ms) 실행계획 분석 쿼리) explain select * from post where post_owner_id = 1; 분석 결과 - type 항목이 ALL 이므로 최악인 '테이블 풀 스캔..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/WI9mJ/btrIcH5pbjR/Np0rKc4IBDXn8gWwneI1vK/img.png)
Bean 생성 순서 - Spring : 설정파일을 통해 등록된 bean을 자동적으로 위에서 아래로 bean들을 스캔하여 생성한다. - Spring Boot : Annotation을 이용해서 bean을 등록하게 되면 패키지에서 존재하는 순서대로(위에서 아래) 스캔하면서 bean을 생성한다. 따라서 알파벳 순서에서 밀린 패키지, 클래스는 생성 순서를 맞춰주지 않는 문제가 생길 수 있을 거라 생각하지만 특정 Bean을 생성하는 도중에 해당 Bean에 주입되는 새로운 Bean을 만나면 이 Bean부터 생성하기 때문에 문제가 되지 않는다.(단, 생성자 주입 방식일 경우에 해당) 위와 같이 XML, @Bean, @Configure, 또는 컴포넌트스캔 방식으로 bean으로 관리할 클래스를 스캔한 뒤 BeanFacto..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/Ts513/btrIaPQom9R/BFZqLSBUfZQloGeoAIJxhK/img.png)
ArrayList 배열은 크기가 지정되면 고정되지만 ArrayList는 크기 고정과 상관 없이 추가 삭제를 진행할 수 있다. 하지만 추가했을 때 배열이 동적으로 늘어나는 것이 아니라 용량이 꽉 찼을 경우 더 큰 용량의 배열을 만들어 옮기는 작업이 진행된다. 즉, ArrayList는 겉 보기에 리스트 같지만, 내부적으로는 배열로 존재한다. 기본적으로 new ArrayList()를 하게 되면 위와 같은 생성자가 호출되는데, 이때 기본적으로 ArrayList의 크기(capacity)는 10으로 지정되어 있다. 여기서 원소 10개 이상을 add했을 경우에는 다음과 같이 배열을 옮기는 과정이 발생한다. cf. 위 add 메소드에서 볼 수 있듯이 ArrayList는 elementData[] 라는 배열로 관리된다. ..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/UgqcX/btrIcEgj3at/Lo2NpNItbxBgQcXd8aOdsk/img.png)
Test Double 테스팅을 목적으로 실제 객체 대신에 사용하는 가짜 객체를 의미하며 Dummy, Fake Object, Stub, Mock들이 있다. Test Double이 없다면 테스트할 모듈과 의존관계를 갖는 모든 객체를 직접 생성하고 세팅해야 한다. 상태검증과 행위검증 1. 상태검증 메소드가 수행된 후 SUT나 협력 객체의 '상태를 살펴봄'으로써 올바로 동작했는지를 판단한다. 예) 예상했던 '값'과 실제 '값'이 같은지 테스트 cf. SUT(System Under Test) : 테스드 대상이 되는 주요 객체 2. 행위검증 SUT에서 협력객체의 특정 메서드가 '호출되었지 등의 행위'를 검사함으로써 올바로 동작했는지 판단한다. 예) 특정 로직의 흐름이 적절하게 모두 수행되었는지 또는 수행되면 안 될..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/zDFat/btss92ilJIY/WAtx1UQXsEfS9hLIcRsF9K/img.png)
SOP(Same Origin Policy) 다른 출처의 리소스를 사용하는 것을 제한하는 보안 방식이다. SOP를 사용하면 보안에 도움이 된다. 만약 사용자가 서버에서 제공되는 URL 외 다른 URL로 접속해 서버에 request를 보낼 경우 이에 대한 출처를 cross-origin으로 판단해 SOP에 위반되며 해당 request는 허용되지 않는다. 이때 다른 출처(cross-origin)의 리소스가 필요할 경우, 해당 리소스가 있는 출처에 접근하고자 하는 설정에 필요한 것이 CORS이다. cf. 출처(Origin) 란? URL의 protocol, host(도메인), port를 통해 같은 출처인지 판단한다. 셋 중에 하나라도 다르면 다른 출처이고 모두가 같을 경우에만 같은 출처이다. ex) http://l..
- Total
- Today
- Yesterday
- Linux
- 우분투
- rolling update
- 쿠버네티스
- spring
- RDB
- docker
- jvm
- ubuntu
- LFCS
- kafka
- Non-Blocking
- go
- Kubernetes
- GitOps
- argocd
- container
- 카프카
- 코틀린
- Stream
- CICD
- K8s
- 컨트롤러
- Controller
- golang
- helm
- db
- github actions
- Java
- ci/cd
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |