2022/07 9

10월 4일 페이스북 대규모 장애 원인 간단 정리

2020년 10월 4일 페이스북은 물론이고 인스타그램, 왓츠앱 모두가 한꺼번에 접속되지 않는 문제가 발생했다고 한다. 장애 원인은 간단하게 정리할 수 있었다. 페이스북의 라우트가 라우터에서 즉 쉽게 말해 네트워크 상에서 없어졌기 때문이다. 즉 페이스북으로 무언가를 보내는 길 자체가 사라졌기 때문에 전 세계 어느 곳에서도 페이스북을 이용할 수 없게 된 것이다. 기업이 커지게 되면 하나의 작은 망을 구축해서 쓰게 되는데 페이스북도 마찬가지로 모든 서버들이 하나의 단일 지점을 기준으로 외부와 소통하고 있던 상태였다. 그런데 이 연결지점인 라우터가 자신이 facebook이라는 것을 외부로 알려주는 것을 중단했기 때문에 발생한 문제이다. 내부 개발자가 실수로 설정 정보에 라우터의 정보를 삭제하는 설정까지 넣은 상..

개발 팁 2022.07.29

[NCP] Naver cloud platform 기초 학습 내용 정리 (입문)

NCP VPC 정의 VPC(Virtual Private Cloud)는 퍼블릭 클라우드 환경에서 사용할 수 있는 고객 전용 사설 네트워크임. 다른 네트워크와 논리적으로 분리되어 있어 IT 인프라를 안전하게 구축하고 간편하게 관리할 수 있음. 기존의 데이터 센터 네트워크와 유사하게 구현가능 기능 다른 네트워크의 간섭없이 완전히 분리된 네트워크 사용가능 VPC내부에 서브넷 생성 가능 Access Control을 통해 네트워크 접근을 제어하여 강력한 보안을 제공함. (ACG는 서버 단계의 접근을 제어하고 Network ACL은 서브넷 단계의 접근을 제어함) Cloud Connect와 Managed IPsec VPN을 통해 외부 네트워크와 안전하게 통신 가능 VPC내부에서 통신이 가능함. VPC Peering을 ..

클라우드/NCP 2022.07.21

[Python3] is와 == 의 차이

나는 처음에 이 둘이 완벽하게 동일하다고 생각했다. 사건의 발달은 이러하다. 조건문을 써줄 일이 있었는데 != 을 is not 으로 명시해주었다. 이렇게 하면 읽는 사람이 좀 더 쉽게 읽을 수 있을거라고 나름 생각했다. 그런데 문제가 생겼다. 당연히 될거라고 생각했는데 정상 동작하지 않았다. is 가 무엇일까에 대해서 검색해보면 해답을 찾을 수 있다. is 는 ==와 달리 값을 비교하는게 아니라 레퍼런스 즉 포인터를 비교한다. python3 에서 변수는 내부적으로 데이터를 가리키는게 아니라 인스턴스 포인터를 가리킨다고 한다. 그러니 쉽게 말하면 is 연산자는 포인터(레퍼런스)를 비교하는 연산자이지 데이터를 비교하는 연산자가 아니라는 것이다. 그러니 주로 None 과 False, True 를 비교할때 사용..

[Docker] Docker 기초 공부자료

주말에 읽어보자구요 ~ https://tech.ktcloud.com/84?category=465864 도커를 공부하는 초보자를 위한 안내서 5편 - 도커 설치 및 명령어 실습 도커(Docker) 기초 다지기 - 도커 명령어 및 실습 앞선 포스트를 통해 도커가 무엇인지 공부했으니, 이제 실전에 돌입할 차례입니다. 도커 설치부터 핵심적인 명령어까지 실습을 통해 차근차근 알 tech.ktcloud.com

[Django] 10분이면 읽는 Django 기초 개념 정리 (입문자용)

