전체 글 410

서브넷과 게이트웨이

서브넷과 게이트웨이 동일 네트워크와 원격지 네트워크 간 통신 동작방법과 차이 서브넷과 게이트웨이의 용도 로컬네트워크에서는 ARP 브로드캐스트를 이용해서 MAC주소를 통해 통신을 하지만 원격지 네트워크에 대한 통신은 장비의 도움이 필요합니다. 이때 필요한 장비를 게이트웨이(3계층) 라고 하고 게이트웨이에 대한 정보를 pc나 네트워크 장비에 설정하는 항목이 '기본 게이트웨이(라우터)'입니다. 기본게이트 웨이는 3계층 장비가 수행하고 여러 네트워크와 연결되면서 적절한 경로를 지정해주는 역할을 합니다. 내부망 통신과 원격지 통신은 방법이 달라지므로 출발지에서는 목적지가 자신이 속한 네트워크 범위인지 확인하는 작업이 필요합니다. 이때 사용되는 것이 서브넷 마스크 입니다 자신이 속한 네트워크를 구하는..

네트워크 2024.03.24

통합테스트을 좀 더 좋게 작성하기위한 사전 지식

단위 테스트에만 전적으로 의존하면 시스템이 전체적으로 잘 작동하는지 알 수 없다. 결국 통합테스트를 진행해야하며 단위테스트로 비즈니스로직을 확인한다 하더라도 외부의 의존성테스트를 안 할 수도 없는 노릇이다. 통합테스트의 역할 단위 테스트가 도메인 모델 및 알고리즘에 대한 테스트를 진행한다면 통합테스트는 컨트롤러를 다루는 전체적인 테스트를 진행한다. 통합테스트는 회기 방지가 단위테스트 보다 우수하고, 제품코드와의 결합도 낮아서 리팩터링 내성도 우수하다. 통합테스트는 주요흐름과 단위테스트가 다루지 못하는 기타 예외 상황을 다룬다. 빠른 실패 원칙 빠른 실패 원칙은 예기치 않은 오류가 발생하자마자 현재 연산을 중단하는 것을 의미한다. 마치 도미노를 할때 중간중간 세이프바를 두는것과 같다. 피드백 루프 단축: ..

Unit Testing 2024.03.17

IP 주소 개념 뿌시기

IP 주소 체계 IPv4 32비트 4개의 옥탯 (8 bit 단위로 나누고 옥텟은 .으로 구분) 10진수 표기시 0~255 255.255.255.255 (네개의 옥탯) 2계층 주소인 MAC 주소가 제조업체 코드인 OUI와 제조 업체별 일련 번호인 UAA의 두 부분으로 나뉘는 것과 목적이 다르지만 3계층 주소인IP 주소도 네트워크 주소와 호스트 주소 두 부분으로 나뉜다. 네트워크 주소 호스트들을 모은 네트워크를 지칭하는 주소. 네트워크 주소가 동일한 네트워크를 로컬 네트워크라고 한다. 호스트 주소 하나의 네트워크 내에 존재하는 호스트를 구분하기 위한 주소 클래스 MAC주소는 24비트씩 절반으로 나뉘지만 IP 주소의 네트워크 주소와 호스트 주소에대한 경계점이 고정되어있지 않다.(그래서 처음에 많이 복잡다) I..

네트워크 2024.03.09

가치 있는 테스트를 위한 리팩터링

좋은 단위 테스트 스위트의 속성을 정의 개발 주기에 통합돼 있다. 코드베이스 중 가장 중요한 부분만을 대상으로 한다. 최소한의 유지비로 최대의 가치를 끌어낸다. 즉 가치있는 테스트를 식별하고 가치있게 작성해야한다. 리팩터링할 코드 식별하기 코드 복잡도 도메인 유의성 클래스 또는 메서드가 가진 협력자 수 협력자의 유형 순환 복잡도 (1 + 분기점(if) 수) 복잡한 코드와 도메인 유의성을 갖는 코드가 단위 테스트에서 가장 이롭다. 해당 테스트가 회귀 방지에 뛰어나 지기 때문. 예로 주문 가격을 계산하는 메서드에 조건문이 없다면 순환 복잡도는 1이다. 그러나 이러한 메서드는 비즈니스적으로 중요한 기능이므로 테스트하는것이 중요하다. 협력자의 유형과 협력자 수에 따라서 테스트의 크기(유지보수성)가 결정된다. 위..

Unit Testing 2024.03.03

트래픽 종류 정리 (멀티캐스트, 브로드캐스트, 애니캐스트, 유니캐스트)

유니캐스트 1:1 통신 출발지와 목적지가 1:1로 통신 유니캐스트는 출발지와 목적지가 명확히 하나로 정해저 있는 1:1통신 방식입니다. 실제고 사용하는 대부분의 통신은 유니 캐스트 방식을 사용한다. 브로드캐스트 1: 모든 통신 동일 네트워크에 존재하는 모든 호스트가 목적지 브로드캐스트는 목적지 주소가 모든으로 표기되어 있는 통신 방식 입니다. 유니캐스트로 통신하기 전 주로 상대방의 정확한 위치를 알기 위해 사용된다. 주소 체계에 따라 브로드캐스트를 다양하게 분류할 수 있지만 기본 동작은 로컬네트워크 내에서 모든 호스에 패킷을 전달해야 할 때 사용된다.멀티캐스트 1: 그룹 통신 하나의 출발지에서 다수의 특정 목적지로 데이터 전송 멀티 캐스트는 멀티캐스트 그룹 주소를 이용해 해당 그룹에 속한 다수의 호스트로..

네트워크 2024.03.01

