일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Thread
- pip
- python3.9
- golang
- Python
- 자식프로세스
- 가상화 중첩화
- FastAPI
- 영상스트리밍
- 레파지토리
- Replication
- repo
- docker
- go.mod
- 자원측정
- Hyper-V
- asyncio
- BATCH
- Windows
- 주식
- dockercontainer
- QT_QPA_PLATFORM_PLUGIN_PATH
- mariadb
- apt-get
- go
- APT
- Finance
- 스트리밍
- psutil
- 파이썬
- Today
- Total
검색하기귀찮아서만든블로그

지난 포스팅에서 golang 을 사용하여 mariadb에 접속, 질의하는 패키지 (sqlconnect)를 만들어 보았다. 이번 포스팅에서는 golang을 사용한 백엔드 서버를 구성하기 위해 프로토타입을 만들어볼 생각이다. 기존에 작성된 sqlconnect 패키지와 HTTP 서버를 접목시켜서 RESTFul API를 만들고, API를 호출해서 DB 데이터를 조회할 수 있는 백엔드 서버를 만들어 본다. API는 사설 인증서를 사용해서 TLS 통신을 지원한다. REST API 는 기존에 만들었던 TLS1.3 통신 포스팅을 참조하여 사설 인증서를 생성해서 HTTPS 통신을 사용하도록 작성되었다. 핸들러는 root 핸들러와 show_table 핸들러를 등록했고, show_table API를 호출하면 sql 에 질의..

golang 을 사용해서 REST API를 개발하기 전에 DB에서 데이터를 질의할 수 있는 기능에 대해서 공부하고자 한다. 데이터 베이스는 mariadb를 사용할 예정이고 docker container를 사용해서 구성하였다.(maridb 컨테이너 구축 포스팅을 참고) 먼저 sql에 접속 기능을 개발하기 전에 기능 자체를 별도의 패키지로 구성해서 작성해 보았다. sql 커넥터는 github.com/go-sql-driver/mysql 패키지를 임포트 하여 작성한다. root - sqlconnect 폴더를 생성하고 하위에 sqlconnect.go 소스파일을 생성한다. SQL 커넥터 패키지는 Connect, Close, ExecuteQuery 함수로 구성되어 있다. 외부에서 참조해야 하는 함수기 때문에 함수명은..

지난 포스팅에서 golang을 사용하여 RDP 프록시 프로그램을 만들어 보았다. golang은 프로젝트에 main.go 파일의 main 함수가 실행 진입점(entry point) 으로 동작한다. 외부 라이브러리나 프레임워크를 사용하기 위해서 패키지 개념을 사용하는데 golang 도 타 언어와 동일하게 패키지 개념을 사용한다. 코드 상단에 import 가 패키지를 포함시키는 구문이다. 본 포스팅에서는 기존에 작성했던 RDP 프록시 코드를 기준으로 간단하게 기능을 패키지로 만들고 main에서 패키지를 호출하는 방법으로 코드를 수정해 볼 생각이다. 코드는 main 함수에서 TCP 23389 포트를 리스닝하고 클라이언트가 접속하면 go routine (비동기)으로 핸들러를 호출하여 양방향 TX/RX 를 프록시하..

지난 포스팅 (https://access-violation.tistory.com/38) 에서 go 언어를 사용해서 간단한 proxy 서버를 구성해 보았다. 이 번에는 go 언어가 암/복호화에 개발에 용이하다고 하니 TLS1.3 TCP 통신을 구현해 보고자 한다. TLS 통신을 위해서 LS 서버에서 인증서와 개인키 파일을 사용해야 하기 때문에 인증서 생성기가 필요한 것 같고, TLS 통신하는 서버와 클라이언트가 필요할 것으로 생각된다. 사설 인증서를 임의로 생성하기 위해 다음과 같은 코드를 작성하였다. TLS 및 인증서에 대해서 몇 번 다뤄본 경험이 있어서 다소 쉽게 작성할 수 있었다. // 인증서 생성 소스 package main import ( "crypto/rand" // 암호화에 안전한 난수 생성기..

지난번 포스팅 (https://access-violation.tistory.com/37)에서 GO 언어의 IDE를 구성했으니 이제 간단한 코딩을 통해서 go 언어에 대한 간략한 문법을 익히고자 한다. 프로젝트는 프록시 서버를 만들어 보려고 한다. 기능 자체는 간단하다. VM A, VM B를 준비하고, 사용자가 A로 접속하면 B로 패킷을 포워딩해서 사용자가 B로 접속하게 만들어주는 기능이다. 사용자는 A로 접속을 시도하지만 실제로는 B로 접속하는 것이다. 서비스는 RDP 서비스를 사용해서 테스트할 생각이고, VM 구성은 Hyper-V를 사용하여 구성한다. (Hyepr-V VM 구성은 다음 포스팅을 참고하세요. https://access-violation.tistory.com/31, https://acces..

golang (이하 go) 은 2007년 구글에서 개발이 시작되었는데 대규모 네트워크 서비스와 같은 분산 시스템 설계에 용이하게 설계되었다고 한다. go 언어는 C++과 같이 정적 타입을 가지고 있으면서도 비동기를 지원하는 기능과 가비지 컬렉터와 같은 기능을 포함하고 있어 개발에 용이하다. go는 간결성을 중심 철학으로 코드는 단순하고 읽기 쉬우며 유지 보수가 용이하게 만들 수 있다. 그래서 복잡한 상속 구조 대신에 인터페이스를 사용해서 코드 재사용성을 높였다. 비동기 처리를 위해서 'Goroutine' 이라는 경량 스레드와 'Channel'이라는 통신 매커니즘을 제공한다. 파이썬과는 다르게 인터프리터 언어가 아니기 때문에 컴파일을 해야 한다. 그래서 비교적 런타임에서 좋은 성능을 제공하며 가비지 컬렉터..

이번 포스팅에서는 mariadb 양방향 replication에 대해 내용을 정리하고 테스트까지 수행해 보고자 한다. 우선 지난 포스팅([mariadb] replication)에서 단방향 replication을 구성해 보았는데, 통상 서비스를 운용하다 보면 failover 가 연속적으로 발생하는 경우가 많고 그로 인해서 로그가 유실되는 경우들이 발생할 수 있다. 이런 케이스에서 db 동기화가 단방향으로만 구성되어 있을 경우 일회성 failover는 동기화가 유지되겠지만 연속적으로 발생했을 때는 문제가 발생한다. 양방향 replication은 db가 상호 동기화 처리가 되기 때문에 연속적 failover에 비교적 안정성이 높다고 볼 수 있다. 다만 slave 서버가 오랫동안 down 된 상태에서 master..

지난 포스팅에서 docker를 사용하여 mariadb container 두 개를 구성해 보았다. 양방향으로 접속이 되는 것을 확인했기 때문에 오늘은 예정대로 리플리케이션에 대해서 구성해 볼 생각이다. 우선 리플리케이션은 두 디비를 동기화하기 위한 목적으로 제공되는 기능이고 보통 master/slave 구성의 환경에서 active 된 서버의 db를 slave 측으로 동기화하기 위해 사용한다. 이 경우 단방향 replication 을 사용하여 구성하면 되는데 시스템 장애로 인하여 failover 가 발생하면 master/slave가 스왑 되는데 이때 active 되는 db에 기존 데이터를 동기화하여 서비스 연속성을 보장하는데 그 목적이 있다. replication 구성 전에 docker를 사용하여 maria..