posted by 귀염둥이채원 2018. 4. 3. 01:28

소프트웨어 개발 방법론의 하나로, 개발(development)과 운영(operation)을 결합한 혼성어이다. 개발 담당자와 운영 담당자가 연계하여 협력하는 개발 방법론을 말한다.

시스템 개발자와 운영을 담당하는 정보기술 전문가 사이의 소통, 협업, 통합 및 자동화를 강조하는 소프트웨어 개발 방법론을 말한다. 정확한 정의가 존재하지 않는 추상적 개념에 해당하지만, 소프트웨어 제품이나 서비스를 알맞은 시기에 출시하기 위해서 개발과 운영이 상호의존적으로 대응해야 한다는 의미로 통용된다.


이러한 데브옵스의 개념은 애자일 소프트웨어(agile software) 개발과 지속적 통합(continuous integration) 등의 개념과도 관련이 있다. 애자일 소프트웨어 개발 방법은 계획과 문서를 기반으로 개발 모형이나 모델에 따라 앞을 예측하며 개발하는 것이 아니라, 실질적인 코딩을 기반으로 일정한 주기에 따라 계속적으로 프로토타입을 형성하고 필요한 요구 사항을 파악하며 이에 따라 즉시 수정사항을 적용하여 결과적으로 하나의 큰 소프트웨어를 개발하는 적응형(adaptive style) 개발 방법이다.


지속적 통합이란 개발 당시의 코드(baseline code)와 개발 완료 후의 차이가 극심하여 통합시 다양한 변화와 의존성 문제 해결에 개발 시간보다 더 많은 시간이 소요되는 문제를 해결하기 위해, 통합 작업을 초기부터 계속적으로 자주 수행하여 지속적으로 소프트웨어의 품질 제어를 적용하고자 하는 것이다.


애자일 소프트웨어 개발에서는 작은 변경을 자주 출시하기 때문에 개발 담당자와 운영 담당자의 협업이 긴밀해야 하며, 이러한 개발 방법의 보급과 함께 데브옵스에 대한 개념도 널리 보편화되었다.


데브옵스라는 용어는 2008년 애자일 컨퍼런스에서 앤드루 클레이 쉐이퍼(Andrew Clay Shafer)와 패트릭 드부와(Patrick Debois)가 "애자일 인프라스트럭처"에 대해 논의하며 처음으로 사용되었다. 이 용어는 그 후 2009년 벨기에에서 열리기 시작한 "데브옵스 데이(DevOps Day)"를 통해 대중화되었다.


데브옵스는 개발 프로세스에 대한 철학이자 이러한 방법론을 실현시키는 플랫폼과 툴셋을 모두 포함하는 개념으로, 데브옵스를 더욱 쉽게 실천하기 위해서 셰프(Chef)나 퍼펫(Puppet)과 같은 인프라 구성관리 자동화 툴을 사용할 수 있다. 이러한 데브옵스 툴을 사용하는 경우 자동화된 테스팅 실시가 가능하며 자동화된 구성관리(CM:Configuration Management)를 통해 서버 설정을 자동화할 수 있기 때문에 투입 리소스를 절감할 수 있는 효과를 가져온다.


'Devops' 카테고리의 다른 글

CI/CD란 무엇인가?  (0) 2018.04.03
ansible이란 무엇인가?  (0) 2018.04.03
posted by 귀염둥이채원 2018. 4. 3. 01:26

IT 직무 면접을 보다가 질문이 나왔던 내용을 정리해보았습니다.


* 1분 자기 소개를 해보세요.

* 프로젝트 성공 사례를 설명해보세요.

* 희망 직무에 지원한 이유는 무엇인가요?

* 지원 직무를 위해 어떤 노력을 했나요?

* 자신의 성격에 대한 장단점을 설명해보세요.

* 열정을 발휘한 사례를 설명해보세요.

* 도전정신 사례를 설명해보세요.

* 살아오면서 가장 열정(도전, 창의)적으로 일했던 업무는 무엇이며 그 일을 통해서 배운것은 무엇인가요?

* 자신에게 주어졌던 일 중 가장 어려웠던 경험은 뭔가요?

* 그 일을 어떻게 극복했습니까?

