CS

· CS/OOP
객체지향 프로그래밍의 5가지 주요 원칙은 소프트웨어 설계의 품질을 높이고 유지보수성을 강화하기 위한 지침이다.SRP, OCP, LSP, ISP, DIP 5가지가 있다. 단일 책임 원칙 (SRP, Single Responsibility Principle) 하나의 클래스는 단 하나의 책임만 가져야 한다. (= 클래스) 목적 : 클래스를 변경해야 하는 이유가 단 하나뿐이어야 한다.장점 : 클래스의 역할이 명확해지고 코드의 가독성과 유지보수성이 향상된다. class Person { void cook(); //요리하기 - 요리사 void plate(); //플레이팅 - 요리사 void order(); //주문하기 - 손님 void pickup(); //픽업하기 - 손님 void eat(); ..
· CS
싱글톤 패턴하나의 인스턴스만 생성하고, 이 인스턴스를 전역적으로 접근 가능하게 만들어 사용하는 디자인 패턴 특징인스턴스가 하나만 존재 : 애플리케이션 전체에서 동일한 인스턴스를 사용글로벌 접근 : 전역적으로 동일한 객체에 접근할 수 있음생성 제한 : 외부에서 직접 객체를 생성하지 못하도록 제한 장점전역 상태 관리 : 하나의 객체를 공유하여 상태를 일관되게 유지할 수 있음리소스 절약 : 하나의 객체만 생성되므로 메모리와 자원을 절약할 수 있음글로벌 접근 : 애플리케이션 전역에서 동일한 인스턴스에 접근이 가능 단점글로벌 상태 관리 문제 : 잘못 사용하면 프로그램이 불필요하게 복잡해질 수 있음멀티스레드 환경에서의 문제 : 올바르게 구현되지 않으면 Thread-safe를 보장하지 못할 수 있음테스트 어려움 : ..
· CS
Layered 패턴애플리케이션을 기능별 계층(Layer)으로 나누어 설계하는 소프트웨어 설계 패턴 애플리케이션의 복잡성을 줄이고, 유지보수성과 재사용성을 높이는 데 유용하다.주로 MVC 패턴과 함께 사용되며, 대규모 애플리케이션 개발에서 자주 사용된다.    장점역할 분리각 계층이 특정한 책임을 가지므로 유지보수성이 향상된다.재사용성동일한 비즈니스 로직이나 데이터 접근 코드 유연성계층별로 독립적으로 변경 가능Presentation Layer사용자와 상호작용하는 계층데이터를 화면에 표시하거나 사용자의 입력을 처리한다.JSP, HTML, JavaScript, React와 같은 UI 기술  Application Layer (Service Layer)비즈니스 로직을 처리하는 계층Presentation Layer..
· CS
MVC 패턴MVC (Model-View-Controller) 패턴은 애플리케이션을 Model(모델), View(뷰), Controller(컨트롤러) 라는 세 가지 주요 컴포넌트로 분리하여 설계하는 소프트웨어 디자인 패턴이다.  코드의 유지보수성, 확장성을 높이고, 책임 분리를 통해 개발과 협업을 효율적으로 만든다.  Model (데이터)클라이언트가 보내는 무언가. 앱이 포함해야 할 데이터가 무엇인지 정의애플리케이션의 데이터와 비즈니스 로직을 관리한다.데이터베이스와의 상호작용, 상태 정보 관리, 데이터 처리 로직이 포함된다.DAO (Data Access Object)- DB에서 데이터를 CRUD 처리  View (HTML 페이지)클라이언트에게 결과를 알려주는 처리앱의 데이터를 보여주는 방식. 사용자에게 출..
· CS/OOP
추상화= 공통점 객체의 복잡한 내부 동작이나 구조를 감추고, 사용자에게는 필요한 기능이나 동작만 노출하는 것 추상 메소드메소드는 메소드인데 구현 부분이 없고 선언 부분만 있는 메소드public void turnOn();public void turnOff();public void setVolume(int volume);  추상 클래스 클래스는 클래스인데 추상 메소드를 포함한 클래스  추상 클래스 선언은 abstract 키워드를 사용하고, 사용은 extends 키워드를 통해 사용한다.// 추상 클래스public abstract class Animal { abstract void makeSound(); void eat() { System.out.println("This animal ea..
· CS
Prometheus1) hostname 변경모니터링할 서버 컴퓨터의 hostname을 변경 후 재부팅해준다.sudo su - rootvi /etc/hostname 이렇게 이름이 바뀐 걸 확인할 수 있다.   2) 설치apt updateapt -y install prometheus prometheus-node-exporter 3) 실행systemctl restart prometheussystemctl restart prometheus-node-exporter  실행 후 http://프로메테우스IP:9090 으로 접속  4) 모니터링 대상 추가대상 컴퓨터에 프로메테우스 설치 (nginx, tomcat, DB)apt -y install prometheus-node-exportersystemctl restart..
· CS/DB
클러스터란?여러 대의 컴퓨터가 모여서 하나의 시스템으로 동작하는 것 클러스터는 왜 홀수로 구성해야 될까?쉽게 말하자면 클러스터 내의 서버들은 대표 서버를 선정하기 위해 투표를 진행한다.만약에 서버가 짝수면, 투표가 동률이 나올 수 있다.서버가 홀수면 투표에서 동률이 나올 수 없다 => 무조건 표를 제일 많이 받는 서버가 뽑힌다.mariadb에서는 투표 = '쿼럼' 이라고 한다.홀수로 구성했을 때 과반수의 개수를 계산하는 게 훨씬 쉬워서 대부분의 클러스터를 구성하는 프로그램 모두 홀수로 구성한다 클러스터 구성 실습 (DB 서버 3대)1) 서버 중지systemctl stop mariadb2) 설정 추가 (3대 중 1대만 먼저 실행)vi /etc/mysql/mariadb.conf.d/50-server.cnf마..
· CS/DB
이번엔 아래 그림과 같은 아키텍처를 구성해보자 ! HAProxy로 웹 서버를 부하분산 시키고웹 서버(nginx) 2대,  WAS 서버(톰캣) 2대, DB 서버(mariadb) 2대를 구성할 것이다. 여기서 DB는 핫 사이트(Master - Slave)를 구성해서 Master에서만 저장 및 수정이 될 수 있게 하고,keepalived를 통해 Acitve와 Standby 상태로 만들 예정이다. 1. HAProxy 1) HAProxy 설정설정 파일에서 부하 분산시킬 서버 IP 주소를 입력 후 저장해준다.vi /etc/haproxy/haproxy.cfg frontend webserver bind *:80 mode http default_backend nginx-serverbackend nginx..
· CS/DB
진짜 대충 그린 그림...이런 아키텍처를 만들어볼 것이다.1. nginx  (10.10.10.10)1) ngnix 설치apt updateapt install -y nginx 2) nginx 설정vi /etc/nginx/sites-enabled/default 설정 파일 들어가서 아래 내용 붙여넣기 (필요 없는 주석들 다 지운 상태)이때, tomcat_backend 서버 IP 주소에는 내가 설정할 톰캣 서버 IP 주소를 입력해야 한다.upstream tomcat_backend { server 10.10.10.40:8080; server 10.10.10.50:8080;}server { listen 80 default_server; listen [::]:80 d..
· CS/DB
DB 서버 핫 사이트 구성해보기마스터 (Active) 설정 - (10.10.10.124)1) keepalived 설치apt install -y keepalived 2) keepalived 설정 파일 생성vi /etc/keepalived/keepalived.conf 안에 내용 작성 interval 5 , fall 4, rise 2=> 5초에 한 번 확인하는데, 4번 실패하면 중단되게 하라global_defs { router_id node01 enable_script_security script_user root}vrrp_script track_mariadb { script "systemctl is-active mariadb" interval 5 fall 4 rise 2..
셰욘
'CS' 카테고리의 글 목록