전체 글 16

[공부] 네트워크 - L4수준에서 외워야 할 것들

네트워크 계층별 데이터와 프로토콜네트워크 통신에서는 계층별로 사용하는 데이터 단위와 프로토콜이 다릅니다. 이를 통해 데이터가 생성, 전달, 소멸되는 과정에서 체계적으로 처리됩니다. 아래에서는 각 계층별 주요 프로토콜과 데이터 단위에 대해 설명합니다.1. 계층별 주요 프로토콜L2 (데이터 링크 계층):대표 프로토콜: 이더넷 (Ethernet)주소 체계: 48비트 MAC 주소예: 00:1A:2B:3C:4D:5E데이터 단위: 프레임 (Frame)L3 (네트워크 계층):대표 프로토콜: IPv4, IPv6주소 체계: IPv4는 32비트, IPv6는 128비트IPv4는 8비트씩 4개로 나뉘어 192.168.0.1 형태로 표현 (8비트 = 0~255 범위)데이터 단위: 패킷 (Packet)L4 (전송 계층):대표 프..

네트워크 2024.12.17

[공부] 네트워크 - L2 수준에서 외울 것

네트워크와 계층 구조네트워크와 계층 구조를 이해하려면 각 요소가 어떤 역할을 하고, 서로 어떻게 의존하는지 파악하는 것이 중요합니다. 이 글에서는 네트워크 계층 구조와 관련된 핵심 개념을 알기 쉽게 정리해보겠습니다. 네트워크 계층 구조의 핵심OSI 7계층은 네트워크에서 의존적 관계를 가진 프로토콜(규칙)을 계층적으로 나열한 것입니다. 여기서 중요한 점은 존립 의존성입니다. 예를 들어, 4계층(전송 계층)이 존재하려면 3계층(네트워크 계층)이 전제되어야 합니다. 이를 층층이 쌓아 올린 건물에 비유할 수 있습니다. 지하실(1계층)이 튼튼해야 1층(2계층)을 지을 수 있고, 그 위에 2층(3계층)이 올라가는 식입니다. 하나라도 무너지면 전체 건물이 불안정해집니다. OSI 7계층 개념 정리:L1~L2: 물리적 ..

네트워크 2024.12.13

[공부]Aggregate란?

Aggregate(어그리게잇) 이란? Aggregate(애그리게잇)은 DDD에 사용되는 핵심 개념으로, 도메인 객체들의 그룹을 의미한다.이 그룹은 비즈니스 규칙에 따라 함께 변경되거나 관리되어야 하는 객체들의 집합이다.하나의 애그리게잇은 루트 엔티티로 시작되며, 애그리게잇 내의 모든 객체는 이 루트 엔티티를 통해서만 접근이 가능하다. Aggregate의 특징?일관성 관계 (Consistency Boundary)애그리게잇 내의 모든 객체는 하나의 트랜잭션에서 일관성을 유진한다.외부에서 애그리게잇의 상태를 직접 변경할 수 없다. 항상 루트 엔티티를 통해 변경이 이루어진다 애그리게잇 루트(Aggregate Root)애그리게잇의 진입점이자, 외부에서 접근할 수 있는 유일한 객체이다.루트 엔티티는 다른 엔티티나 ..

카테고리 없음 2024.12.05

[공부] 공부하면서 왜 필요한지 생각해보기 (왜?).. @Transactional..

@Transactional 어노테이션은 왜 사용하는가? 트랜잭션 관리가  필요한 메서드에 붙여주는 어노테이션이다.트랜잭션은 여러 작업을 하나의 단위로 묵어서, 모든 작업이 성공적으로 완료되었을 때만 커밋하고, 그렇지 않으면 모두 롤백하는 방식이다.언제 Transaction을 사용하는가?그전에 트랜잭션이란 무엇일까? 트랜잭션은 "더이상 분할이 불가능한 업무의 처리 단위"를 의미한다고 한다. 한꺼번에 수행되어야 할 일련의 연산모음을 의미한다고 한다. 밑에 있는 예시와 같이 ATM기로 돈을 송급한다고 가정할 때 A에서 B로 송금을 했을 때 A에서는 차감이 되었지만 B에서 입금이 되지 않다면 그것은 심각한 문제일  것이다. 따라서 이 두 과정은 동시에 성공하거나 실패해야한다. 이러한 과정을 동시에 묶는 밥법이 ..

개발 2024.12.03

[MSA] Spring Cloud Gateway를 통해 서비스간 라우팅 해보기

FirstService,SecondService  우선 프로젝트를 하나 생성해준다. FirstService와 SecondService를 생성했으며 의존성은 Lombok, Spring Web, Eureka Discovery Client를 추가해주었다. 여기서 각각의 기능은?Lombok: 자바 코드에서 반복적으로 작동되는 코드를 줄여주는 라이브러리 예를 들어  1. Getter/Setter 자동생성: @Getter, @Setter 애노테이션을 사용해서 클래스 필드에 대해 자동으로 게터와 세터 메서드를 생성함2. 생성자 자동 생성: @NoArgsConstructor, @AllArgsConstructor 등을 사용해서 다양한 형태의 생성자 자동으로 생성 가능 Spring Web: 스프링 애플리케이션에서 웹 애플..