* 가장 열정적으로 몰입했던 단 한가지의 경험을 설명하세요.

* 열정을 쏟아 몰입한 경험은 무엇인가요?

* 지금까지의 업무 성과중 최고로 손꼽는 것은 무엇인가요?

* 업무 수행중 가장 힘들었던 일을 무엇인가? 어떻게 해결했나요?

* 업무수행 중 문제가 생겼을 때 어떻게 대응했는지 사례를 들어 설명해보세요.

* 앞으로 10년 후 목표는 무엇인가요?

* 기존과 다른 방식을 시도하여 이전에 비해 조금이라도 개선했던 경험이 있나요?

* 입사 후에 어떤 업무를 하고 싶나요?

* 기술적인면에서 자신이 가장 자신있는것은 무었인가?

* 자신이 다른 사람과 구별되는 능력이나 기질을 설명하세요.

* 타인이 이야기 하는 귀하의 매력은 무엇인가요?

* 후배에게 추천하고 싶은 책 3권을 중요한 순서대로 적고, 이유는 무엇인가?

* 자신에게 있어서 직장 생활의 의미란 무엇인가요?

* 당사가 추천서를 요구한다면 어떤 분에게 추천을 받을 수 있으며, 그 추천서 내용을 상상해서 설명해보세요.

* 업무/기술적 측면에서 자신을 롤모델과 이유를 설명하시오.

* 귀하의 인생에 가장 영향을 미친 책 한권과 그 이유는 무엇인가요?

* 입사 후 다른 직무로 배치받으면 어떻게 할것인가요?

* 지금까지 지원한 회사들은 어디인가요?

* 지원직무와 상관성이 없는데 왜 지원했나요?

* 입사 후 일이 많아서 계속 야근을 하면 어떻게 할것인가요?

* 입사 후 팀/업무에 잘 적응할수 있겠나요?

* 입사 후 친구랑 비교하니 연봉은 적은데 일이 더 힘들다면 어떤 생각이 들까요?

* 일을 하다가 업무 중 상사와 의견 충돌이 생기면 어떻게 할것인가요?

* 마지막으로 하고 싶은 말은? 질문 사항이 있으면 말해보세요.

* 이직하는 결심하게 된 이유는 무엇인가요?

* 직장 초기 3년과 최근의 3년을 비교할 때 업무 경력이 어떻게 변했나요?

* 직장에서 당신이 가장 싫어하는 사람 유형은 무엇인가요?

* 그런데 그런 유형의 사람이 상사라면 어떻게 할것인가요?

* 심한 반대 속에서도 상사와 동료를 설득하여 높은 업무적 성과를 창출했던 경험은 무엇인가요?

* 좋은 개발자란 무엇이라고 생각하나요?

* 일을 잘하는 사람은 어떤 사람인가요?

* 채용 공고의 업무 포지션과 과거에 대한 했던 프로젝트의 접점은 무엇인가요??

* 최근에 읽은 책은 무엇인가요?

* 기획에서 내려온 내용이 마음에 들지 않는자면 개발자의 입장에서 어떻게 처리할것인가요?

* 우리 회사에 왜 지원했나요?

* 우리 회사에 대해 얼마나 알고 있나요?

* 입사 후 목표는 무엇인가요?

* 단점은 무엇이고, 그 단점을 극복하기 위한 노력과 의지는?

* 자신에게 영향을 준 주변 인물은 누구인가요?

* 존경하는 인물(가족 제외)과 존경 이유에 대해 설명하시오.

* 당신이 이 회사에 꼭 필요한 인재인지 설명하시오.

* 취미는 무엇인가요?

* 특기는 무엇인가요?

* 최근 사회 이슈 중 중요하다고 생각되는 한 가지와 이에 대한 자신의 견해를 말해보세요.

* 생활신조는 무엇인가?

* 조직 생활에서 어려움을 성공적으로 극복한 사례를 설명하세요.

* 조직의 발전을 위해 헌신적으로 노력했던 것 중 가장 기억에 남는 경험은 무엇입니까?

* 본인의 가장 큰 실패 경험은 무엇입니까?

* 리더 경험이 있나요?

* 본인의 별명과 이유는 무엇인가요?

