대규모? DB 필드 업데이트

SSH 터널링

<aside> 💡 클라우드 인스턴스의 컴퓨팅 파워가 로컬의 컴퓨터보다 좋지 않은 관계로 위의 전체 프로세스를 처리하는데 시간이 다소 소요 될 것이라 판단하였다. 따라서 SSH 터널링을 이용해서 대부분의 계산은 로컬 컴퓨터에서 실행하여 쿼리 요청을 통해 업데이트를 하는 방법을 사용하였다.

</aside>

SSH 터널링이란?

현재 인스턴스는 private subnet에 숨겨있기 때문에 접속을 위해서는 bastion 서버에 접속하여 bastion 서버의 private ip로 데이터 베이스에 접속할 수 있다.

----------------------------------------------------------------------

                            |
-------------+              |    +----------+               +---------
    LOCAL    |              |    |  REMOTE  |               | PRIVATE
    CLIENT   | <== SSH ========> |  SERVER  | <== local ==> | SERVER
-------------+              |    +----------+               +---------
                            |
                         FIREWALL (only port 22 is open)

----------------------------------------------------------------------

SSH 터널링이란 위와 같은 상황에서 중간단계 리모트 서버를 매개로 로컬의 주소를 통해서 프라이빗 영역에 숨겨져 있는 인스턴스에 접속하는 방법을 말한다.

SSH Tunneling with python

Context manger를 활용한 연결 관리

context manager(with)를 사용하면 보다 편리하게 연결을 관리할 수 있다. 특히 connection에서 cursor를 가져온 경우 transaction을 실행하기 때문에 반드시 close()를 하는 것이 필요하다.

from contextlib import closing

파이썬에서 기본적으로 제공하는 closing 함수를 이용하면 객체 내에 정해진 close() 메서드를 컨텍스트 매니저 블럭이 끈나는 시점에서 호출하기 때문에 안전하게 종료를 할 수 있다.

with closing(conn.cursor()) as cursor:
		...
		# conn.close()