OSI 7계층 별 좀 더 깊은 이해

흔히 정보처리기사를 따면 OSI7계층은 필수로 공부하게 되는데 워낙 문제 난이도가 쉽다보니 이렇게 다들외운다 "물데네트전새표응"... 하지만 이 속엔 많은 역사와 개발적 지식이 들어있다. 1 계층 (물리계층) 주로 전기 신호를 전달하는데에 초점이 맞추어져 있고 장비로는 허브, 리피터, 케이블, 커넥터, 트랜시버, 탭이 있습니다. 허브 리피터 : 네트워크 통신 중재 케이블과 커텍터 : 케이블 본체를 구성하는 요소 트랜시버 : 컴퓨터의 랜카드와 케이블을 연결하는 장비 탭 : 네트워크 모니터링과 패킷 분석을 위해 전기신호를 다른 장비로 복제한다. 1계층 장비는 주소의 개념이 없다 그러므로 전기 신호가 들어온 포트를 제외하고 모든 포트에 같은 전기 신호를 전송한다. 2계층 (데이터링크 계층) 1계층에서 보낸 전..

네트워크 2024.03.01

단위 테스트작성 스타일과 함수형 어키텍처

단위 테스트의 세가지 스타일 출력 기반 테스트 상태 기반 테스트 통신 기반 테스트 위 스타일은 하나의 테스트에서 둘 이상 또는 세가지를 다 사용할 수 있다. 출력기반 테스트 테스트 대상 시스템에 입력을 넣고 생성되는 출력을 점검 하는 방식. 전역 상태나 내부 상태를 변경하지 않는 코드에만 적용되므로 반환 값만 검증하면 된다. 간단하게 출력값을 검증을 기반으로 하는 테스트, 이는 함수형이라고도 하고 사이드 이펙트 없는 코드 선호를 강조하는 프로그래밍 방식인 함수형 프로그래밍의 뿌리를 두고있다. 상태 기반 스타일 정의 상태 기반 스타일은 작업이 완료된 후 시스템 상태를 확인하는 것이다. 이 테스트 스타일에서 상태라는 용어는 테스트 대상 시스템이나 협력자 혹은 db나 파일시스템과 같은 프로세스 외부 의존성의 ..

Unit Testing 2024.02.24

aws 생성형 ai 부산 세미나

aws 생성형 ai 부산 세미나 부산에서 aws에서 주최하는 생성형 AI에대한 세미나가 작게 열렸다. 입장할때 받은 서브웨이를 먹으며 급하게 빨리 진행되는 세미나 내용을 정리하려고 하다보니 내용이 좀 이상하다. 아는 부분도 있고 몰랐던 부분도 있었다. 늦게나마 이렇게 기록한다. 급하게 쓴다고 콩글리시로 주저리주저리 썼다. 기반모델 파운데이션모델은 비정형데이터를 가지고 큰 규모의 모델을 만들어서 파인튜닝한다 종류 텍스트 투 텍스트 자연어 투 이미지 최근에 발표된 sora모델은 텍스투 비디오 까지도 발전진행중 21년 파운데이션 모델 논문 발의 트랜스포머모델과 llm을 합치면 지금의 gpt가 됩니다. GPT는 러닝프롬 휴먼피드백 방식의 학습진행 RLHF 모델크기를 키운 이유 openai에서 모델의 크기를 키우..

AWS 2024.02.24

목(mock)사용하는 테스트의 취약성

목과 스텁 흔히 테스트를 할때 다른 시스템 모듈의 의존성을 최소화 하기 위해서 목과 스텁을 사용하는데 목은 테스트 대상 시스템과 그 협력자 사이의 상호 작용을 검사할 수 있는 테스트 대역이다. 테스트 대역은 모든 유형의 비운영용 가짜 의존성을 설명하는 포괄하는 용어 여기서 목(목,스파이)과 스텁(스텁,더미,페이크)로 나뉜다. 두 유형의 차이점 목은 외부로 나가는 상호 작용을 모방하고 검사하는 데 도움이 된다. 이러한 상호작용은 테스트 대상 시스탬이 상태를 변경하기 위한 의존성을 호출하는 것에 해당 (이메일 전송을 하는 부분 등등) 스텁은 내부로 들어오는 상호작용을 모방하는 데 도움이 된다. 이러한 상호작용은 테스트 대상 시스템이 입력 데이터를 얻기 위한 의존성을 호출하는 것에 해당한다.(DB에서 데이터를..

Unit Testing 2024.02.18

이상 적인 단위테스트의 4대 요소

잘 만들어진 단위테스트 스위트의 특성 개발 주기에 포함돼 있다. 실제로 사용하는 테스트에만 가치가 있다. 그렇지않으면 작성해도 의미없다. 코드베이스의 가장 중요한 부분만을 대상으로 한다. 모든 실행 코드에 똑같이 신경쓸 필요가 없다. 애플리케이션의 핵심을 다른것과 구별하는 것이 중요하다. 최소한의 유지비로 최대 가치를 끌어낸다. 가치있는 테스트와 낮은 가치의 테스트 식별 가치 있는 테스트 작성 좋은 단위 테스트의 4대 요소 회귀 방지 리팩터링 내성 빠른 피드백 유지 보수성 회귀 방지 회귀는 소프트웨어 버그다.개발할 기능이 많을수록 릴리스가 될때마다. 고장날 가능성이 높아진다. 회귀 방지 지표에 대한 테스트 점수가 얼마나 잘 나오는지 평가하려면 다음을 고려하자 테스트 중에 실행되는 코드양 코드 복잡도 코드..

Unit Testing 2024.02.11