본문 바로가기

분류 전체보기

(49)
스프링 프레임워크 등장 EJB 지옥 EJB에서 주는 인터페이스를 다 받아서 서비스 repo 등을 개발했어야 했다 -> 즉, ejb의 의존도가 굉장히 높아짐 근데 이 EJB가 굉장히 어려움. 그러다 보니, 그냥 순수한 JAVA를 쓰자는 말들이 나옴. 그러다 로드 존슨이란 사람이 있는데, 이 사람이 EJB 없이도 충분히 고품질의 확장 가능한 애플리케이션을 개발 할 수 있음을 보여줌. 여기에 지금의 스프링 핵심 개념과 기반 코드가 들감 이걸 기반으로 오픈소스인 스프링 프레임워크가 만들어졌다. 그러다 2003~ 2013 까지 쭉 스프링 프레임워크가 쭊쭊 발전하기 시작함. 핵심 기술: AOP, DI, MVC, WebFlux, 트랜잭션, JDBC, ORM, 캐시, 등등 스프링이 잘되면서 스프링을 기반으로 하는 데이터, 시큐리티, 배치 등..
kafka producer 시작 전에 리눅스 서버에서 server.propertise의 advertised.listener 가 뭔지 확인하고, localhost:9092에서 통신할 ip로 변경해주기 이렇게 되어있어야 한다. 안그러면 밑에서 실행할 java 프로그램 (producer에서 오류난다.) 바꾼 후엔, 재부팅 HOST 셋팅 1. vs code 다운로드 2. java 설치 및 환경변수 지정 --> 확인 cmd 열어서 java 및 javac 3. 깃헙에서 소스코드 zip 으로 다운로드 받고, 폴더 오픈 4. 원하는 코드 찾아서 ctrl+shift+d --> vs code 내에서 gradle, java 디버거 등등 없으면 다운로드 (vscode 화면에서 바로 가능) 5. 코드에서 BOOTSTRAP_SERVERS를 내꺼로 바꿔주기..
server.propertise brocker.id= 각 브로커마다 id를 갖는 것 log.dirs = 카프카를 통하는 데이터들이 저장되는 경로 num.partitions = 토픽별로 생성되는 partitions의 default 값 log.retention.housrs, log.segment.bytes, log.retention.check.interval.ms = 파티션 내 레코드의 삭제 정책 -------------------------------------------- kraft 버저느이 server.propertise [kafka@kafka1 kraft]$ cat server.properties | grep log.dirs #log.dirs=/tmp/kraft-combined-logs log.dirs=/APP/kafka/kafka..
Kafka 설치하기 (KRAFT) - rocky 8 - kafka 3.5.1 (scala 2.13) - 경로: /APP/kafka - JAVA: java open jdk 11 1. 파일 다운로드 https://kafka.apache.org/downloads Apache Kafka Apache Kafka: A Distributed Streaming Platform. kafka.apache.org 2. 로컬에서 CMD를 열고 설치하고자 하는 가상머신으로 SFTP 접속 3. put kafka 4. 압축 풀어주기 [kafka@kafka1 kafka]$ gzip -d kafka_2.13-3.5.1.tgz [kafka@kafka1 kafka]$ tar xvf kafka_2.13-3.5.1.tar [kafka@kafka1 kafka]$ ls -lrt..
vm virtualbox 가상머신 xshell로 붙기 1. vm virtual box안 가상머신의 네트워크 환경을 먼저 점검해주자. 일단 어댑터가 2개 붙어있어야 한다. 하나는 NAT 네트워크, 또 다른 하나는 호스트 전용 어댑터가 있어야 한다. - NAT 네트워크: 외부와 통신하기 위해 필요함 - 호스트 전용: 내 PC에서 가상머신으로 통신하기 위해 필요함 (외부랑은 통신 못함) 2. 가상머신 -> 설정 -> 네트워크 -> 어댑터 1,2가 각각 설정되어 있는지 확인 (없으면 추가) 2. 자, 이제 이 두개의 네트워크를 사용하겠다고 설정'만' 해놓은 상태임. 더 자세한 설정은 가상머신 내부에서 한다. 따라서, 가상머신을 Power On 시켜준다. 3. 터미널 키고 ifconfig 하여 확인 - enp0s3 : NAT (ip: 10.0.2.15) - enp0..
Rocky에 Kubernetes 설치하기 (kubeadm) Rocky가 깔려있는 버츄얼 머신이 있다고 가정한 다음 진행함 1. Rocky 우클릭 -> 복제 -> MAC Address Policy = 모든 네트워크 어댑터의 새 MAC 주소 생성 -> 다음 -> 완전한 복제 2. 아래처럼 복제가 완료됨을 알 수 있음 3. 복제 되었으면 서버를 실행시키자. master 및 worker 에 공통적으로 설정되어 있어야 하는 부분을 한번에 설정한 다음, 해당 서버를 다시 복제하여 다른 서버를 생성할 것이다. 우리가 공통적으로 설정해줘야 하는 부분은 다음과 같다. - 방화벽 및 리눅스 보안 프로그램 종료 (보안 프로그램이 쿠버 실행을 차단하여 정상적으로 작동하지 않음을 미연에 방지) - 메모리 스왑 종료 (idle한 자원을 활용하기 위한 방법이지만 ,쿠버에선 정상작동 안될 ..
커스텀 리소스와 컨트롤러 명령형 특정 명령을 처리하는 주체와 통신해 그 작업을 수행하고 그 결괏값을 돌려받는 방식을 쿠버에서는 명령형이라 한다. $kubectl create -f [파일].yaml 선언형 최종적으로 도달해야 하는 바람직한 상태를 정의한 뒤, 현재 상태가 바람직한 상태와 다를 경우 이를 일치하도록 만드는 방법. 여기에선 이 yaml 파일이 원하는 최종 상태다. 최종 완성되어야 하는 상태가 되기 위해 어떠한 동작을 취할지는 쿠버에서 컨트롤러라고 불리는 개체가 내부적으로 결정한다. $kubectl apply -f [파일].yaml create의 명령은 그 명령을 곧대로 바로 실행하기 때문에, 같은 파드가 올라와있을 경우 create은 중복 오류가 뜬다. 그러나 apply는 바람직한 상태가 아니면 파드를 띄우고 이미 파..
자바 업캐스팅 다운캐스팅 (문제풀이) 프로그래밍 언어론을 공부하면 피해갈 수 없는 자바의 업캐스팅과 다운캐스팅.. 볼 때마다 헷갈리기에 한번은 정리하고 갈 필요가 있다고 생각했었다. 업캐스팅과 다운캐스팅의 문제는 보통 상속의 관계에서 일어난다. 이를 이해하기 위해서 딱 두가지 정도만 개념을 확실하게 잡고가자. 참조변수와 인스턴스의 구분을 확실하게 하자 큰 것은 작은 것을 담지 못한다. 대입(=)이 일어날 때, 참조변수와 인스턴스끼리 대입이 일어나는 경우 ( a = new A()) 대입(=)이 일어날 때, 참조변수와 참조변수끼리 대입이 일어나는 경우 ( a = b ) 부모가 자식을 참조하려 할 때 자식이 부모를 참조하려 할 때 이것이 무슨 뜻인지 예시를 들면서 설명하겠다. 아래와 클래스가 있다. Child 클래스는 Parent 클래스를 상속하..
0-1 Knapsack 알고리즘 (완전탐색, 분기한정) 냅색 알고리즘은 여러가지 방법으로 해결할 수 있다. 완전탐색, BFS, Bestfit, DP 까지.. 1. 완전탐색가능한 모든 경우의 수를 살펴보는 것이다. 2. 분기한정분기한정이란, 완전탐색에서 가지치기를 하는 것이라 생각하면 된다. 그러나 가지치기가 탈출조건을 걸어 여러번 탈출하는거라면, 분기한정이란 아직 자식을 확장하기 전에 이 자식이 진짜 '유망'한가를 확인한 다음 유망한 자식들만 확장하는 것이다. 즉, 유망하지 않은 자식은 확장하지 않는다.그렇다면, 이 자식이 유망한지 안한지를 확인할 수 있는 방법이 있어야하지 않는가? 맞다. 필요하다. 냅색 알고리즘에선 Greedy 방식으로 이 자식이 유망한지를 확인한다. Greedy 방식으로 냅색 알고리즘이 유망한지 판단하는 방법은 다음과 같다.물건의 가치를..
[프로젝트 규모 산정] 기능점수(Function Point, FP) 구하는 방법 1. 기능점수 개요(Function Point, FP) IBM사의 Allan J. Albrecht에 의해 처음 개발되었다. 사용자가 요구한 기능을 기반으로 전체 시스템의 규모를 산정한다. 장점 개발에 사용된 기술, 환경, 언어, 도구, 개발자 능력으로부터 독립적이다. 사용자 요구사항만으로 규모 산정이 가능하기 때문에 소프트웨어 개발 초기단계에 산정이 가능하다. 단점 프로젝트 초기 단계에 모든 요구사항을 파악하기에 어렵다면, 산정이 어려움 알려지지 않은 기능의 복잡도가 있다면 산정이 어려움 2. 기능점수 측정 방식 절차 측정유형 결정 → 측정범위와 앱 경계를 식별 → 데이터 기능 측정 → 트랜잭션 기능 측정 → 기능 점수 산정 2.1. 측정 유형 결정 측정 유형은 개발 프로젝트, 개선 프로젝트, 애플리케이..