전체 글

흔한 컴공 출신 개발자입니다. 제가 경험하고 공부하고 아는 것을 적어둡니다.
카카오 메시지는 일 평균 500k /tps 트래픽, 40M 의 평균 연결 세션 수, 6.5M /tps 의 최고 트래픽을 가지고 있다. 2011년 겁나 빠른 황소 프로젝트를 통해 패킷 경량화 및 통신 최적화, 푸시 시스템 구조 최적화, 백엔드 시스템 성능 개선을 함 11년 동안 잘 사용했음 client와 연결되는 곳은 c++로 하고 비즈니스 로직은 java로 했음 c++ 백엔드는 epoll기반 비동기 입출력, 쓰레드 별로 미리 할당한 메모리 버퍼 사용, 대당 500K이상 세션 관리 과연 이게 앞으로도 잘 돌아갈까? 커스텀은 진짜 하나 하나 다 성능을 끄집어냈지만 시간이 지날수록 유지보수가 힘들어진다. 양산은 어느정도 성능 저하는 있겠지만 유지보수가 짱좋음 현재 앞단에 있는 서버는 직접 개발한 코드로 인해 ..
https://if.kakao.com/2022/session/104 정리하고 보니 슬라이드랑 똑같네요. 그냥 슬라이드 보세요.. 1. 컨테이너 왜씀 서버 환경(OS독립)에 구애 받지 않고 여기에 애플리케이션이 구동에 필요한 모든걸 다 때려박고(올인원 패키지) 프로세스 주변 영향을 받지 않고 격리된 상태로 실행 가능. 그리고 해당 컨테이너가 구동하기 위한 자원을 할당하고 사용할 수 있도록 보장을 할 수 있다. 2. 컨테이너 사용 요건 리눅스 컨테이너는 리눅스 기술임. 근데 윈도우에서도 도커 쓰잖음? 그거는 도커가 백그라운드 프로세스로 리눅스 버츄얼 머신 돌려서 그럼. 런타임 컨테이너 관리 도구(도커 같은) 리눅스, 런타임은 필수이고 이 컨테이너들을 여러 개를 관리하기 위해 쿠버네티스 같은 자동화 도구를 사..
· JAVA
https://board.f-lab.kr/articles/1 🧑‍💻 자바 백엔드 기술 면접 대비하기 - 1편 🧑‍💻 자바 백엔드 기술 면접 대비하기 - 1편 board.f-lab.kr 자바의 모든 클래스는 Object 클래스를 상속받습니다. 그리고 Object클래스에는 equals() 와 hashCode() 라는 메소드가 선언되어 있습니다. 이 메소드들은 각각 어떤 역할일까요? 이 둘의 차이점은 무엇일까요? 답 : equals는 두 객체가 정말 동일한지를 확인합니다. 내부 값이 아닌 정말 참조하는 메모리가 같은지 확인합니다. hashCode는 참조하고 있는 메모리의 주소를 반환합니다. 즉 equals는 hashCode끼리 비교하는 것과 동일합니다. hashCode는 객체의 메모리 주소를 리턴합니다. 반론..
· JAVA/Kotlin
코틀린하다가 데이터 타입에 Number도 있고 Int도 있길래 3분정도 혼란이 왔다가 코드로 확인하니 바로 이해가 되더라. 코틀린에서 숫자 관련된 모든 데이터 타입들은 Number클래스를 상속받은 클래스들이였다. Int 타입을 확인하면 아래와 같이 Primitive.kt 파일에 정의가 되어있다. Number클래스를 상속받고 있는데 Number는 아래와 같이 구현되어있다.
이제 부업으로 코딩 과외도 해보려고 자바/코틀린에 대해 자료를 준비하고 있다. 어떻게 해야 지치지 않고 흥미를 유지할 수 있을까 고민하던 중 역시 공감대가 있어야 괜찮을 것 같다는 생각에 클래스에 대한 개념까지는 롤을 가지고 해보기로 결심했다.
0. 이 글을 왜 작성하는가 한국에 있는 아티클 중 이 주제에 대해서는 사용하지 말아야 한다는 사람들이 없었다. 나는 그 주제들에 대해 크게 공감할 수가 없어 해외 아티클을 찾아보기 시작하였고 심심찮게 getter/setter를 피하라는 글을 볼 수 있었다. https://www.infoworld.com/article/2073723/why-getter-and-setter-methods-are-evil.html https://dev.to/scottshipp/avoid-getters-and-setters-whenever-possible-c8m https://ericnormand.me/podcast/why-getters-and-setters-are-terrible 1. 본문 우선 getter/setter는 객..
· JAVA/android
뷰 바인딩 공식 도큐먼트 : https://developer.android.com/topic/libraries/view-binding?hl=ko 뷰 결합 | Android 개발자 | Android Developers 뷰 결합 뷰 결합 기능을 사용하면 뷰와 상호작용하는 코드를 쉽게 작성할 수 있습니다. 모듈에서 사용 설정된 뷰 결합은 모듈에 있는 각 XML 레이아웃 파일의 결합 클래스를 생성합니다. 바인딩 developer.android.com 뷰 바인딩이란? 쉽게 생각하면 View를 Object화 시켜서 바인딩한다고 생각하면 된다. 이렇게 바인딩한 Object는 코드 내에서 쉽게 접근할 수 있다. findviewbyid와의 차이는? 뷰 바인딩으로 findviewbyid를 대체할 수 있고 findviewb..
· JAVA/android
구버전 안드로이드OS(4.4 Kitkat)에서 TLS쪽 문제가 발생했다. 4.4 버전에서는 TLS 1.1까지를 지원한다고 되어있었다. 문제는 나는 TLS 1.2와 통신을 해야한다. TLS(Transport Layer Security)란? SSL(Secure Socket Layer)의 표준화된 단어 라고 생각하면 된다. SSL 3.0부터 표준화가 되어 SSL3.0 = TLS1.0 이라고 생각하면 편하다. HTTP통신은 별도의 인증없이 서로간 프로토콜만 맞으면 통신이 가능하지만 HTTPS부터는 서로간의 인증서가 맞아야 통신이 가능하다. 통신을 하며 메시지를 주고 받는 과정을 Handshake라고 하는데 인증서가 맞지 않는 경우 SSL Handshake 에러가 발생한다. 요즘 나오는 대부분의 서버는 기본값이 ..
CORS(Cross Origin Resource Sharing) 백엔드와 프론트엔드의 Origin이 다를때 나타나는 상황 FastAPI에서 CORS를 허용하는 방법 CORSMiddleware를 사용한다. from fastapi.middleware.cors import CORSMiddleware . . . . origins = [ "http://localhost.tiangolo.com", "https://localhost.tiangolo.com", "http://localhost", "http://localhost:8080", ] app.add_middleware( CORSMiddleware, allow_origins=["*"], #allow_credentials=True, allow_methods=["*..
· FastAPI
https://developer-youn.tistory.com/98?category=989068 Kotlin으로 서버에서 json데이터 가져오기(FastAPI를 곁들인) 회사에서 하던 업무를 다시 복기해볼 겸 간단한 예제를 만들어 정리해본다. 0. 목적 아무튼 서버에 있는 JsonData를 읽어오기 1. 서버 FastAPI에서 요청이 들어왔을때 Json을 반환하게 해 주었다. @app.ge developer-youn.tistory.com 이 글에서 사용한걸 그대로 옮겨왔습니다. 일단 뭐든 해봐야겠죠. 저는 원활한 사용을 위해 아래 코드는 기본적으로 넣어두었습니다. from fastapi import FastAPI, Request, Form, Header from fastapi.responses impor..
Berno
흔한 컴공 출신 개발자