CS
[Agile] - 2. 칸반(Kanban)
사이드 프로젝트를 시작하며 Jira를 사용하게 되어 칸반에 대해 공부해봅니다. 애자일을 먼저 학습하면 도움이 됩니다. 칸반(Kanban) 칸반의 가장 큰 특징은 다음과 같다고 생각합니다. 칸반은 연속적인 흐름 방식이다. - 회고를 통해서.. 칸반은 팀이 수행해야하는 업무와 팀원이 맡을 수 있는 작업량 간의 균형을 맞추는 수단입니다. - WIP를 통해서.. 모든 칸반팀의 업무는 업무를 시각화하고 팀 간 워크플로우를 최적화 하는데 사용되는 도구인 칸반보드를 중심으로 이루어집니다. 칸반보드를 이해하면 칸반을 이해할 수 있습니다. 우선 칸반이 필요한 이유를 알아봅시다. 칸반이 왜 필요한가? 팀이 새로운 프로젝트를 시작한다면 누가 어떤 업무를 수행하고 있는지, 업무가 어떤 단계에 있는지와 같은 스케쥴을 쉽게 파악..
[Agile] - 1. 애자일(agile)이란 무엇인가.
Agile agile = 기민한, 날렵함 애자일이란 소프트웨어 개발 방식의 하나로, 작업 계획을 짧은 단위로 세우고 제품을 만들고 고쳐나가는 사이클을 반복함으로써 고객의 요구 변화에 유연하고도 신속하게 대응하는 개발 방법론입니다. 애자일은 기민하다라는 뜻으로 , 둘 사이의 균형을 잡자는 의도로 나온 개발방법론입니다. 폭포수모델 전통적인 개발방법론중 에는 이 있습니다. 이런 전통적인 개발방법론들은 대략 다음과 같은 틀을 가집니다. 기획 > 디자인 > 개발 > 테스트 > 배포 > 유지보수 많이 겪어봤던 프로세스입니다..! 이 프로세스는 마감기한을 딱. 정해놓고 그 마감기한 안에 프로젝트를 끝내기 위해 모든 팀원이 자신이 맡은 일을 끝낸 후 다음차례로 넘깁니다. 아무 문제 없이 끝난다면 좋겠지만 현실은 그렇지..
Framework, Library, API
API(Application Programming Interface) API는 응용프로그램에서 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스입니다. 쉽게 말해 프로그램 사이를 연결해주는 다리역할을 합니다. 예를 들어 위치공유 프로그램을 개발하고싶은데, 직접 지도서비스를 개발하기엔 시간과 비용이 많이들어 타사의 서비스를 사용하겠다. 라고 한 경우 Google의 지도서비스를 생각할 수 있습니다. Google의 지도 서비스를 사용하려면 API를 호출해야합니다. https://map.google.com/37.2318&26.138 이런식으로 호출을 하게되면 Google지도서비스는 내 프로그램에게 지도와 관련된 정보를 전달해주게 될 겁니다. 여기서 https://map.google....
[TLS] 2. TLS의 인증서
TLS의 인증서 TLS(1) 포스팅의 다음 포스팅으로 인증서를 다룹니다. TLS는 3가지 주요 이점 TLS는 다음 이점을 제공합니다. 암호화: TLS(1)에 작성한 암호화 기법들로 서버 사이에 오가는 데이터들을 "스니핑"으로부터 보호합니다. 암호화로 실제 데이터를 숨길 수 있습니다. 무결성: 데이터가 위, 변조 되지 않도록 보호합니다. 대칭키를 RSA방식으로 안전하게 공유 후 암호화된 통신으로 중간에 데이터를 임의로 수정할 수 없도록 합니다. 인증: 데이터를 주고받는 서버가 신뢰할 수 있는 서버인지. 클라이언트가 신뢰할 수 있는 서버와 통신하는 것인지 확인하는 작업이 필요합니다. 이 과정에서 "인증서"가 사용됩니다. 여기서 인증서가 등장합니다. 인증서 인증서는 서버가 신뢰할 수 있는 서버인지 확인할 때 ..
[TLS] 1. TLS의 암호화(대칭키, 비대칭키)
TLS SSL, OpenSSL, HTTPS 모두 "보안"과 관련된 것입니다. TSL가 뭔지 알기위해 배경지식을 하나씩 설명해보겠습니다. 1. SSL(Secure Socket Layer) SSL은 네트워크 통신의 보안을 강화하기 위해 설계된 암호화 프로토콜입니다. 쉽게 말해 웹브라우저와 서버 혹은 두 서버 사이에 전송되는 데이터를 암호화하여 인터넷 통신 보안을 유지하는 표준 기술입니다. 이는 TCP/IP네트워킹에 적용됩니다. SSL은 현재 TLS로 대체되었다고 합니다. 그러므로 무엇인지만 알고 넘어가도 좋을듯 합니다. TLS를 알아야죠. 2. TLS TLS는 SSL의 업데이트버전? 이라고 생각하면 될 것 같습니다. SSL이 표준화되며 바뀐 이름이 TLS입니다. 아직도 TSL라는 이름 대신 SSL라고 불리긴..
[iOS] 소켓통신 (1). Socket과 TCP와 UDP
소켓통신공부 첫 번째 글입니다. 소켓의 본질을 먼저 이해해봅시다. 소켓 소켓은 OS커널 영역에 구현되어있는 프로토콜요소의 추상화된 인터페이스 뭐 이런 저런 어려운 설명이 많은데 "File(파일)" 이라고 생각하면 쉬울 것 같습니다. OS에서 커널 영역은 운영체제가 관리하는 영역입니다. 시스템 관리를 위한 영역(모드) 느낌이랄까요 (내용을 이해하기 위해서 꼭 완벽히 알아야하는 개념은 아닙니다.) 예를 들어, A와 B는 모두 File입니다. 어떤 파일(A)을 따라갔더니 Bluetooth가 나오면 Bluetooth소켓, 어떤 파일(B)을 따라갔더니 IRDA가 나오면 IRDA소켓이 됩니다. 아무튼 소켓이라는 단어는 여러곳에 사용합니다. 여기서 우리가 알아볼건 TCP/UDP 소켓입니다. TCP로 설명을 해보겠습니..
OAuth 2.0의 개념과 동작원
웹 서핑, 앱을 사용하다 보면 Google과 Facebook, Twitter, github등 외부 소셜 계정을 기반으로 회원가입 및 로그인할 수 있는 어플리케이션을 쉽게 찾아볼 수 있다. 편리하게 회원가입, 로그인을 할 수 있을 뿐 아니라 연동되는 외부 어플리케이션에서 Facebook, Twitter등이 제공하는 기능을 간편하게 사용할 수 있다는 장점이 있다. 예를 들어 외부 어플리케이션에 Google로 로그인하면 API를 통해 연동된 계정의 Google Calendar 정보를 가져와 사용자에게 보여줄 수 있다. 이 때 사용되는 프로토콜이 OAuth이다. OAuth란? OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트상의 자신들의 정보에 대해 어플리케이션의 접근 권한을 부여할 수 있는..
[네트워크] HTTP protocol - 쿠키와 세션(Cookies and Session)
HTTP의 특징과 쿠키, 세션을 사용하는 이유 서버가 클라이언트와 통신할 때, 서버는 클라이언트가 누구인지 계속 인증해야한다. 왜냐하면 HTTP프로토콜이 Connectionless, Stateless한 특성이 있기 때문이다. Connectionless: 비연결성 - 연결을 유지하지 않는다. Stateless: 무상태성 - 상태를 유지하지 않는다. Stateless란 상태가 없다는 의미이다. HTTP에서 stateless하다는 건 서버 입장에서 클라이언트의 상태가 없다는 의미로 동일한 클라이언트의 요청이라도 매번 각 요청은 독립적이라는 의미이다. 예를들어 놀이공원(서버)에 손님이 입장(요청)했다가, 퇴장(응답)했을 때 손님 한명 한명 다 기억할 수 없다. 그렇기 때문에 놀이공원에서는 재입장하는 손님을 구분..
동기(Sync), 비동기(Async), 직렬(Serial)동시(Concurrent)에 대한 정리
비동기(Async) vs 동기(Sync) 비동기(Async) 다른 쓰레드에서 작업하도록 넘긴 후 그 작업이 끝나길 "안기다리고" 다음일을 진행한다. 보낸 작업이 언제끝나는지 관심없고, 다음일을 처리한다. 동기(Sync) 작업을 다른 쓰레드에서 하도록 시킨 후, 그 작업이 끝나길 "기다렸다가" 다음일을 진행한다. 비동기라는 개념이 일반적으로 필요한 이유는 대부분 서버와 통신(네트워크 작업) 때문 이다. 직렬처리(Serial) vs 동시처리(Concurrncy) 직렬처리(Serial) 쓰레드에서 하던 작업을 다른 쓰레드로 보내는데, 다른 하나의 쓰레드로 원래의 순서를 유지해서 보낸다. (보통 메인쓰레드에서) 분산처리 시킨 작업을 "다른 한개의 쓰레드"에서 처리 순서가 중요한 작업을 처리할 때 사용 동시처리(..
REST API 정리
REST한 형식의 API 요청방식에 대한 약속 REST하지 않은 형식 https://(사이트주소)/1 --> 상영중 영화목록 요청 GET https://(사이트주소)/2 --> 내일 오픈예정 영화 목록 GET https://(사이트주소)/3 --> 실시간 영화 관객 순위 GET https://(사이트주소)/4 --> 영화 예약 POST 1, 2, 3, 4...이렇게 하면 헷갈린다. 만약 서버 담당자가 퇴사를 하거나, 정보가 누락될 시 어떤게 각 주소가 어떤 API이지 알기 힘들고 실수할 가능성이 높다. 그래서 명사형으로 작성을 하자! REST한 형식 https://(사이트주소)/moviewlists --> 상영중 영화목록 요청 GET https://(사이트주소)/moviewlists?open=tomorr..