외부반복(for) 외부반복이란 Iterator와 같이 사용자가 직접 별도의 객체를 생성하여 명시적으로 컬렉션의 각 요소를 가져와 처리하는 방식을 지칭한다. 일반적으로 우리가 알고 있는 반복은 외부반복이며 전통적인 반복 방식으로 사용자가 직접 컬렉션의 각 요소를 반복, 순회하며 처리하고 반복문의 시작과 끝을 명시적으로 지정할 수 있다. 이 방식에서 반복의 제어는 사용자의 코드에 의해 명시적으로 관리된다. 반복 로직과 실제 비즈니스 로직이 혼재되어 코드의 가독성과 유지보수성이 감소할 수 있다. 구문의 간결성 측면에서 반복 제어 로직이 사용자의 코드에 명시적으로 포함되어 있어 명시적으로 콜백 함수를 호출해야 하기 때문에 비교적 구문이 더 길어지고 복잡하다. 병렬처리 수행 시에도 동기화에 대한 관리를 직접 해주..
SSO(Single Sign-On) SSO(Single Sign-On)는 한 번의 사용자 인증으로 다수의 애플리케이션 및 웹사이트에 대한 사용자 로그인을 허용하는 통합 인증 솔루션이다. 최근 간편 로그인 또는 소셜 로그인(Social Login)이라는 이름으로 많은 어플리케이션과 웹 사이트에서 접할 수 있다. SSO의 가장 큰 장점은 하나의 플랫폼에서 인증이 끝나면 그 이후 로그인과 로그아웃을 반복할 필요가 없다는 간편함이다. 이러한 간편함은 사용자 경험을 개선하는 중요한 방법 중 하나가 된다. 뿐만 아니라 서비스를 제공자도 기술적, 관리적 측면에서 아래와 같은 이점이 있다. 암호 보안 강화: 하나의 강력한 비밀번호를 만들도록 권장하여 사용자의 오입력 방지와 함께 기존의 보안 관행에서 어느정도 벗어날 수..
부팅(Booting)이란 사전적으로 컴퓨터를 시작할 때 컴퓨터를 구동시킬 프로그램을 컴퓨터 스스로 불러내는 동작을 의미한다. 최근 엣지 장비를 개발하며 복구를 여러번 수행하며 마주하게 되어 작성해보았다. 웜 부팅(Warm Booting) 먼저 웜 부팅은 프로그램을 강제 종료할 때도 사용하며 시작→ 컴퓨터 끄기 → 다시 시작(R)을 선택하거나 프로그램이나 드라이버 설치완료 시 재부팅되는 것도 웜부팅이라고 할 수 있다. 또는 Ctrl + Alt + Delete를 이용할 수도 있다. 주요 부분에 전기가 통하는 상태에서 컴퓨터를 부팅시키는 것 POST 검사단계를 거치지 않아 부팅속도가 빠름 시스템을 검사하는 과정을 생략하여 부팅 시간이 빠르고, 컴퓨터에 무리를 적게 줌 웜부팅은 시스템을 검사하는 과정(POST)..
규모가 크지 않은 서버를 구현할 때 Python을 이용하는 것은 생산성 측면에서 이득이 있다. 그래서 Flask를 이용하여 종종 API 서버를 구현하곤 했지만 최근 새 프로젝트에 FastAPI를 이용해 직접 API 서버를 구현해 보았다. 이때까지는 wsgi, asgi 등 콘솔창에 찍히는 로그를 별로 신경 안 쓰고 넘어갔었다. 이외에도 gunicorn, uvicorn 등 이제는 알고 넘어가야 할 때인 듯하여 이번 기회에 정리를 해본다. 일반적으로 Python으로 서버를 구현할 때 Nginx와 연동하여 배포한다. 여기서 주의할 점은 파이썬 웹 서버 프레임워크는 웹 서버가 아니라는 것이다. 물론 개발 중에는 Flask나 Django에 내장된 WSGI compatible server를 이용하는 것이 생산성에 도..
1. 주요 개념 OSPF(Open Shortest Path First) Backbone Area DR(Designated Router) OSPF(Open Shortest Path First)는 계층구조 동적 라우팅 프로토콜로 주로 대규모 네트워크에서 area를 이용하여 분할 관리할 수 있다. RIP는 Hop Count 만을 보고 경로를 결정하는 반면 OSPF는 많은 요소를 고려하여 경로를 선택하기 때문에 훨씬 효율적인 경로 선택 가능하다. OSPF의 장점은 RIP에선 30초마다 업데이트가 발생하므로 convergence time(수렴 시간)이 길지만 OSPF는 링크에 변화가 생겼을 때만 발생하므로 상대적으로 convergence time이 RIP에 비해 짧다. 또한 OSPF는 ABR(Area Border..
1. 주요 개념 RIP(Router Interchange Protocol) DV(Distance Vector) Auto Summary RIP(Router Interchange Protocol)는 거리 벡터(Distance Vector, DV) 라우팅 프로토콜로서 거리인 홉(hop)의 개수와 홉의 방향으로 길을 찾아가는 방식을 사용한다. 즉, 경유할 가능성이 있는 라우터를 홉수로 수치화하여 DVA(Distance Vector Algorithm)라는 알고리즘으로 인접 호스트와의 경로를 동적으로 교환하는 방식의 프로토콜이다. RIP는 30초마다 주기적으로 인접 라우터에게 자신의 정보를 광고(Advertise)한다. 동적 라우팅 프로토콜이므로 어떤 최단 경로가 차단되면 우회하여 다음 최단 경로를 찾아준다. RI..