본문 바로가기

TIL(Today I Learned)

TIL-230810(객체지향 프로그래밍, 대용량 트래픽 처리)

📝오늘 공부한 것

  • 객체지향 프로그래밍
  • 대용량 트래픽 발생 시 대응방법

 

알게 된 점

 객체지향 프로그래밍(Object-Oriented Programming, OOP) :

 - 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법

 

객체지향 프로그래밍의 특징은 캡슐화, 상속, 다형성, 추상화이다.

 

캡슐화 :

 - 속성(필드)와 기능(메서드)를 하나로 묶어 객체로 만든 후 실제 내부 구현 내용은 외부에서 알 수 없게 감추는 것을 의미한다.

 - 외부 객체에서는 캡슐화된 객체의 내부 구조를 알 수 없기 때문에 노출시켜 준 필드 혹은 메서드를 통해 접근할 수 있다.

 - 필드와 메서드를 캡슐화 하여 숨기는 이유는 외부 객체에서 해당 필드와 메서드를 잘못 사용하여 객체가 변화하지 않게 하는데 있다.

 - Java에서는 캡슐화된 객체의 필드와 메서드를 노출시킬지 감출지 결정하기 위해 접근제어자를 사용한다.

 

상속 :

 - 객체지향 프로그래밍에는 부모 객체와 자식 객체가 존재한다.

 - 부모 객체는 가지고 있는 필드와 메서드를 자식 객체에 물려주어 자식 객체가 이를 사용할 수 있도록 만들 수 있다.

이 같은 행위를 상속이라고 할 수 있는데 상속을 하는 이유는 다음과 같다.

     - 각각의 객체들을 상속 관계로 묶음으로써 객체 간의 구조를 파악하기 쉬워진다.

     - 필드와 메서드를 변경하는 경우 부모 객체에 있는 것만 수정하게 되면 자식 객체는 전부 반영이 되기 때문에 일관성을 유지하기 좋다.

     - 자식 객체가 부모 객체의 필드와 메서드를 물려받아 사용할 수 있기 때문에 코드의 중복이 줄어들며 코드의 재사용성이 증가된다.

 

다형성 :

 - 객체가 연산을 수행할 때 하나의 행위에 대해 각 객체가 가지고 있는 고유한 특성에 따라 다른 여러가지 형태로 재구성되는 것을 의미한다.

 

추상화 :

 - 객체에서 공통된 부분들을 모다 상위 개념으로 새롭게 선언하는 것을 추상화하고 한다.

 

장점 :

 - 클래스 단위로 모듈화시켜서 개발하기 때문에 업무 분담이 편리하고 대규모 소프트웨어 개발에 적합하다.

 - 각자 독립적인 역할을 가지기 때문에 코드의 변경을 최소화하고 유지보수를 하는데 편리하다.

 - 코드의 재사용을 위해 반복적인 코드를 최소화하고, 코드를 최대한 간결하게 표현할 수 있다.

단점 :

 - 처리속도가 상대적으로 느리다.

 - 객체의 수가 많아짐에 따라 용량이 커질 수 있다.

 - 설계시 많은 시간과 노력이 필요하게 될 수 있다.

 

 

https://www.codestates.com/blog/content/%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%ED%8A%B9%EC%A7%95

 

객체 지향 프로그래밍의 4가지 특징ㅣ추상화, 상속, 다형성, 캡슐화 -

객체 지향 프로그래밍은 객체의 유기적인 협력과 결합으로 파악하고자 하는 컴퓨터 프로그래밍의 패러다임을 의미합니다. 객체 지향 프로그래밍의 기본적인 개념과 그 설계를 바르게 하기 위

www.codestates.com

https://jeong-pro.tistory.com/95

 

객체 지향 프로그래밍이 뭔가요? (꼬리에 꼬리를 무는 질문 1순위, 그놈의 OOP)

객체 지향 프로그래밍(Object Oriented Programming) 여러 소프트웨어 관련 IT기업 신입사원 기술면접에서 면접자들 긴장을 풀어줄 겸 워밍업으로 자주 나오는 질문이다. "객체 지향 프로그래밍에 대해

jeong-pro.tistory.com

 

 

 대용량 트래픽 발생 시 대응 방법

 

Load Balancing(로드밸런싱) :  

 - 로드밸런서를 사용하여 트래픽을 여러 서버로 분산시킨다. 이를 통해 부하를 고르게 분산처리하여 서버 과부화를 방지한다.

 - 로드밸런싱을 해주는 소프트웨어 혹은 하드웨어 장비를 로드밸런서라고 한다.

 

Scale Up :

 - 고성능 CPU, 메모리 확장, SSD 등 서버의 스펙을 높이는 수직 확장 방식

 

CDN(콘텐츠 전송 네트워크) :

 - 데이터 사용량이 많은 애플리케이션의 웹 페이지 로드 속도를 높이는 상호 연결된 서버 네트워크이다. CDN은 클라이언트와 웹 사이트 서버간에 중간 서버를 두어 효율성을 높인다. 이로인해 페이지 로드 시간 단축, 대역폭 비용 절감, 콘텐츠 가용성 제고, 웹 사이트 보안 강화 등의 이점이 있다.

 

비동기 처리 :

요청 처리를 동기적이 아닌 비동기적으로 처리하여 응답 시간을 단축시킬 수 있다. 큐잉 시스템을 활용하여 작업을 비동기적으로 처리할 수 있다.

 

이외에도 코드 리펙토링, 샤딩 등이 있다.

 

 

https://aws.amazon.com/ko/what-is/cdn/

 

CDN이란 무엇인가요? - 콘텐츠 전송 네트워크 설명 - AWS

콘텐츠 전송 네트워크(CDN)의 주 목적은 대기 시간을 줄이거나 네트워크 설계로 인해 발생하는 통신 지연을 줄이는 것입니다. 인터넷의 글로벌하고 복잡한 특성으로 인해 웹 사이트(서버)와 사용

aws.amazon.com