7월 1주차에 급하게 Django 를 써야할 상황이 생겨서 이틀간 Django를 압축적으로 학습할 일이 생겼다. 그간 학습한 내용들을 간단하게 정리하도록 하겠다. 개인적으로 빠르게 학습하면서 (빠르게라기 보다는 급하게가 맞겠다.) 적은 내용들이라 다소 형식이 올바르지 못하더라도 필요한 내용들만 압축해서 정리해놓았다. 목차: 서버 구동 및 초기 설정 MTV 패턴 view (HTTP request, HTTP resposne) model (클래스 필드에 대하여, CharField, IntegerField, EmailField) DB migration, migrate DB 엔진 설정 (Mysql 연동 방법) Model api 사용법 (장고 기본 지원 ORM 사용법 - insert, select, update, ..

Python3/Django 2022.07.17

HTTP에서 PUT과 PATCH의 차이

HTTP요청에서 PUT과 PATCH라는게 존재하는 것을 알고 있었는데 여태 둘이 같은 기능을 한다고 오해하고 있었다. 그러다가 Django를 학습하던 중 이 두가지를 구분해서 사용하는 예제를 보았고 분명 차이가 있다고 생각해서 오늘 찾아보았다. (생각보다 중요한 차이였다. 계속 모르고 있었다면 위험했다.) 우선 둘다 update를 한다는 점에서는 같다. 특정 객체를 디비에 밀어넣을때 내가 전달한 값으로 업데이트를 해서 넣는다는 점에서는 같다. 하지만 이 동작에서의 미묘한 차이가 있다. PUT의 경우에는 업데이트를 할때 모든 값을 업데이트한다. 즉 모든 필드에 대해서 업데이트를 진행한다는 얘기다. PATCH는 내가 전달한 값에 대해서만 업데이트한다. 전달한 필드에 대해서만 업데이트를 진행한다. 즉 만약 P..

개발 팁 2022.07.15

[Django] Django에서 AbstractUser의 password 암호화, User모델 확장

Django를 사용해서 서비스를 개발 중이라고 가정하자. 우리는 보통 서비스를 만들때 User 모델을 정의하게 된다. 사용자 비밀번호, 아이디, 이름, 이메일, 가입날짜 등등을 이 모델안에 정의하게 된다. 그런데 이것만 가지고는 Django의 장점을 활용하기엔 부족하다. 그래서 Django에서는 User모델을 확장할 수 있게 도와준다. 확장을 해야 진짜 Django의 간편함을 누릴 수 있다. 어떻게 확장할까? 바로 상속을 통해서 가능하게 해준다. User모델을 정의하고 나면 우리는 AbstractUser를 상속받게 할 수 있다. 그리고 AbstractUser 안에는 username, password, email 등등의 기본적인 필드들이 존재한다. 미리 정의되어 있다. 그리고 우리는 상속을 통해 그 필드들..

Python3/Django 2022.07.15

[Django] Fatal error in launcher: Unable to create process using 에러 발생

djangorestframework-simplejwt를 install 하려는 와중에 pip에서 계속 문제가 발생했다. Fatal error in launcher: Unable to create process using 한참을 찾아보고 PATH값도 다시 수정해주는 작업을 했지만 소용이 없었다. 그리고 정말 간단한 해답을 찾았다. 내가 하려던건 pip install djangorestframework-simplejwt 였는데 이걸 아래처럼 입력해주면 해결된다. python -m pip install djangorestframework-simplejwt 명령어 앞에 python -m 을 붙여주면 된다. 아마 vscode 혹은 python 설치경로 지정에서 문제가 있엇던듯한데 굳이 그걸 설정을 바꿔가면서 하기보..

Python3/Django 2022.07.14

[인턴] 첫 인턴을 시작하기까지의 과정과 고민들

대학생으로 있으면서 주변 사람들이 하나둘 취업하는 것을 보면서 많이 불안했던 것 같다. 나보다 일찍 취업에 성공한 친구들이 있었고 이미 취업에 성공해서 1년차 개발자라는 타이틀을 붙이고 있는 친구들도 있었다. 따라잡기 위해서 많이 노력한것 같다. 코딩테스트라는 것도 처음으로 공부해봤고 풀리지 않는 문제를 붙잡고 끙끙거리는 모습이 마치 수능 준비와 흡사하다는 생각도 들었다. 리트코드에서만 수백문제를 풀다보니 완전 초보적인 수준은 벗어나게 된것 같다. 처음엔 한 문제를 푸는데 한 시간은 붙잡고 있었던 것 같다. 그러면서도 이걸 꼭 해야할까에 대한 고민도 많았다. 그렇게 울며겨자먹기로 코딩테스트를 공부했지만 신기한건 문제풀이라는게 하면 할수록 재밌어졌다. 어째 게임도 잘하면 더 재밌는것처럼 문제도 점점 잘 풀..

개발 활동 2022.07.10
반응형