분류 전체보기
-
TLS handshakeNetwork 2022. 2. 6. 18:45
TLS handshake HTTPS 프로토콜을 사용하기 위해 서버와 클라이언트가 수행하는 과정입니다. 해당 과정의 핵심은 보안 연결에 필요한 암호화 방식 교환, 암호화 키 생성과 TLS 인증서 인증 등이 있습니다. 3가지 작업에 대해서 설명하겠습니다. Cipher Suites 교환 및 협상 클라이언트인 웹 브라우저는 Chrome, Safari, Firefox 등 다양한 브라우저가 존재하고 서버도 Nginx, Apache 등 다양한 환경으로 구성됩니다. 각각의 구성 환경에서 제공되는 기능은 다양하기 때문에 우선 클라이언트와 서버에서 사용할 암호화 방식을 선정해야됩니다. 이것이 TLS handshake 의 첫번째 역할이며 클라이언트는 사용 가능한 암호화 방식(Cipher Suites) 를 보내며 서버는 암호..
-
Certificate ChainNetwork 2022. 2. 6. 18:32
HTTPS (Hyper Text Transfer Protocol Secure socket layer) 요약하여 http message 의 암호화를 적용한 프로토콜입니다. 즉, http 프로토콜에서 TLS 인증서가 포함된 통신 규약입니다. 💡 TLS / SSL SSL 3.0 부터 IETF(Internet Engineering Task Force) 에서 표준으로 TLS 1.0 으로 지정한 것으로 동일한 용어입니다. 암호화 대칭키 암호화 복호화가 같은 키를 사용하는 방식 대칭키가 전달중 탈취되면 데이터 도난의 위험성이 존재함 AES(고급 암호화의 표준) 가 이 방식을 사용 공개키(비대칭키) 2개의 키로 암호화 복호화 A로 암호화 B만 복호화 B로 암호화 A만 복호화 한개는 개인만 소장하는 개인키, 다른 키는 ..
-
로드밸런싱Network 2021. 12. 22. 22:53
🌞 로드밸런싱이란? 여러 서버의 작업을 분산하여 웹 사이트, 어플리케이션, 데이터베이스 등 서비스의 성능과 안정성을 향상시켜주며 고가용성 인프라의 핵심 구성요소 💡 고가용성이란? 가용성이 높다 : 서버와 네트워크, 데이터베이스 등 정보 시스템이 오랜시간 지속적으로 장애없이 정상 운영이 가능한 성질 💡 보안 3요소 : 가용성 / 기밀성 / 무결성 🌝 이점은? 수평 확장 고가의 서버로 수직확장하는 것이 아닌 저렴한 다수의 서버를 증설하는 수평확장 가능 무중단 서비스 서버 한대의 장애가 발생하거나 동기적인 작업을 처리하는 경우 다른 서버로 트래픽 분배하여 최종 사용자(End User)에게 영향이 없다 대량의 트래픽 분배 단일 서버에 높은 부하를 수행하지 않고 여러 서버에 작업을 분산하여 적은 양의 작업을 수행..
-
양방향 통신(polling, long polling, websocket)Network 2021. 10. 23. 23:37
Polling Polling 방식은 간단하게 특정 시간마다 클라이언트에서 서버로 요청을 하며 응답을 통해 데이터를 갱신합니다. 즉, 아무런 server의 event 가 발생하지 않더라도 모든 클라이언트는 지속적으로 server에게 XMLHttpRequest를 보내게 됩니다. 또한 실시간으로 메시지 전달이 필요한 경우 요청을 보내는 주기가 짧아질 것입니다. 이는 서버의 불필요한 트래픽이 발생합니다. 매 주기마다 서버는 Request의 Header parser 하며, query를 통해 새로운 데이터에 대한 응답을 생성해서 보낼 것입니다. 그 후 서버는 모든 리소스에 대한 정리 작업도 진행해야 할 것입니다. Long Polling 기존 양방향 통신으로 사용되는 polling 방식보다 효율적인 방식의 기법입니다..
-
[Node.js] SSH Tunneling 을 통한 ORM 생성하기Backend 2021. 9. 29. 16:47
필자는 Ubuntu 내부 MySQL 서버에 접속해서 작업이 필요할 때 방화벽 DB port(3306) 를 열고 외부 접속을 했습니다. 당연히 보안에 취약할 것입니다. 귀찮음으로 인해서 필자의 local ip 에 대해서 접속을 허용하는 작업을 계속하게 되면 나중에 더 힘들 것 같아서 모듈을 만들고자 했습니다. Is it safe to open port 3306 in Firewall for external MySQL Connection I want to connect to a MySQL DB that is hosted with an ISP using something like TOAD, Navicat or HeidiSQL. I was told by the ISP that MySQL is listening o..
-
[Javascript] this?Javascript 2021. 9. 20. 23:37
해당 글은 YOU DON'T KNOW JS(this와 객체 프로토타입, 비동기와 성능) 책을 읽으며 정리한 Post입니다. 실제 책의 내용을 간략화 한 Post이고 실제로 책을 읽으면 많은 예제와 자세한 내용이 서술되어 있습니다:D 필자는 new Object, Object.create(), literal notation를 통해 객체를 사용하며 this를 많이 사용했습니다. 단순히 this를 현재 위치한 객체의 스코프를 가리키는 것이라고만 알고 사용하였고 생각대로 출력이 안 되는 경우 arrow function을 사용하여 물이 새는 부분만 급하게 막으며 지나갔습니다. 필자가 JS에 대해서 잘 설명한다고 생각하는 YOU DON'T KNOW JS를 읽으며 한번 제대로 이해하고자 포스트를 작성했습니다. this..
-
[Javascript] ScopeJavascript 2021. 9. 14. 16:11
해당 글은 YOU DON'T KNOW JS(타입) 책을 읽으며 정리한 Post입니다. 실제 책의 내용을 간략화 한 Post이고 실제로 책을 읽으면 많은 예제와 자세한 내용이 서술되어 있습니다:D 스코프(Scope)란? 개발자가 작성한 코드에 대해서 엔진이 식별자(변수)를 어디서 어떻게(스코프, 또는 중첩 스코프) 찾는가에 대한 '규칙의 집합'입니다. RHS, LHS 참조 검색 스코프를 통해 식별자를 찾는 이유는 변수의 값을 대입(LHS 참조 검색) 혹은 변수의 값을 얻기 위해서입니다(RHS 참조 검색). RHS, LHS 참조 검색은 현재 스코프에서 시작하여 식별자를 찾지 못한 경우 상위 스코프로 넘어가며 검색합니다. 상위 스코프로 넘어가는 검색의 반복은 식별자를 찾지 않으면 글로벌 스코프까지 도달해야 작..
-
Atomic DesignFrontend/Design 2021. 9. 5. 18:03
Component 를 분리하고 설계하는 것은 개발자, 디자이너분들이 늘 고민하는 고민거리입니다. 필자는 Component 설계에 있어서 Atomic Design 을 알아보고 적용하려고 노력하고 있지만 늘 어느 단계로 분리할지 고민에 빠집니다.. 예시는 각종 Project 를 경험하며 적용한 방식으로 채워 넣겠습니다. Atomic Design Pattern 는 하나의 Interface System 을 5단계의 작은 단위로 Component 나누어 관리하는 Pattern 입니다. 5단계에 대해서 학습 내용을 정리 해보겠습니다. Atomic Design Hey there! I wrote a book called Atomic Design that dives into this topic in more detail..