* 자신의 인생에서 가장 큰 변화를 주었던 사건은 무엇인가요?

* 과거 또는 현시대 위인 중에서 귀하가 롤 모델로 삼고 싶은 인물과 그 이유는 무엇인가요?

* 우리 회사에 언제부터 관심을 가졌나요?

* 최근 우리 회사 뉴스 중 가장 기억에 남는게 무엇인가요?

* 입사 후 회사 발전에 어떻게 기여할 것인가요?

* 주량은 얼마인가요?

* 가장 친한 친구는 누구인가요?

* 당신이 추구하는 직장에서의 성공은 무엇인가요?

* 가장 최근에 본 영화는 무엇인가요?

* 다시 대학생이 된다면 무엇을 하고 싶으신가요?

* 이전 직장에서 업무로 어떤 평가를 받았나요?

* 당신이 실패한 사례에 관해 얘기해 주세요.

* 가장 어려웠던 개발 경험은 무엇인가요?

* 업무강도가 높은데 지속적인 근무가 가능한가요?

* 어떤 인재가 채용되어야 한다고 생각하나요?

* 그러한 점에서 본인에게 점수를 준다면 몇점을 줄수 있나요?

* 동료가 한명 필요하다면 어떤 스타일의 동료가 필요한가요?

* 왜 자료 구조가 필요하나요?

* 이직하는 이유는 무엇인가요?

* 성능 테스트 기법에 대해 설명해보세요.

* 당신이 회사에 필요한 이유를 설명해보세요.

* 왜 다른 사람이 아닌 나를 채용해야 하는지 설명해보세요.

* 리더가 편하냐? 팔로워가 편하냐?

* 어떤 회사를 원하나요?

* 마지막으로 하고 싶은 말은 무엇인가요?

posted by 귀염둥이채원 2018. 4. 3. 01:18

IT 직무 면접을 보다가 질문이 나왔던 내용을 정리해보았습니다.


# 자료구조, 알고리즘 질문

* 숫자 표시 문자열을 -> 숫자 변환하는 프로그램을 작성하시오.

* 중복되지 않는 수를 배열에서 출력하는 코드를 작성하라.

* 스택과 링크드리스트와 리스트의 차이점을 설명해 보세요.

* 이진 트리에서 max depth를 구하는 코드를 작성하라.

* 스택과 큐의 자료 구조의 질문 차이점 설명하세요. (손코딩)

*"정렬 알고리즘 알고있는거에 대해 모두 말해주세요. (손코딩)

* 자료구조, 리스트, 트리, 정렬 이것에 대해 아는대로 설명해보세요. (손코딩)

* 힙과 스택의 차이, heap 메모리 구조에 대해서 설명하세요.


# c언어 질문

* c언어의 프로세스 공간에 대해 설명하시오

* 포인터에 대해 설명하시오. 왜 쓰는가?

* double pointer를 사용하는 이유는 무엇인가요?

* 함수포인터를 사용 이유는 이유는 무엇인가요?


# 자바 질문

* 객체지향(OOP)에 대해 설명하시오.

* 오버로딩이란? 오버라이딩이란? 무엇인가?

* 자바의 4가지 접근제한자(default, public, private, protected)에 대해 설명하세요.

* 다형성/추상 클래스란 무엇인가?


# devops, CI/CD 질문

* Devops란 무엇인가?

* CI/CD에 대해 알고 있는가?


# IT 일반 질문

* call by value, call by address, call by reference에 대해서 설명하세요.

* TDD(Test Driven Development)란 무엇인가?

* 테스트 코드는 왜 작성하는가?

* "프로세스와 스레드의 차이?

  프로세스는 어떠한 영역을 공유하고, 스레드는 어떤 영역을 공유합니까?"

* vector와 array 차이에 대해 설명하세요.

* hashmap의 구조에 대해 설명하세요.

* OSI 7 계층에 대해 설명하시오.

* 64비트와 32비트의 차이점은 설명하시오.

* REST란 무엇인가요? 설계 경험은 있습니까?

* RDB/NoSQL 언제쓰나?

* docker란 무엇인가?

* 일시적으로 몰리는 트래픽은 어떻게 처리할수 있을까?