개발/MSA 2024.11.30

Spring Cloud..?

마이크로 서비스 아키텍처를 지원하기 위한 프레임워크가 Spring Cloud 다.  스프링 클라우드를 이용해서 애플리케이션을 구축하려고 할 때 기본적으로 어떠한 내용을 구성해야 하는지 어떤 서비스가 사용되어야 하는지에 대해서 정리를 한번 더 해보도록 하자.     Spring Cloud를 통한 마이크로서비스 구축:  필수 구성 요소 1. 중앙화된 환경 설정 관리(Centralized configuration management) 마이크로서비스 환경에서는 각 서비스가 독립적으로 운영되지만, 모든 서비스가 동일한 환경 설정을 공유하는 것이 중요하다. 이를 위해 Spring Cloud Config Server를 활용할 수 있다. 이 서버는 외부 저장소를 통해 설정 정보를 관리하고, 다양한 마이크로서비스에서 이..

개발 2024.11.27

[독서] 코드 컴플리트

매일 그래도 꾸준하게 읽으려고 생각을 했었는데 산 이후로 많이 읽지 못해서 아직 70페이지까지 밖에 읽지 못했다. 읽은 부분마다 중요하다고 생각한 것이나 강조하는 것에 대해서 내 생각을 좀 써보려고 한다.  읽은 날짜 : 11월 25일 50p~74p   3장에서는 선행 조건에 대해 강조하며 설명한다. "Code Complete 2"는 코드를 작성하기 전에 수행하는 선행 조건이 프로젝트의 성공 여부를 결정짓는다고 강조한다. 건물을 지을 때 설계와 기초가 중요하듯, 소프트웨어도 요구사항과 설계 단계에서 모든 것이 정해진다는 것이 핵심이다.만약 초기에 잘못된 요구사항으로 시작하면, 이후의 개발 과정은 반복된 수정과 손실로 이어질 수밖에 없다고 설명한다. 마치 좋은 음식을 만들기 위해서는 신선한 재료가 필요하듯..

[MSA] SOA와의 차이점은 뭘까?, REST Maturity Model

Service를 지향하는 아키텍처 SOA와의 차이점은 무엇일까요? SOA : 재사용을 통한 비용 절감 MSA : 서비스 간의 결합도를 낮추어 변화에 능동적으로 대응 -> 하나의 서비스와 연결되는 다른 서비스와의 관계를 줄인다.만약 회원가입이라는 마이크로 서비스에서 저장된 회원 목록 데이터가 결제라는 마이크로 서비스에서 사용되기 위해서는 두 개의 서비스가 연결되거나, 결제 서비스에서 직접 회원가입 서비스에 데이터베이스에 접속해서 데이터를 사용하는 방식이 아니라, API를 통해서 데이터를 요청해서 사용해야하고, 회원가입 서비스에 문제가 생길 시에도 결제 서비스에는 직접적인 영향을 주지 않고 우회할 수 있는 서비스로 제공할 수 있도록 구현된 것이 마이크로 서비스들의 관계라고 볼 수 있다.  즉 서비스 공유를 ..

개발/MSA 2024.11.27

[MSA] 12-Factors App? +3

클라우드 네이티브 애플리케이션을 구축함에 있어 고려해 봐야 할 12 가지 항목에 대해 알아 보았다.  12 팩터스는 클라우드 서비스 중 플랫폼 애저 서비스 즉 파스라라는 형태의 서비스 형태를 제공하는 Heroku 라는 플랫폼에서 제시한 12가지 항목으로서 클라우드 네이티브 애플리케이션을 개발하거나 서비스를 운영할 때 고려해야 될 항목을 정리한 것이다.  1. 코드베이스 (Codebase)설명: 애플리케이션은 반드시 단일 코드베이스를 가져야 하며, 버전 관리 시스템(Git 등)을 사용하여 관리해야 한다.핵심 내용:여러 애플리케이션은 서로 다른 코드베이스를 사용한다.동일한 코드베이스가 여러 배포 환경(개발, 테스트, 운영)에서 사용될 수 있다. 자체 레파지토리에 저장된 각 마이크로 서비스에 대한 단일 코드베..

개발/MSA 2024.11.26

[MSA] Cloud Native Application, Anti-fragile 특징

2010년도 이후부터 IT 시스템은 클라우드 네이티브, Anti-fragile 아키텍처 형태로 발전되어 왔다. 확장 가능한 아키텍처 (scale-up, scale-out으로 나눌 수 있다.) 원래라면 물리적인 서버, 하드웨어를 업그레이드를 해야 하지만 클라우드 네이티브에서는 가상의 서버, 가상의 스토리지를 이용하여 이러한 비용을 줄일 수 있다.서버 가상화는 필수적이다.시스템의 수평적 확장에 유연하다.확장된 서버로 시스템의 부하 분산, 가용성 보장시스템 또는, 서비스 애플리케이션 단위의 패키지 (컨테이너 기반 패키지)체계적인 모니터링을 통해 상태를 지속적 관리  탄력적 아키텍처 분리된 독립적 서비스로 구성을 함 서비스 생성 - 통합 - 배포, 비즈니스 환경 변화에 대응 시간 단축분할된 서비스 구조무상태 통..

개발/MSA 2024.11.26