본문 바로가기

전체 글31

OSPF 지난 BGP에 이어 OSPF를 알아보도록 합시다. OSPF는 게이트웨이 안쪽에서(하나의 AS내에서) 사용되는 프로토콜입니다. 모든 라우터들은 자신이 연결된 link의 cost를 브로드캐스트로 다른 모든 라우터들에게 알립니다. 따라서 모든 라우터들은 모든 라우터들의 전체 맵을 가지고 있게 됩니다. 이 정보를 통해 각 라우터는 다른 라우터들로의 최소 거리를 구하게 됩니다. 이때 사용하는 알고리즘이 그 유명한 다익스트라 알고리즘입니다.(다익스트라 알고리즘에 대해서는 생략) 다익스트라는 L을 간선의 갯수, R을 라우터의 갯수라고 했을 때 O(L+RlogR)의 시간복잡도를 가지는데 이마저도 L과 R이 커지면 비용이 너무 커집니다. 이를 위해서 나온 것이 하나의 AS내에서도 여러개의 area로 나누는 것입니다. A.. 2020. 6. 9.
BGP Routing은 어떻게 이루어지는가? Routing은 routing table을 통해 이루어집니다. 인터넷은 크게 두 개의 라우팅 아키텍처를 사용합니다. 네트워크(AS i.e.autonomous system) 레벨 라우터 레벨 왜 2개의 라우팅 아키텍처를 사용할까? 라우터가 너무 많기 때문에 2개의 레이어로나눔으로서 라우팅을 쉽게 합니다. Two-Tiered architectur는 필수적일 뿐만 아니라 scalable면에서도 좋습니다. BGP는 Border Gateway Protocol로서 네트워크 레벨, AS사이에서 라우팅을 위해 사용되는 프로토콜입니다. OSPF는 Open Shortest Path First로서 하나의 AS내에서 라우팅을 위해 사용되는 프로토콜입니다. 순서대로 이해해볼까요? BGP 어.. 2020. 6. 9.
테스트 주도 개발 - 1~2장 TDD의 주기 테스트를 작성한다. 올바른 답을 얻기 위해 필요한 모든 요소를 포함하여야한다! 실행 가능하게 만든다. 빨리 초록 막대를 보는 것이 핵심이다. 깔끔하고 단순한 해법이 명백히 보인다면 바로 구현하는 것도 괜찮다. 하지만 구현에 몇분이상 걸린다면 최대한 짧고 나쁘게(?) 구현한다. 올바르게 만든다.(리팩토링) 저질렀던 죄악을 수습한다. 소프트웨어 정의에 따라 구현한다. 이러한 주기를 짧게 가져갈 수 록 좋다. 테스트도 작은 테스트 단위로 추가하고 코드를 조금 수정 후, 바로 리팩토링을 한다. TDD의 목표는 무엇일까? 작동하는 깔끔한 코드를 얻는 것이 목적이다. 두려움을 관리할 수 있다. 두려움을 테스트로 극복하는 것이다. TDD는 로직이 복잡할 때 빛을 발한다. 간단한 경우에는 아무렇게나 작성.. 2020. 5. 24.
테스트 주도 개발 테스트 주도 개발 책을 읽는 이유 테스트 주도 개발 책을 읽고 블로깅을 하기로 하였쑵니다. 부스트캠프 캐치마이마인드 프로젝트를 진행하면서 어려운 로직을 코드로 구현할 때, 기능만 구현되는 엉망진창의 코드를 짠다는 것을 알게되었습니다. 원인이 무엇일까? 고민을 많이 하였습니다ㅠㅠ. 사고의 과정에는 문제가 없었으나 코드로 풀어나가는 데 문제가 있었고, 코드 구현 방식에 문제가 있음을 알았습니다. 구현을 하고 나면 리팩토링을 하지 않는 습관같은 것들이 문제였습니다. 코드를 구현해도 코드의 수준이 나아지지를 않는 것이였습니다. 테스트 주도 개발 aka TDD는 평소의 구현 습관을 송두리째 바꿔놓습니다. 항상 더 좋은 코드가 있는지 고민하게 만듭니다. 개인적으로는 TDD로 프로젝트를 1개 하는 것이 그렇지 않은 .. 2020. 5. 24.