profile
DevOps를 살짝 찍먹하는 BackEnd 개발자

공유중인 가변 데이터는 동기화 해서 사용하라

여러 스레드가 가변 데이터를 공유한다면 반드시 동기화 해서 사용해야한다.한 스레드가 수행한 변경을 다른 스레드가 못보는 일을 방지일관성을 지키며 가변 데이터 사용한 스레드가 변경하는 중이라서 상태가 일관되지 않은 순간의 객체를 다른 스레드가 보지 못하게 lock일관성을

어제
·
0개의 댓글
post-thumbnail

Java에서 쓰레드란?

JVM 시작 → 자바 Process 시작 → 프로세스 안에서 Thread 수행작업을 동시에 해주려면 여러 Thread 생성해서 수행각 Thread마다 메모리를 할당해줌Process메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적인 개체)운영체제로부터 시스템 지원

어제
·
0개의 댓글

ELK (Elastic Search, Log Stash, Kibana+ File Beat)

기본적으로는 .log 파일로 로그를 남기는 방식을 사용한다단점로그 레벨 파악 어려움INFO, WARNING 과 같은 log lovel 일일이 찾아야함검색어 분석 어려움날짜 및 시간에 따라 로그 분석 어려움디스크 공간을 너무 많이 차지한다단순히 로그를 쌓는것만 중요한게

2022년 6월 15일
·
0개의 댓글
post-thumbnail

MQ 비교 (Kafka, RabbitMQ, Redis)

개념AMQP를 따르는 오픈소스 메세지💡 AMQP(Advanced Message Queuing Protocol): 메세지 지향 미들웨어를 위한 개방형 표준 응용 계층 프로토콜구성 요소producer: 메세지를 보냄exchange: 메세지를 목적지(큐)에 맞게 전달qu

2022년 6월 15일
·
0개의 댓글

Webflux, Nodejs, Nginx에 어떻게 적은 Thread로 동작할까?

SpringMVC에서 많이 사용하는 WAS는 Tomcat → 쓰레드 풀의 개수가 200개 이상동작 방법요청이 들어오면 ThreadPool에서 Thread를 하나 사용그러나 I/O가 발생하면 CPU를 block 시킴이 때 다른 요청이 들어오면 ThreadPool에서 Th

2022년 6월 10일
·
0개의 댓글
post-thumbnail

[EKS] 동적으로 Log 파일명 생성하기

Logback으로 /log/appname-날짜.log 파일명으로 로그파일을 생성하도록 설정 되어있다.로그 파일을 용이하게 관리하기 위해 EKS에서는 하나의 Persistent Volume Claim에 로그 파일 디렉토리를 Mount 시켰다.Pod가 여러개일 때 동일한

2022년 5월 13일
·
0개의 댓글

상속과 조합

코드 재사용 가능확장성유연성캡슐화를 깨트림설계자가 확장 고려 안했거나, API 엉망일 경우) → 상위 수정되면 하위도 계속 수정상위클래스 생성자 각각에 대응하는 생성자 별도로 정의해줘야함내부 구현을 불필요하게 오픈 (잘못하면 외부 API가 내부 구현에 묶일수도)새로운

2022년 5월 13일
·
0개의 댓글

Builder란?

매개변수가 많아지면 코드를 읽기 어렵고, 어떤 순서로 매개변수 넣어야하는지 헷갈린다.개념setter메서드로 매개변수 값 정하기하나의 객체를 만들려고 메서드를 여러개 호출해야함 (코드 길어짐)객체가 완전히 생성되기 전까지는 일관성(consisitency)가 무너진 상태가

2022년 5월 13일
·
0개의 댓글

정적 팩토리란?

static factory method객체 생성 역할을 하는 클래스 메서드이름을 통해 메서드 특징, 파라미터 특징을 표현할 수 있다호출될 때마다 인스턴스를 새로 생성하지 않아도 된다인스턴스 미리 만들어놓거나, 새로 생성한 인스턴스를 캐싱하여 재활용 가능반환타입의 하위타

2022년 5월 13일
·
0개의 댓글

GC (가비지 컬렉터)

자바에서 불필요한 객체 정리(메모리 정리)해주는 역할C, C++ 에서 개발자가 메모리 관리하니 실수로 memory leak 발생하는 일이 많았지만, 자바에서는 GC가 메모리 해제Garbage란? Unreachable Object, 즉, stack 에서 더이상 참조하지

