본 글은 취업 준비 과정에서 개인적인 팁을 정리한 포스트다.나는 강점A, 강점B … 를 보유한 지원자다. 강점의 근거는 나의 경험A, 경험B … 를 통해 습득했다. 나의 강점A, 강점B … 를 너희 회사 업무A, 업무B … 에 기여하기 위해 지원했다.지원자 입장에서는
NginxTomcat ThreadThead PoolTPSVM 쿠버네티스궁극적으로 요청을 얼마나 처리할 수 있는지 대략적으로 정하려함
읽기가 많은 시스템의 경우 캐시를 고려해보세요.읽기 요청이 올 때마다 메인 저장소를 들리는게 아니라 메인 저장소의 자주 접근하는 데이터를 캐시에 올리면, 메인 저장소의 부하도 줄이고 읽기 속도도 향상된다.캐시를 처리할 경우 데이터 용량도 고려해야하며, 어쩔 수 없이 메
TDD의 궁극적인 목표는 작동하는 깔끔한 코드의 작성이다. 깔끔한 코드란 의존성 관리 및 가독성이 높은 코드라고 생각한다. 유지보수가 수월해지고 다른 팀원들이 코드를 쉽게 이해 할 수 있다.TDD는 자동화된 테스트로 개발을 이끌어가는 방식이다. TDD에서는 다음의 두
정의 : 자바와 데이터베이스를 연결하기 위한 Java 표준 SQL 인터페이스JDBC가 없다면 애플리케이션에서 연결할 DB에 따른 설정 방식이 각각 다 다를 것이다. 하지만 JDBC를 사용하기 때문에 DBMS의 종류(MySQL, MariaDB, Oracle 등)에 상관없
Read : 데이터 저장소에서 특정 데이터 레코드를 읽는다.Processing : 원하는 방식으로 데이터를 로직 처리한다.Write : 수정된 데이터를 다시 저장소에 저장한다.Job은 배치 처리 과정을 하나의 단위로 만들어 놓은 객체다. 또한 배치 처리 과정에 있어 전
코루틴은 코틀린만의 것이 아니다. 이름이 비슷해서 코틀린의 것이라고 생각할 수 있지만 파이썬, C- '협력형 멀티 태스킹', '동시성 프로그래밍 지원', '비동기 처리를 쉽게 도와줌' 이렇게 3가지 키워드로 정리할 수 있다.Co협력/함께 + Routine태스크/함수 :
배포 환경에서 동작 상태를 확인하기 위해 로깅이 필요하다. 로깅이란 프로그램 동작시 발생하는 모든 일을 기록하는 행위로, 서비스 동작상태 및 장애를 표현한다.I/O 작업 (Http 통신, DB 처리 등), Null Pointer Exception, Application
설계의 핵심은 의존성이다.큰 계획 없이 개발하다 보면 얽히고설킨 스파게티 코드가 나온다. sw는 지속해서 변하고, 정돈되지 않은 코드를 유지보수한다면 개발 시간이 오래 걸릴 것이다. 예를 들어 하나의 기능을 수정하는데 여러 모듈을 건드린다면 당연히 개발비용이 증가한다.
Horizontal PodAutoScaler에 의해 트래픽이 늘어나거나, 시스템 리소스 사용량이 증가하면 유동적으로 파드를 늘린다. 이후 사용량이 줄어들면 파드 일부를 제거하기도한다.Deployment를 통해 무중단 배포가 가능하며, 이 과정에서 ReplicaSet을
파드의 예상 소비량과 최대 소비량을 설정하는 것은 파드 정의에서 매우 중요하다. 이는 리소스를 공평하게 공유하고, 클러스터 전체에서 파드가 스케줄링되는 방식에도 영향을 미친다.파드를 생성할 때 컨테이너가 필요로하는 cpu, memory에 엄격한 제한을 지정할 수 있다.
파드는 내부에 프로세스가 실행되고 CPU, RAM, 네트워크 인터페이스 등의 리소스를 공유한다. 하지만 디스크는 공유되지 않는다. 파드 내부의 각 컨테이너는 고유하게 분리된 파일시스템을 가지기 때문이다.새로 시작한 컨테이너는 이전에 실행했던 컨테이너에 쓰여진 파일 시스
클라이언트가 파드에 서비스를 통해 접근하며, 파드들은 ReplicaSet에 의해 관리된다.파드에서 실행중인 애플리케이션의 버전을 바꾸고 싶을 때 기존 파드를 모두 삭제한 다음 새 파드를 시작하는 방식이 있다. 이는 간단해보이지만, 잠시동안 애플리케이션이 중단되는 문제가
쿠버네티스에 존재하는 애플리케이션 실행 단위모든 컨테이너는 항상 하나의 워커 노드에서 실행되며, 여러 워커 노드에 걸쳐 실행되지는 않는다.컨테이너는 단일 프로세스를 실행하는 것을 목적으로 설계되었으며, 여러 프로세스를 단일 컨테이너로 묶지 않았기 때문에 컨테이너들을 함
가상화란 하나의 물리 공간에서 여러 가상의 공간을 만들어주는 기술을 말한다.가상화를 관리하는 소프트웨어(주로 Hypervisor)를 사용하여 하나의 물리적 머신에서 가상머신(VM)을 만들어, 하나의 컴퓨터지만 마치 여러 컴퓨터를 실행하듯 사용할 수 있다.이와 동일한 맥
몇 년 전만 해도 애플리케이션은 거대한 모놀리틱 시스템이었다. 업데이트가 자주 되지 않아 릴리스 주기가 느리고, 개발자는 개발 후 패키징 파일을 운영팀에게 넘기면, 운영팀이 이를 배포 후 모니터링 했다. 이후 운영팀은 하드웨어 장애가 발생하면 이를 사용 가능한 다른 서
가상화란 가상화를 관리하는 소프트웨어(주로 Hypervisor)를 사용하여 하나의 물리적 머신에서 가상 머신(VM)을 만드는 프로세스다. 가상 메모리에서, 프로세스마다 독립적 공간을 남기는데 메모리만 활용하는 것이 아닌 디스크를 추가로 확보하여, 마치 가상의 공간을 더
서비스 규모가 크다면 혹은 방대한 코드를 가진다면 유지보수시 어느 부분을 건드려야할지 어렵다. 따라서 같은 이유로 변경되는 얘들을 모아놓고, 서로 다른 이유로 변경되는것들을 분리한다. 이렇게, 각 서비스는 한가지 일에 집중(SRP)을 목표로, 서비스 크기를 작게 / 자
기존의 수 많은 코드를 포함한 모놀리식 시스템을 어떻게 분해하면 좋을까?코드를 설계할 때 우리는 응집력이 높고, 각 컴포넌트간 느슨히 결합되는 서비스를