안드로이드의 blank Activity로 프로젝트를 실행 시키면 activity_main.xml 만 생성되기 때문에 모르는 부분이겠지만 그 외의 Activity 디자인 패턴을 선택하시면 나타나는 content_main.xml도 같이 추가되어지는 모습을 볼 수 있습니다. 이는 안드로이드 스튜디오의 새로운 디자인 패턴이 적용된 결과라고 볼 수 있는데요. 앞으로는 Layout, TextView, Button 과 같은 디자인 모두는 "content_main.xml" 에서 적용하면 됩니다. 그럼 activity_main.xml은 무엇을 하느냐라고 말씀하신다면 Title Bar에 Tool Bar를 넣거나 Floating Action Button을 넣습니다. 그리고 소스를 자세히 보시면 으로 content_main...
안녕하세요. 서버 개발자 JAKE AN입니다. Proxy Server란 무엇인가에 대해서 설명하고 나서 실제 서버에 간단하게 적용하는 코드를 설명하겠습니다. 1. Proxy 서버를 사용하는 이유?Proxy는 Proxy 서버를 통해서 다른 네트워크에 직접적이지 않고 간접적으로 접속할 수 있도록 해주는 컴퓨터 프로그램입니다. 서버로 들어오는 request를 중계하는 역할을 합니다. 일반적으로 proxy는 프로그램으로써 서버를 기반으로 작동하기 때문에 Proxy 서버라고 불립니다. Proxy 서버는 중계하는 1) 목적 2) 위치 3) 방법 에 따라서 다양한 종류로 나뉘게 됩니다. 주로 Proxy 서버를 구축하는 이유는 다음과 같습니다. 1) 보안 : 익명의 사용자가 직접적인 Web Server로의 접근을 한다..
서비스의 고유아이디를 만들기 위한 참고용 인스타그램 샤드키 만들기. http://interconnection.tistory.com/25 를 통해서 샤드키와 같은 사용자를 구분하는 고유형식의 아이디를 만드는 것을 보았습니다. 이 부분을 적용해서 우리가 만들고자하는 모바일을 활용한 서비스의 사용자를 구분하는 유일한 ID 키로 사용해보고자 합니다. 사용자를 구분하는 유일한 ID 키를 만드는 방법을 세웠습니다. 단계별로 진행을 하려고 합니다. 1) 현재 사용자를 구분하기 위해 필요한 것이 무엇인가? 와 같은 목적을 정리해야합니다. 2) 1) 과정에서 나온 사용자를 구분하기 위해 필요한 것들을 하나하나씩 분석합니다. 3) 부분부분을 구분하여서 bit를 할당합니다. 일단 단계라고 쓰긴 썼는데 너무 모호한 것 같아서..
인스타그램도 기존의 DB를 사용하는 데에 있어서 용량을 늘리고 샤딩하는 문제에 대해서 전체적인 구조적 고민을 하는 경우가 있었다고 합니다. 심지어 DB종류를 Postgresql에서 다른 종류로 바꿔야 하는 가에 대해서 고민도 했다고 합니다. 하지만 결국 정해진 결론은 데이터를 샤딩하자는 결론이 나왔습니다. 보통 DB에서는 Data가 들어가면 그 Data에 따른 incremental number로 숫자를 생성하여 다루기 때문에 만약 정수형이 이 수를 이용해서 샤딩을 하는 경우에는 중복문제가 발생할 수 있습니다. 그래서 나온 논의가 고유 ID를 만들어서 샤드키로 활용하자는 것이었습니다. 여기서부터 샤드키를 만드는 방법이라고 생각하실 수 있는데, 그렇게 생각하는 것보다 고유한 아이디(UID)를 만드는 과정을 ..
샤딩이라는 것은 데이터를 파티셔닝하는 방법이다. 파티셔닝을 하는 방식에는 1) 수직적 파티셔닝 2) 수평적 파티셔닝 으로 나뉩니다. 사진 data, 동영상 data 로 두가지 종류의 data가 있고, 저장할 DB가 1번, 2번이 있다고 하면, 수직적인 방식으로는 1번 DB에 사진 data를 저장하고, 2번 DB에 동영상 data를 저장하는 방식. 수평적인 방식으로는 1번과 2번 DB에 사진 data의 일부분을 분할 저장, 마찬가지로 동영상 data도 1,2번 DB에 분할 저장하는 방식이다. 본격적으로 샤딩의 방법에 대해서 이야기 합니다. 데이터 베이스에 관해서 샤딩을 고려할 때 먼저 고려되어야 하는 부분은 데이터 베이스의 퍼포먼스를 Scale-Up 하는 것이다. 샤딩은 데이터를 다른 공간에 나누는 작업이..
현재 개발하고 있는 어플리케이션에 SSL 적용을 검토하는 중이었습니다. 그래서 현재의 http 방식의 프로토콜이 아니고 보안을 알고리즘으로 더 강화한 https 방식의 프로토콜로 바꾸는 작업을 진행하기로 정했습니다. 그렇게 현재 http://interconnection.tistory.com/21 글에 적용한 대로 SSL적용을 마무리한 상태 입니다. 사용하는 부분은 일일히 EC2 instance에 개별 적용할 수도 있지만 나중에 생각했을때, Server의 규모를 Scale Up-Down, Scale In-Out의 할 경우가 있다고 생각이 되어 개별 instance에 적용하는 것이 아니고, 한번 적용으로 모든 범위에 적용할 수있도록 ELB에 SSL을 적용해서 앞으로 연결될 instance의 모든 서버에 적용..
안드로이드 모바일에서 PUSH를 3rd-party server로 던지는 작업을 했다. 다음과 같이 한가지의 push 객체로 두가지의 method를 처리하는 것을 했다. 그런데 서버에서는 두번째 메소드에서 사용하는 전달 파라미터를 가지고 두번 동시에 호출하는 경우가 발생했다. 즉, 두번째 호출한 sendPostWithBlock()만 출력된 모습만 보면 두 번 호출이 되는 것이다. 이것은 심각한 오류였다. 동시적으로 메서드를 호출하는 경우가 많은데 다음에 호출한 메서드가 먼저호출된 메서드를 먹어버리는 경우가 생긴다. 그래서 사태파악에 들어갔다. 사태는 push 객체의 Class인 PostToServer 안에 메서드를 선언할때, private의 전역변수로 공유하고 있었다. 이것이 문제인 이유는 두가지 메서드가..
안녕하세요. AWS를 최근 만지고 있는 서버 개발자 JAKE AN 입니다. AWS에는 그동안 서버 개발자들이 SSL certificate를 일일히 받아다가 보고 키를 하나하나 등록하는 과정으로 AWS에 등록을 해왔습니다. 그런데 이제는 AWS에서 ACM(Amazon Certificate Manager)를 통해서 AWS 내부에서 통합 관리 할 수 있게 되었습니다. 통합관리라는 뜻은 그동안 instance안에 인증서를 받아서 등록하시기도 하고 instance마다 등록을 해서 사용하시기도 했습니다. 또는 갱신 문제로 매번 갱신에 대한 관리 문제로 그 기일을 생각하고 있어야 하는 문제가 있었습니다. 한 예로, 인스타그램이 예전에 SSL이 기간이 만료되어서 접속이 안되었던 경험을 가지고 있는 걸로 알고 있습니다...