2022년 5월 13일
·
0개의 댓글

스마트 포인터

자바는 GC가 메모리 관리하지만, C++은 사용자가 메모리 할당/해제 함이 때 할당받은 메모리를 해제하지 않을 경우 프로그램은 계속 사용하고 있는 메모리로 인지하고 해당 메모리를 사용하지 않는 메모리 누수(memory leak) 발생이를 방지하기 위해 등장포인터처럼 사

2022년 5월 13일
·
0개의 댓글

자바에는 포인터가 없는 이유

메모리의 주소값을 저장하는 변수어떤 이름(label)이 메모리의 어떤 주소를 가리키고 있는지 정보자바에는 참조(Reference)가 있기 때문포인터 vs 참조포인터: 메모리를 직접 핸들링 할 수 있음참조: 메모리를 직접 핸들링할 수 없음포인터는 주소값을 임의로 변경할

2022년 5월 13일
·
0개의 댓글

DB 데드락

트랜잭션(프로세스 ID 57)이 잠금 리소스에서 다른 프로세스와의 교착 상태가 발생하여 실행이 중지되었습니다". 트랜잭션을 다시 실행하십시오. 와 같은 에러가 발생했다면 데드락이 발생한것둘 이상의 트랜잭션이 다른 프로세스가 점유하고 있는 자원을 서로 기다리면서 무한 대

2022년 5월 13일
·
0개의 댓글
post-thumbnail

DB Replication

두개 이상의 DBMS 시스템을 Master/Slave로 나눠서 동일한 데이터를 저장하는 방식Master데이터 수정사항만 반영(Insert, Update, Delete) - 쓰기 담당Slavemaster db를 복사Select(Read 할 때) 쿼리는 Slave에 요청하

2022년 5월 13일
·
0개의 댓글
post-thumbnail

Sharding

horizontal partitioning과 관련된 데이터 베이스 설계 패턴한 테이블의 row를 여러개의 서로 다른 테이블, 즉 파티션으로 분리💡 vertical partitioning이라는 것도 있는데, 열 전체가 새로운 테이블로 분리되는 것을 말한다.shardin

2022년 5월 13일
·
0개의 댓글
post-thumbnail

AOP(관점 지향 프로그래밍)

관점 지향 프로그래밍객체 지향 프로그래밍의 단점을 해소하기 위해 등장Object Oriented Programming모든 변수 선언시 new를 통해 객체를 선언객체를 재사용 한다는 측면에서 효율적이었으나, 공통된 부가기능에 대한 코드가 중복,반복된다는 단점AAAA,BB

2022년 5월 13일
·
0개의 댓글
post-thumbnail

Bridge Pattern

구현(implementation)부에서 추상(abstraction)층을 분리하여 각자 독립적으로 변형이 가능하고 확장이 가능하도록 설계기능과 구현에 대해서 두개의 별도 클래스로 구현커플링(결합)은 약화시키며 협력은 가능하도록 하는 패턴클래스Abstraction: Imp

2022년 5월 13일
·
0개의 댓글
post-thumbnail

IoC(제어의 역전)

프로그램의 제어권을 framework가 가져가는 것IoC 개념을 채용한 프레임워크는 스프링 외에 많지만, 대표적인 것이 Spring이므로 Spring 기준으로 설명하겠다개발자가 비즈니스 로직 관련 코드를 작성하면 프레임 워크의 컨테이너가 자동으로 객체의 라이프사이클 관

2022년 5월 13일
·
0개의 댓글

DI (Dependency Injection) : 의존성 주입

외부에서 두 객체간의 관계를 결정해주는 디자인 패턴인터페이스를 사이에 둬서 클래스 레벨에서는 의존관계가 고정되지 않도록 하고 런타임시 관계를 동적으로 주입유연성을 확보하고 결합도를 낮춤두 클래스가 강하게 결합되어 있음Store에서 Pencil이 아닌 Book을 팔고자

2022년 5월 13일
·
0개의 댓글

Connection Pool 이란?

웹 컨테이너 실행되면서 DB와 미리 Connection을 해놓은 객체들을 pool에 저장해두었다가클라이언트 요청이 오면 Connection을 빌려주고, 처리가 끝나면 Connection을 반납받아 pool에 저장하는 방식자바에서 DB에 직접 연결해서 처리하는 경우(JD

2022년 5월 13일
·
0개의 댓글