Server(7)
-
Github Action과 배포 자동화
이때 동안 AWS EC2에 배포를 진행 할때 Gradle로 빌드를 진행 한 뒤Docker Image로 만들고그걸 Dokcer Hub에 올린 뒤AWS EC2 인스턴스에서 Docker Hub에서 Image Pull 받은 뒤 배포하는 방식으로수작업을 통해서 배포를 진행했다. 그런데 이렇게 수작업으로 진행하니 귀찮아서 점점 주기가 늘어나 이제는 자동화를 할 때라고 생각하게 되었다. 그래서 어떻게 자동화를 하나 알아보니무료 툴은 Github Action과 Jenkins이 많이 보였고 그 중 클라우드에서 동작해서 호스팅을 따로 해줄 필요가 없는 Github Action을 선택하게 되었다. # This workflow uses actions that are not certified by GitHub.# They ar..
2024.11.29 -
Nginx Load Balancing
서버가 처리량 많아 문제가 생겨 서버를 확장 할 경우에 대표적으로 2가지 방법이 있다 바로 Scale Up과 Scale Out이다 먼저 Scale Up은 더 좋은 서버로 갈아주는 것이다 대표적으로 더 코어와 쓰레드가 많고 클럭이 높은 CPU나 더 많은 RAM용량 더 좋은 인터넷 회선으로 변경등이 있다. 이 방법은 간단하고 확실하게 서버의 처리량을 늘릴 수 있지만 돈이 많이 들고 서버가 한 대이기 때문에 그 서버가 터지면 서비스도 다운 된다. Scale Out은 서버를 여러대로 늘리는 것이다. Scalue Up보다는 고려할 점이 많고 새로운 기술및 관리가 필요하지만 추가적인 확장이 유연하게 가능하고 한 대의 서버가 다운 되더라도 서비스 전체가 다운 되지는 않는다. 이번 포스트에서는 서버를 여러대로 늘렸을 ..
2024.03.12 -
JWT
Json Web Token 데이터 자체의 Veirfy Signature를 이용하여 특정 누군가가 발급한 데이터라고 인증 할 수 있는 Token이다 JWT는 3부분으로 구성되어 있는데 Header Payload Veirfy Signature 이다 이중 Payload에 전하고자 하는 데이터가 담기고 로그인 할 때는 주로 권한과 아이디가 담긴다 Session 방식의 Login은 Session Id를 Session에서 찾아서 사용자를 Authorization하므로 사용자가 많으면 많을 수록 그 과정이 오래걸리고 또한 여러 서버를 구축한 경우 Session 영역을 통일하는 작업이 필요하다 하지만 JWT는 Veirfy Signature 부분을 검증하여 올바른 Token인지만 확인하면 되기 때문에 Session방식에..
2024.01.13 -
Http의 한계와 WebSocket
Web Browser에서 주로 쓰이는 http는 기본적으로 Client가 request를 보내면 server가 이에 대해 respone을 하며 이는 기본적으로 실시간성이 존재하지 않는 반이중통신이다 이를 보완하기 Polling long-Polling Streaming등의 여러 방법을 썼지만 기본적으로 http 프로토콜은 전이중통식에 적합하지 않으므로 전이중통신이 필요할 때는 WebSocket을 사용한다
2023.08.16 -
Session, Cookie, Token
https://www.youtube.com/watch?v=tosLBcAX1vk&list=PLxs6G3E6qDJgxsJIr5g3lHO-VwJ2veF0h&index=3&t=7s Server와 Client가 통신 할 때 여러 데이터를 저장할 필요가 생기는데 이때 Cookie, Session, Token등의 여러 방법이 사용된다 Cookie는 Http을 이용한 웹 통신시 필요시 Server가 Client에 보내는 데이터이며 이는 Client에 저장된다 또한 Server와 통신 할 때 Client는 Server의 도메인이 가지고 있는 Cookie의 도메인과 같으면 이를 Server로 전송한다 Session은 Server에 저장된 Client의 데이터이다 간단한 Cookie와 Session의 예제를 들면 Clien..
2023.08.16 -
Winsock2.h를 이용한 TCP 통신
Winsock2.h는 C++에서 소켓 통신을 위해 사용한다 이를 이용한 TCP 통신은 기본적으로 각각 socket을 만든 뒤 server측은 socket을 bind -> listen후 client에서 connect를 신청하기를 accept에서 기다리다 요청이 오면 연결 후 서로 send()로 데이터를 보내고 recv()로 받는다 server #include #include #pragma comment(lib, "ws2_32") #define PORT 1234 #define PACKET_SIZE 1024 #define SERVER_IP "127.0.0.1" int main() { WSADATA wsaDATA; WSAStartup(MAKEWORD(2, 2), &wsaDATA); SOCKET hListen; ..
2023.08.11