배열이란? 배열(Array): 동일한 데이터 유형의 요소들을 순서대로 저장하는데 사용되는 선형 자료구조. 각 요소는 배열내에서 고유한 인덱스를 가지며, 이 인덱스를 사용하여 해당 요소에 접근할 수 있다. 배열에 대한 특징은 다음과 같다. 인덱스 배열의 각 요소는 고유한 인덱스를 가진다. 인덱스는 0부터 시작하여 배열의 크기보다 1 작은 값까지의 정수이다. 인덱스를 통해 특정 요소에 빠르게 접근할 수 있다. 고정된 크기 배열은 일반적으로 고정된 크기를 가지며, 한 번 생성된 배열은 크기를 변경할 수 없다. 배열의 크기는 초기에 정의되며, 이 크기에 맞게 메모리가 할당된다. 연속적인 메모리 할당 배열은 연속적인 메모리 공간에 요소를 저장한다. 이는 각 요소의 크기가 동일하다는 가정 하에 가능하며, 이는 빠른..
Collection List List: 여러 항목을 순서대로 저장하는 자료 구조. 가변적인 크기를 가진 배열이라 할 수 있다. List의 특징으로는 다음과 같다. 순서가 존재한다. List의 각 요소들은 특정한 순서를 가지고 있다. 이는 요소들이 추가된 순서를 유지한다는 의미이다. 인덱스로 관리한다. 각 항목은 0부터 시작하는 인덱스를 가지고 있어 해당 인덱스를 사용하여 요소에 접근할 수 있다. 동적으로 크기가 변경된다. List는 일반적으로 크기를 동적으로 조정할 수 있는 가변적인 자료 구조이다. public interface List extends Collection { // 요소 추가 boolean add(E element); // 인덱스에 요소 추가 void add(int index, E elem..
자료구조 란? 자료구조: 데이터를 효율적으로 구조화하고 저장하는 방법을 다루는 구조. 데이터를 적절한 형태로 조직화하여 효과적으로 처리할 수 있도록 돕는 구조와 알고리즘의 집합을 의미한다. 프로그램이 데이터를 적절하게 저장하고 검색하며, 데이터 간의 관계를 관리하는 데에 중요한 역할을 한다. 자료 구조에는 다양한 유형이 있으며, 선택한 자료구조에 따라 프로그램의 성능이 크게 영향을 받을 수 있다. 몇 가지 흔히 사용되는 자료구조에는 배열, 연결 리스트, 스택, 큐, 트리, 그래프 등이 포함된다. 이러한 자료구조들은 각각 특정한 작업이나 문제 해결에 효과적인 도구로 사용될 수 있다. C++의 STL과 같이 자바에서도 데이터를 저장하는 자료구조들을 한 곳에 모아 편리하게 관리하고 사용하도록 제공한다. 이를 ..
컨테이너 오케스트레이션의 등장 쿠버네티스에 대해서 알아보기 전, 왜 쿠버네티스가 등장했는지 부터 알아보자! 전통적인 환경에서의 배포(On-premise) 초기의 개발 환경은 물리적 서버에서 애플리케이션을 실행했다. 이 방법은 물리적 서버에 애플리케이션의 변경 사항을 쉽게 적용할 수 없고, 물리적 서버를 유지 관리하는데도 비용이 많이 생겼다. 한 물리 서버에 여러 애플리케이션이 구동되면, 다른 애플리케이션 성능이 저하될 수 있어 리소스 할당 문제가 발생했다. 때문에 여러 물리 서버를 나누어 애플리케이션을 실행했지만, 많은 비용이 듦과 비효율적인 구조를 구축하게 됐다. 가상 환경에서의 배포(VM) 물리적 환경에 대한 솔루션으로 가상화가 도입되었다. 단일한 물리적 서버의 CPU에서 여러 대의 가상머신을 실행할..
네트워크의 기초 네트워크: 컴퓨터와 다른 디바이스들이 데이터를 주고 받을 수 있도록 연결된 구조를 말한다. 이 디바이스들은 컴퓨터, 프린터, 라우터, 스위치, 서버 등이 될 수 있다. 노드와 링크가 서로 연결되어 있거나 연결되어 있지 않은 집합체를 의미한다. 노드: 서버, 라우터, 스위치 와 같은 네트워크 장치 링크: 유선, 무선 네트워크에서는 디바이스 간의 통신을 관리하기 위해 프로토콜이 사용된다. 프로토콜은 데이터를 어떻게 주고 받을지에 대한 규약을 정의한다. LAN(Local Area Network): 지역 네트워크로 한정된 지리적 범위 내에서 디바이스들이 연결된 지역 네트워크를 나타낸다. 공유기나 스위치등을 이용해서 연결된 지역 네트워크이며 이더넷 프로토콜을 주로 사용한다. WAN(Wide Are..
https://memodayoungee.tistory.com/157 [MSA] Spring Boot 프로젝트에서 MSA 실습하기(Spring Cloud) - 1 Spring 기반 프로젝트에서 MSA를 구현하기 위해서 Spring Cloud에 대해 알 필요가 있다. Spring Cloud : 개발자가 분산 시스템에서 일부 공통 패턴(예: 구성 관리, 서비스 검색, 회로 차단기, 지능형 라우팅, memodayoungee.tistory.com Spring Cloud를 활용해서 Eureka Server, API Gateway, Eureka Client 개발까지 완료했습니다. 이번에는 Kafka를 활용해서 Service끼리 통신하는 방법에 대해서 실습하겠습니다. RabbitMQ를 사용할 수 있겠지만, 개인적으로 ..
Spring 기반 프로젝트에서 MSA를 구현하기 위해서 Spring Cloud에 대해 알 필요가 있다. Spring Cloud : 개발자가 분산 시스템에서 일부 공통 패턴(예: 구성 관리, 서비스 검색, 회로 차단기, 지능형 라우팅, 마이크로 프록시, 제어 버스, 일회성 토큰, 글로벌 잠금, 리더십 선택, 분산)을 신속하게 구축할 수 있는 도구를 제공한다. 세션, 클러스터 상태) 쉽게 말해 분산 시스템에서 필요한 다양한 기능들을 제공하고 있으며, MSA를 구성할 때 유용하게 사용되는 서브 프로젝트이다. 위의 그림을 살펴보면, MSA를 구축하기 위해서 API 게이트웨이가 요청을 처리하고 그 요청을 처리할 서비스에게 다시 그 요청을 위임해준다. 이와 같은 프로세스가 구축되기 위해서는 호출할 서비스를 찾는 매..
운영체제란? 운영체제(OS, Operating System): 사용자의 하드웨어, 시스템 리소스를 제어하고 프로그램에 대한 일반적 서비스를 지원하는 시스템 소프트웨어이다. 간단하게 말하자면, 컴퓨터를 쉽게 다룰 수 있게 해주는 인터페이스 ex) 윈도우, macOS, 리눅스 운영체제는 하드웨어와 소프트웨어를 관리하는 소프트웨어 전체라고 할 수 있다. 주요 목적은 하드웨어를 추상화하여 응용 프로그램이 하드웨어의 복잡한 부분을 직접 다루지 않도록 하고, 자원을 효율적으로 할당하여 시스템 전반의 성능을 최적화하는 것이다. 운영체제의 주요 기능과 역할을 다음과 같다. 프로세스 관리 (Process Management): 프로세스는 실행 중인 프로그램을 나타내며, 운영체제는 프로세스의 생성, 스케줄링, 종료 등을 ..
모놀리식 아키텍처란? 모놀리식 아키텍쳐(Monolithic Architecture, MA): 하나의 통합된 코드 베이스로 여러 비즈니스 기능을 수행하는 전통적인 아키텍처 스타일이다. 단일 애플리케이션 내에 서비스의 모든 로직이 들어가 있는 구조이다. 쉽게 말해 하나의 큰 목적이 있는 서비스 또는 애플리케이션에 여러 기능이 통합돼 있는 구조를 의미한다. 그림과 같이 다양한 서비스들이 단일 애플리케이션 안에 포함되어 있는 구조라고 생각하면 된다. 단일 DB와 연결해서 사용하고 보안, 설정등 모두 공통으로 사용하기 때문에 개발 속도가 빠르다. 모놀리식 아키텍쳐의 장점 간단한 유지보수 단일 코드 베이스를 가지고 있기 때문에 변경 사항을 적용하고 유비보수하는 것이 상대적으로 간단하다. 이로 인해 코드의 일관성을 ..
코드스테이츠 Main Project 후기 끝났다... 끝났다아... 끝나다악ㄱ가아ㅏㄱ아악!!!!! ??: 뭐해? 이제 취준해야지? Team name: 코벤져스 Project: PliP Development Duration: 2023.06.29~2023.07.21 Git Hub URL: https://github.com/dayoungee/plip 드디어 부트캠프 수련기간이 끝나간다.. 부트캠프 시작 전부터 그렇게 걱정하던 프로젝트들은 모두 무사히 끝냈다 ㅠㅜㅠㅠㅠ 프리 프로젝트만큼 빡세진 않았다. 그때는 점점 피폐해져가는 날 느꼈는데, 메인 때는 그정돈 아니었다. 맞닥뜨린 에러도 이미 프리 프로젝트 때 봤던 거라 수월하게 해결하기도 했었다. 프로젝트 경험이 이렇게나 중요하다... 프리 프로젝트에서는 하루종..