싱글톤(Singleton)패턴은 객체의 인스턴스가 오직 1개만 생성되는 디자인패턴이다 이점은 메모리 측면에서 좋으며 다른 클래스의 인스턴스들이 접근하여 사용할 수 있지만 데이터를 동시에 접근하면 동시성에 문제가 발생할 수 있으니 유의해야한다.
public class Single {
private static Single singleton = new Single();
private Single() {
// 생성자는 외부에서 호출 못하도록 private 선언
}
public static Singleton getInstance() {
return instance; // 외부 클래스들이 쓸 수 있도록 static 선언
}
}
⚠️싱글톤 문제점
코드 자체가 많이 들어간다
DIP위반 → .getInstance를 이용해 구체로 들어가 호출해야한다
private 생성자로 자식 클래스 만들기 어렵다 → 유연성이 떨어지고 안티패턴으로 불린다.
📝Chunk 지향 처리
Chunk란 데이터 덩어리로 트랜잭션이라고 생각하시면 편하실 거 같습니다 Chunk 지향처리란, 한 번에 하나씩 데이터를 읽어 Chunk라는 덩어리를 만든 뒤 Chunk 단위로 트랜잭션을 다루는 것을 의미합니다 여기서 Chunk 단위로 트랜잭션을 수행하기 때문에 실패할 경우에는 해당 Chunk 만큼만 롤백이 되고 이전에 커밋된 트랜잭션 범위까지는 반영이 된다는 것입니다.
📝APM
Application의 성능을 관리하는 서비스로 모니터링, 성능 분석, 장애관리 등 지원한다.
📝메모리디비
Memory DB는 Disk-based DB와 달리 말 그대로 외부 저장 장치에 데이터를 저장하지 않고 메모리에서 데이터를 읽고 쓴다 아래 사진과 같은 구조로 접근하기 때문에 Disk-based DB보다 훨씬 속도가 빠르다 하지만 Memory DB는 기본적으로 영속성(persistence)을 보장하지 않는다 즉, 에러 발생으로 갑자기 프로세스가 종료될시 휘발성으로 데이터가 모두 날아갈 수 있다 또한 메모리에 저장하기 때문에 용량에 대한 제약이 있다 한계에 도달하면 기존 데이터를 지우든가 아니면 새로운 데이터를 입력하지 못할 것입니다.
CI/CD 개념은 소프트웨어 개발 생명주기를 자동화하고 가속화하여 효율성을 높이고 신속한 소프트웨어 제공 가능
많이 사용하는 제품으로 Jenkins가 있다
📝CI (Continuous Integration)
CI는 "지속적 통합"을 나타내며 소프트웨어 개발에서 발생할 수 있는 문제를 조기에 감지하고 해결하기 위한 개발 방법론으로 개발자들이 코드를 중앙 저장소에 푸시할 때마다 자동으로 빌드 및 테스트를 수행합니다 이를 통해 코드 변경 사항의 통합이 지속적으로 이루어지며, 팀 내에서 코드 품질을 높이고 오류를 조기에 발견할 수 있습니다
💗장점
코드 퀄리티 향상 → 반드시 유닛테스트가 필요하기 때문에 그에 맞는 방향으로 개발해 실수를 줄인다.
즉각적인 버그 알림 → 유닛테스트 후 문제가 생긴 곳을 개발한 개발자에게 즉각 알림
📝CD (Continuous Delivery, Continuous Deployment)
CI를 기반으로 하는 지속적인 전달과 배포를 의미
Continuous Delivery (CD):
Continuous Integration에서 온 테스트 및 빌드 단계를 통과한 코드를 자동으로 운영 환경에 배포 가능한 상태로 만듭니다
Continuous Deployment (CD):
Continuous Integration에서 테스트 및 빌드를 통과한 코드가 자동으로 실제 운영 환경에 배포됩니다
📝쿠버네티스
컨테이너 관리 툴로서 나뉜 걸 배포하려고 할 때 수동으로 하나하나씩 올리기 힘들기 때문에 자동화 해주고 컨테이너를 모니터링해주고 죽은 즉시 바로 재시작을 시켜준다
명령 줄 인터페이스 [대화식인터프리터]로 키보드로만 써서 다 할 수 있다 cmd를 통해서 작업하는 방식을 생각하면 이해하기 쉽다
📝GUI
사용자가 컴퓨터와 정보를 교환할 때 그래픽을 통해 작업할 수 있는 환경을말한다 → 예시) 아이콘 마우스 등을 이용하여 화면에 있는 메뉴를 선택하여 작업을 할 수 있다
📝Compilation 플랫폼 의존적
OS별로 컴파일 방법이 다 다르기 때문에 OS에 따라 실행할 수도 있고 못할 수도 있다 → 기계어가 다름
📝Interpretation 플랫폼 독립적
Compilation의 경우 OS별로 컴파일 방법이 다 다르지만 Interpretation 플랫폼의 독립적이면 어떤 중간 장치(Java의 경우 JVM이 될 수 있다) 각 OS에 맞게 변환 해 컴파일을 해준다
📝Kotline
JetBrain을 만든 회사가 만들었으며 JVM에서 동작하는 크로스 플랫폼 오픈소스 프로그래밍 언어로 자바와 호환이 가능하고 서로의 코드로 변환 시키는게 가능하다. → 안드로이드 스튜디오를 이용해 코틀린 자료를 자바로 변환하여 사용가능하다 코틀린과 스프링을 접목시킨 코프링이라는 것도 존재한다.
Null Safe (Null에 대한 자동 처리)
corouting (많은 걸 한번에 실행가능한 코드 생성 가능) → 실제 써먹을 정도인지는 안 해봐서 모름
코틀린 → JS로 컴파일 (Node.js, React.js와 호환 가능) → 실제 써먹을 정도인지는 안 해봐서 모름